Uni20
Asynchronous tensor and runtime library.
Loading...
Searching...
No Matches
Functions
uni20::linalg::backends::cpu Namespace Reference

Functions

template uni20::DenseMatrix< double > matrix_exponential (uni20::DenseMatrix< double > const &, double)
 
template uni20::DenseMatrix< uni20::complex< double > > matrix_exponential (uni20::DenseMatrix< double > const &, uni20::complex< double >)
 
template uni20::DenseMatrix< float > matrix_exponential (uni20::DenseMatrix< float > const &, float)
 
template uni20::DenseMatrix< uni20::complex< float > > matrix_exponential (uni20::DenseMatrix< float > const &, uni20::complex< float >)
 
template uni20::DenseMatrix< long double > matrix_exponential (uni20::DenseMatrix< long double > const &, long double)
 
template uni20::DenseMatrix< uni20::complex< long double > > matrix_exponential (uni20::DenseMatrix< long double > const &, uni20::complex< long double >)
 
template<uni20::RealOrComplex Scalar>
uni20::DenseMatrix< uni20::complex< uni20::make_real_t< Scalar > > > matrix_exponential (uni20::DenseMatrix< Scalar > const &matrix, uni20::complex< uni20::make_real_t< Scalar > > t)
 Compute a complex-coefficient matrix exponential, promoting real matrices to complex output.
 
template<uni20::RealOrComplex Scalar>
uni20::DenseMatrix< Scalar > matrix_exponential (uni20::DenseMatrix< Scalar > const &matrix, uni20::make_real_t< Scalar > t)
 Compute the matrix exponential using the adaptive scaling-and-squaring algorithm.
 
template uni20::DenseMatrix< uni20::complex< double > > matrix_exponential (uni20::DenseMatrix< uni20::complex< double > > const &, double)
 
template uni20::DenseMatrix< uni20::complex< double > > matrix_exponential (uni20::DenseMatrix< uni20::complex< double > > const &, uni20::complex< double >)
 
template uni20::DenseMatrix< uni20::complex< float > > matrix_exponential (uni20::DenseMatrix< uni20::complex< float > > const &, float)
 
template uni20::DenseMatrix< uni20::complex< float > > matrix_exponential (uni20::DenseMatrix< uni20::complex< float > > const &, uni20::complex< float >)
 
template uni20::DenseMatrix< uni20::complex< long double > > matrix_exponential (uni20::DenseMatrix< uni20::complex< long double > > const &, long double)
 
template uni20::DenseMatrix< uni20::complex< long double > > matrix_exponential (uni20::DenseMatrix< uni20::complex< long double > > const &, uni20::complex< long double >)
 

Function Documentation

◆ matrix_exponential() [1/14]

template uni20::DenseMatrix< double > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< double > const &  ,
double   
)

◆ matrix_exponential() [2/14]

template uni20::DenseMatrix< uni20::complex< double > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< double > const &  ,
uni20::complex< double >   
)

◆ matrix_exponential() [3/14]

template uni20::DenseMatrix< float > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< float > const &  ,
float   
)

◆ matrix_exponential() [4/14]

template uni20::DenseMatrix< uni20::complex< float > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< float > const &  ,
uni20::complex< float >   
)

◆ matrix_exponential() [5/14]

template uni20::DenseMatrix< long double > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< long double > const &  ,
long double   
)

◆ matrix_exponential() [6/14]

template uni20::DenseMatrix< uni20::complex< long double > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< long double > const &  ,
uni20::complex< long double >   
)

◆ matrix_exponential() [7/14]

template<uni20::RealOrComplex Scalar>
uni20::DenseMatrix< uni20::complex< uni20::make_real_t< Scalar > > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< Scalar > const &  matrix,
uni20::complex< uni20::make_real_t< Scalar > >  t 
)

Compute a complex-coefficient matrix exponential, promoting real matrices to complex output.

This overload evaluates \(\exp(t A)\) for complex t. If matrix is real, the result is promoted to a complex dense matrix. If matrix is already complex, the result remains complex.

Template Parameters
ScalarReal or complex matrix element type.
Parameters
matrixDense matrix whose exponential will be evaluated.
tComplex multiplier applied to matrix before exponentiation.
Returns
The complex matrix exponential of \(\exp(t \cdot \text{matrix})\).

◆ matrix_exponential() [8/14]

template<uni20::RealOrComplex Scalar>
uni20::DenseMatrix< Scalar > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< Scalar > const &  matrix,
uni20::make_real_t< Scalar >  t 
)

Compute the matrix exponential using the adaptive scaling-and-squaring algorithm.

Follows the Pad\'e-based scaling and squaring strategy of Higham (2005) and Al-Mohy & Higham (2011). The routine automatically selects between Pad\'e degrees {3, 5, 7, 9, 13} based on matrix norms.

Template Parameters
ScalarDense matrix element type; may be real or complex in single, double, or extended precision.
Parameters
matrixDense matrix whose exponential will be evaluated.
tScalar multiplier applied to matrix before exponentiation.
Returns
The matrix exponential of \(\exp(t \cdot \text{matrix})\).

◆ matrix_exponential() [9/14]

template uni20::DenseMatrix< uni20::complex< double > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< uni20::complex< double > > const &  ,
double   
)

◆ matrix_exponential() [10/14]

template uni20::DenseMatrix< uni20::complex< double > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< uni20::complex< double > > const &  ,
uni20::complex< double >   
)

◆ matrix_exponential() [11/14]

template uni20::DenseMatrix< uni20::complex< float > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< uni20::complex< float > > const &  ,
float   
)

◆ matrix_exponential() [12/14]

template uni20::DenseMatrix< uni20::complex< float > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< uni20::complex< float > > const &  ,
uni20::complex< float >   
)

◆ matrix_exponential() [13/14]

template uni20::DenseMatrix< uni20::complex< long double > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< uni20::complex< long double > > const &  ,
long double   
)

◆ matrix_exponential() [14/14]

template uni20::DenseMatrix< uni20::complex< long double > > uni20::linalg::backends::cpu::matrix_exponential ( uni20::DenseMatrix< uni20::complex< long double > > const &  ,
uni20::complex< long double >   
)