#ifndef GRID_MATH_REALITY_H #define GRID_MATH_REALITY_H namespace Grid { /////////////////////////////////////////////////////////////////////////////////////////////////// /////////////////////////////////////////// CONJ /////////////////////////////////////////// /////////////////////////////////////////////////////////////////////////////////////////////////// // Conj function for scalar, vector, matrix template inline iScalar conj(const iScalar&r) { iScalar ret; ret._internal = conj(r._internal); return ret; } template inline iVector conj(const iVector&r) { iVector ret; for(int i=0;i inline iMatrix conj(const iMatrix&r) { iMatrix ret; for(int i=0;i inline iScalar adj(const iScalar&r) { iScalar ret; ret._internal = adj(r._internal); return ret; } template inline iVector adj(const iVector&r) { iVector ret; for(int i=0;i inline iMatrix adj(const iMatrix &arg) { iMatrix ret; for(int c1=0;c1 inline auto real(const iScalar &z) -> iScalar { iScalar ret; ret._internal = real(z._internal); return ret; } template inline auto real(const iMatrix &z) -> iMatrix { iMatrix ret; for(int c1=0;c1 inline auto real(const iVector &z) -> iVector { iVector ret; for(int c1=0;c1 inline auto imag(const iScalar &z) -> iScalar { iScalar ret; ret._internal = imag(z._internal); return ret; } template inline auto imag(const iMatrix &z) -> iMatrix { iMatrix ret; for(int c1=0;c1 inline auto imag(const iVector &z) -> iVector { iVector ret; for(int c1=0;c1