4 constexpr
static const double DOUBLE_EQUAL_THRES = 1e-10;
6 typedef std::complex<double> cplxdb;
22 struct to_real<std::complex<T>> {
using type = T; };
25 struct to_cplx {
using type = std::complex<T>; };
27 struct to_cplx<std::complex<T>> {
using type = T; };
30 inline void join_re_im(T &pt,
const T &re,
const T &im) { pt = re; }
32 inline void join_re_im(std::complex<T> &pt,
const T &re,
const T &im) { pt = std::complex<T>{re, im}; }
35 inline T get_real(
const T& v) {
return v; }
37 inline T get_real(
const std::complex<T>& v) {
return v.real(); }
39 inline T get_imag(
const T& v) {
return T(0); }
41 inline T get_imag(
const std::complex<T>& v) {
return v.imag(); }
43 inline T get_conj(
const T& v) {
return v; }
45 inline std::complex<T> get_conj(
const std::complex<T>& v) {
return std::conj(v); }
47 template <typename T, typename T1, typename T2, typename TR = typename to_real<T>::type>
48 TR norm(
const T v[],
const T1 &n,
const T2 &power)
51 for (
int i = 0; i < n; i++)
52 norm += std::pow(std::fabs(v[i]), power);
53 return std::pow(norm, 1./power);
Definition: base_utility.h:11
Definition: base_utility.h:25
Definition: base_utility.h:20