四精度值存储到文件

时间:2014-09-08 16:36:20

标签: c++ file store quad

我正在尝试运行振荡器并使用C ++中的Quad数学以高精度存储其傅立叶频谱值。我能够计算高精度值,但我无法将其作为四元精确值保存到文件中。

它给我一个错误:

 error: cannot convert âstd::complex<__complex__ __float128>â to â__complex128 {aka __complex__ __float128}â for argument â1â to â__float128 cabsq(__complex128)â

我的代码是:

//Fourier transform
int size_dft=size_org;
int size_dfty=2e5;
int increment=0;
int initial_size_dft=0;
double pi2 = -2.0 * M_PI;   
double angleTerm,cosineA,sineA;
int N_dft= 1e3;
double y_dft_deeper=0;
double invs = 1.0 / N_dft;
std::vector< std::complex< __complex128 > > output_seq(size_dft);
//std::complex<double> output_seq[size_dft];
for( int y = initial_size_dft;y < size_dfty;y++)
{
    output_seq[y] = 0;
 y_dft_deeper =2.4316321+(0.0000001*y);
if(y_dft_deeper<2.4318321)
{
int first_1 = 0;
increment = first_1;
for(unsigned int x =5786;x <end_dft;x++) 
    {
        angleTerm = pi2 * y_dft_deeper * x * invs;
        cosineA = cosq(angleTerm);
    sineA = sinq(angleTerm);
         std::real(output_seq[y]) += V2[x] * cosineA ;
        std::imag(output_seq[y]) += V2[x] * sineA;
    }
    output_seq[y] *= invs;
 cout<<"iteration = "<<y;//<<" DFT = "<<  output_seq[y]<<"\n";
y=y+increment;
}

//Writing data to file
ofstream myfile_dft;
myfile_dft.open ("aug_colpits_deep_1e8_first20000_quadmath.txt");

for (int i = initial_size_dft; i < size_dfty; i++)
{
if (i<2000)
{
increment=0;
 myfile_dft << cabsq(output_seq[i]) <<"\n";
i=i+increment;
}

}
  myfile_dft.close();

`

0 个答案:

没有答案