2022-06-29 10:25:32 +00:00
|
|
|
#pragma once
|
|
|
|
#include <armadillo>
|
|
|
|
#include "lasp_types.h"
|
|
|
|
#include <cmath>
|
|
|
|
|
|
|
|
#if LASP_DOUBLE_PRECISION == 1
|
|
|
|
#define c_real creal
|
|
|
|
#define c_imag cimag
|
|
|
|
#define d_abs fabs
|
|
|
|
#define c_abs cabs
|
|
|
|
#define c_conj conj
|
|
|
|
#define d_atan2 atan2
|
|
|
|
#define d_acos acos
|
|
|
|
#define d_sqrt sqrt
|
|
|
|
#define c_exp cexp
|
2022-10-06 19:13:21 +00:00
|
|
|
#define d_exp exp
|
2022-06-29 10:25:32 +00:00
|
|
|
#define d_sin sin
|
|
|
|
#define d_cos cos
|
|
|
|
#define d_pow pow
|
|
|
|
#define d_log10 log10
|
|
|
|
#define d_ln log
|
|
|
|
#define d_epsilon (DBL_EPSILON)
|
|
|
|
|
|
|
|
#else // LASP_DOUBLE_PRECISION not defined
|
|
|
|
#define c_conj conjf
|
|
|
|
#define c_real crealf
|
|
|
|
#define c_imag cimagf
|
|
|
|
#define d_abs fabsf
|
|
|
|
#define c_abs cabsf
|
|
|
|
#define d_atan2 atan2f
|
|
|
|
#define d_acos acosf
|
|
|
|
#define d_sqrt sqrtf
|
|
|
|
#define c_exp cexpf
|
2022-10-06 19:13:21 +00:00
|
|
|
#define d_exp expf
|
2022-06-29 10:25:32 +00:00
|
|
|
#define d_sin sinf
|
|
|
|
#define d_cos cosf
|
|
|
|
#define d_pow powf
|
|
|
|
#define d_log10 log10f
|
|
|
|
#define d_ln logf
|
|
|
|
#define d_epsilon (FLT_EPSILON)
|
|
|
|
|
|
|
|
#endif // LASP_DOUBLE_PRECISION
|
|
|
|
|
|
|
|
using vd = arma::Col<d>;
|
2022-10-04 07:27:27 +00:00
|
|
|
using vrd = arma::Row<d>;
|
2022-08-07 19:13:45 +00:00
|
|
|
using vc = arma::Col<c>;
|
2022-10-04 07:27:27 +00:00
|
|
|
using vrc = arma::Row<c>;
|
2022-06-29 10:25:32 +00:00
|
|
|
using dmat = arma::Mat<d>;
|
2022-08-07 19:13:45 +00:00
|
|
|
using cmat = arma::Mat<c>;
|
2022-10-11 12:50:44 +00:00
|
|
|
using ccube = arma::Cube<c>;
|
|
|
|
using dcube = arma::Cube<d>;
|
2022-06-29 10:25:32 +00:00
|
|
|
|
|
|
|
const d number_pi = arma::datum::pi;
|