__complex128 cexpiq (__float128 x) { __complex128 v; COMPLEX_ASSIGN (v, cosq (x), sinq (x)); return v; }
void r_perm_matrix_complex_128(__complex128 r[MATRIX_SIZE][MATRIX_SIZE]){ int i,j; __float128 nn = MATRIX_SIZE; std::random_device rd; std::mt19937 mt(rd()); if(! init_for_perm_flg){ init_for_perm(); } for(i=0; i<MATRIX_SIZE; i++){ for(j=0; j<MATRIX_SIZE; j++){ COMPLEX_ASSIGN(r[i][j], 0.0Q, 0.0Q); } } std::vector<int> perm(for_perm,for_perm+MATRIX_SIZE); for(i=0; i<MATRIX_SIZE; i++){ __float128 rval = random_float_128(M_PIq); int idx = mt() % (MATRIX_SIZE - i); if(rval < 0.0Q) rval = -rval; COMPLEX_ASSIGN(r[i][perm[idx]], cosq(-2.0Q*M_PIq*rval/nn), sinq(-2.0Q*M_PIq*rval/nn)); perm.erase(perm.begin()+idx); } }
__complex128 ccoshq (__complex128 a) { __float128 r = REALPART (a), i = IMAGPART (a); __complex128 v; COMPLEX_ASSIGN (v, coshq (r) * cosq (i), sinhq (r) * sinq (i)); return v; }
void dft_matrix_complex_double(std::complex<double> f[MATRIX_SIZE][MATRIX_SIZE]){ int i, j; double nn = MATRIX_SIZE; for(i=0; i<MATRIX_SIZE; i++){ for(j=0; j<MATRIX_SIZE; j++){ f[i][j] = std::complex<double>(cosq(-2.0*M_PI*i*j/nn), sin(-2.0*M_PI*i*j/nn)); } } }
void r_matrix_complex_128(__complex128 r[MATRIX_SIZE][MATRIX_SIZE]){ int i; __float128 nn = MATRIX_SIZE; for(i=0; i<MATRIX_SIZE; i++){ __float128 rval = random_float_128(M_PIq); if(rval < 0.0Q) rval = -rval; COMPLEX_ASSIGN(r[i][i], cosq(-2.0Q*M_PIq*rval/nn), sinq(-2.0Q*M_PIq*rval/nn)); } }
void dht_matrix(__float128 f[MATRIX_SIZE][MATRIX_SIZE]){ int i, j; __float128 nn = MATRIX_SIZE; for(i=0; i<MATRIX_SIZE; i++){ for(j=0; j<MATRIX_SIZE; j++){ __float128 ii = i; __float128 jj = j; f[i][j] = cosq(2.0Q*M_PIq*ii*jj/nn) + sinq(2.0Q*M_PIq*ii*jj/nn); } } }
void dft_matrix_complex_128(__complex128 f[MATRIX_SIZE][MATRIX_SIZE]){ int i, j; __float128 nn = MATRIX_SIZE; for(i=0; i<MATRIX_SIZE; i++){ for(j=0; j<MATRIX_SIZE; j++){ __float128 ii = i; __float128 jj = j; COMPLEX_ASSIGN(f[i][j], cosq(-2.0Q*M_PIq*ii*jj/nn), sinq(-2.0Q*M_PIq*ii*jj/nn)); } } }
__complex128 cexpq (__complex128 z) { __float128 a, b; __complex128 v; a = REALPART (z); b = IMAGPART (z); COMPLEX_ASSIGN (v, cosq (b), sinq (b)); return expq (a) * v; }
inline std::complex< __float128 > pow( std::complex< __float128> x , __float128 y ) { __float128 r = pow( abs(x) , y ); __float128 phi = atanq( x.imag() / x.real() ); return std::complex< __float128 >( r * cosq( y * phi ) , r * sinq( y * phi ) ); }
inline void eval_cos(float128_backend& result, const float128_backend& arg) { result.value() = cosq(arg.value()); }
__float128 f2(__float128 x, __float128 y) { return cosq(x)*cosq(y); }
//2D phase space functions in L1 __float128 f1(__float128 x, __float128 y) { return cosq(x+y);}
inline Quad Cos( const Quad& alpha ) { return cosq(alpha); }
inline Complex<Quad> ComplexFromPolar( const Quad& r, const Quad& theta ) { const Quad realPart = r*cosq(theta); const Quad imagPart = r*sinq(theta); return Complex<Quad>(realPart,imagPart); }
__float128 h1(__float128 x, __float128 y) {return cosq(base(x,y));} //real part