Skip to content

hlouzada/expokit

 
 

Repository files navigation

Expokit (C++ translation)

Expokit is a numerical library that calculates the matrix exponential or it's operation on a vector.

This project is a manual translation of some expokit subroutines to C++. With a trivial modification, one can change them to C as well.

This project uses some utilities in the SLISC library, mainly for custom type definition and a COO Sparse matrix class that supports matrix-vector multiplication.

Translation Details

  • The original code it translated as directly as possible except the following changes.
  • Since C++ arrays are 0-based, some variables always have value that is -1 than it's fortran counterpart. Note that this include some function arguments. See the comments before each function for a complete list.
  • since goto statement is deprecated, it's replaced with other structures.
  • BLAS and LAPACK subroutines are replaced with corresponding CBLAS and LAPACKE from Intel's MKL library (currently free). With minor modifications, other CBLAS and LAPACKE may be used.

Tests

  • Hermitian matrices up to 40-by-40 are tested with ZGEXPV and ZHEXPV, with results 2-3 digits less than machine precision.

About

manual translation of Expokit from Fortran to C++

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • Fortran 82.5%
  • C++ 12.4%
  • MATLAB 4.2%
  • Other 0.9%