//-*-C++-*-//由autodoc自动生成//====~====头文件src/dctdst/dctdst.h:==========//余弦和正弦变换//-----SRCFILE=src/dctdst/cosrot.cc:-----void cos_rot(const double*x,double*y,ulong n);//辅助的//dcth()和dct4()的辅助例程//x和y可以相同//自反转。//-----SRCFILE=src/dctdst/dcth.cc:-----无效dcth(双*x,ulong ldn,双*tmp/*=nullptr*/);//转换wrt.基础://cos(2*Pi*0.5*k*(i+0.5)/n)*(k==0?1.0:sqrt(2))//其中k是基的指数//依据:// 0: [* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *] ( 0)// 1: [* * * * * * * * * * * * * * * * ] ( 1)// 2: [* * * * * * * * * * * * * * * *] ( 2)// 3: [* * * * * * * * * * * * * * * * ] ( 3)// 4: [* * * * * * * * * * * * * * * *] ( 4)// 5: [* * * * * * * * * * * * * * * * ] ( 5)// 6: [* * * * * * * * * * * * * * * *] ( 6)// 7: [* * * * * * * * * * * * * * * * ] ( 7)// 8: [* * * * * * * * * * * * * * * *] ( 8)// 9: [* * * * * * * * * * * * * * * * ] ( 9)// 10: [* * * * * * * * * * * * * * * *] (10)//11:[************](11)// 12: [* * * * * * * * * * * * * * * *] (12)// 13: [* * * * * * * * * * * * * * * * ] (13)// 14: [* * * * * * * * * * * * * * * *] (14)// 15: [* * * * * * * * * * * * * * * * ] (15)// 16: [* * * * * * * * * * * * * * * *] (16)// 17: [* * * * * * * * * * * * * * * * ] (17)// 18: [* * * * * * * * * * * * * * * *] (18)//19:[************](19)// 20: [* * * * * * * * * * * * * * * *] (20)// 21: [* * * * * * * * * * * * * * * * ] (21)// 22: [* * * * * * * * * * * * * * * *] (22)// 23: [* * * * * * * * * * * * * * * * ] (23)// 24: [* * * * * * * * * * * * * * * *] (24)// 25: [* * * * * * * * * * * * * * * * ] (25)// 26: [* * * * * * * * * * * * * * * *] (26)// 27: [* * * * * * * * * * * * * * * * ] (27)// 28: [* * * * * * * * * * * * * * * *] (28)// 29: [* * * * * * * * * * * * * * * * ] (29)// 30: [* * * * * * * * * * * * * * * *] (30)// 31: [* * * * * * * * * * * * * * * * ] (31)//H.Malvars算法:dct by fht//ldn:=数组长度的以2为底的对数//tmp:=(可选)临时空间指针//如果提供了(size-n)srcatch空间(tmp!=0)//然后使用稍微快一点的unzip rev版本无效idcth(双*x,ulong ldn,双*tmp/*=nullptr*/);//逆变换加权基:cos(k*(i+0.5)*PI/n)*(k==0?1.0:sqrt(2))//H.Malvars算法:idct by fht//如果提供了(size-n)srcatch空间(tmp!=0)//然后使用稍快的ziprev版本无效dcth_basis(双*f,ulong n,ulongk);//-----SRCFILE=src/dctdst/dctzapata.cc:-----静态空穴coseno(double*x,ulong-ldn);//dct_zapata()调用的辅助例程。//输入://x[k]=\sum_{m=0}^{n-1}{\prod_{i=0}^{ldn-1}{2^{b_i}\cos(b_i2^i\Theta_m)x(m)}}//其中n=2^ldn,\Theta_m=\pi(1+4m)/(2n)//并且b_i是k的比特#i//输出://x[k]=\sum_{m=0}^{n-1}{cos(\Theta_m)x(m)}无效dcth_zapata(双*x,ulong ldn,双*tmp/*=nullptr*/);//变换加权基数:cos(k*(i+0.5)*PI/n)*(k==0?1.0:sqrt(2))//F.Arguello,E.L.Zapata中描述的算法://“逐次加倍法上的快速余弦变换”//如果提供了(size-n)srcatch空间(tmp!=0)//然后使用稍微快一点的unzip rev()版本。//注意,本文中没有提到解压缩_rev()步骤!//-----SRCFILE=src/dctdst/dct4.cc:-----无效dct4(双*f,ulong ldn);//余弦变换与基有关//cos(2*Pi*0.25*(4*k+1)*i/n)//==cos(Pi*(2*k+0.5)*i/n)//其中k是基准指数//依据:// 0: [* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *] ( 0)// 1: [* * * * * * * * * * * * * * * * * * *] ( 2)// 2: [* * * * * * * * * * * * * * * * * *] ( 4)// 3: [* * * * * * * * * * * * * * * * *] ( 6)// 4: [* * * * * * * * * * * * * * * *] ( 8)// 5: [* * * * * * * * * * * * * * * * *] (10)// 6: [* * * * * * * * * * * * * * * *] (12)// 7: [* * * * * * * * * * * * * * * * *] (14)//8:[*******(16)// 9: [* * * * * * * * * * * * * * * * *] (18)// 10: [* * * * * * * * * * * * * * * *] (20)// 11: [* * * * * * * * * * * * * * * * *] (22)// 12: [* * * * * * * * * * * * * * * *] (24)// 13: [* * * * * * * * * * * * * * * * *] (26)// 14: [* * * * * * * * * * * * * * * * * *] (28)// 15: [* * * * * * * * * * * * * * * * *] (30)// 16: [* * * * * * * * * * * * * * * * ] (31)// 17: [* * * * * * * * * * * * * * * * * ] (29)// 18: [* * * * * * * * * * * * * * ] (27)// 19: [* * * * * * * * * * * * * * * * * * * ] (25)// 20: [* * * * * * * * * * * * * * * * ] (23)//21:[************](21)// 22: [* * * * * * * * * * * * * * * * ] (19)// 23: [* * * * * * * * * * * * * * * ] (17)// 24: [* * * * * * * * * * * * * * * * ] (15)// 25: [* * * * * * * * * * * * * * * ] (13)// 26: [* * * * * * * * * * * * * * * * ] (11)// 27: [* * * * * * * * * * * * * * * ] ( 9)// 28: [* * * * * * * * * * * * * * * * ] ( 7)//29:[************](5)// 30: [* * * * * * * * * * * * * * ] ( 3)// 31: [* * * * * * * * * * * ] ( 1)//所有基函数的平均值均为非零//因此,直流部分必须单独处理无效idct4(双*f,ulong ldn);//dct4()的逆运算// ... 这是一个转换wrt。基础//cos(Pi*k*(2*i+0.5)/n)//其中k是基准指数无效dct4_基础(双*f,ulong n,ulongk);//-----SRCFILE=src/dctdst/dst.cc:-----无效dst(双*f,ulong ldn,双*tmp/*=nullptr*/);//基数:sin(k*i*M_PI/n)//几乎自反转:dst(dst(f[]))=0.5*f[]//ldn:=数组长度的以2为底的对数//tmp:=(可选)指向暂存空间的指针//依据:// 0: [* ] ( 1)// 1: [ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *] ( 2)// 2: [ * * * * * * * * * * * * * * * ] ( 3)// 3: [ * * * * * * * * * * * * * * * * * * * *] ( 4)// 4: [ * * * * * * * * * * * * * * ] ( 5)// 5: [ * * * * * * * * * * * * * * * * * * *] ( 6)// 6: [ * * * * * * * * * * * * * * * ] ( 7)// 7: [ * * * * * * * * * * * * * * * *] ( 8)// 8: [ * * * * * * * * * * * * ] ( 9)// 9: [ * * * * * * * * * * * * * * *] (10)// 10: [ * * * * * * * * * * * * * * * ] (11)//11:[*******(12)// 12: [ * * * * * * * * * * * * * * ] (13)// 13: [ * * * * * * * * * * * * * * * * * * *] (14)// 14: [ * * * * * * * * * * * * * * * ] (15)// 15: [ * * * * * * * * * * * * * * * *] (16)// 16: [ * * * * * * * * ] (17)// 17: [ * * * * * * * * * * * * * * *] (18)// 18: [ * * * * * * * * * * * * * * * ] (19)//19:[************](20)// 20: [ * * * * * * * * * * * * * * ] (21)// 21: [ * * * * * * * * * * *] (22)// 22: [ * * * * * * * * * * * * * * * ] (23)// 23: [ * * * * * * * * * * * * * * * *] (24)// 24: [ * * * * * * * * * * * * ] (25)// 25: [ * * * * * * * * * * * * * * *] (26)// 26: [ * * * * * * * * * * * * * * * ] (27)// 27: [ * * * * * * * * * * * * * * * *] (28)// 28: [ * * * * * * * * * * * * * * ] (29)// 29: [ * * * * * * * * * * * * * * *] (30)// 30: [ * * * * * * * * * * * * * * * ] (31)// 31: [ * * * * * * * * * * * * * * * *] (32)无效dst_base(双*f,ulong n,ulongk);//-----SRCFILE=src/dctdst/dsh.cc:-----void dsth(双*x,ulong ldn,双*tmp/*=nullptr*/);//计算(离散)正弦变换(DST)//基sin((k+1)*(i+0.5)*M_PI/n)*sqrt(2)//ldn:=数组长度的以2为底的对数//tmp:=(可选)临时空间指针//依据:// 0: [* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *] ( 0)// 1: [* * * * * * * * * * * * * * * * ] ( 1)// 2: [* * * * * * * * * * * * * * * * * * * * * *] ( 2)// 3: [* * * * * * * * * * * * * * * * ] ( 3)// 4: [* * * * * * * * * * * * * * * * * *] ( 4)// 5: [* * * * * * * * * * * * * * * * ] ( 5)// 6: [* * * * * * * * * * * * * * * * * * * *] ( 6)// 7: [* * * * * * * * * * * * * * * * ] ( 7)// 8: [* * * * * * * * * * * * * * * * * * * *] ( 8)//9:[*******(9)// 10: [* * * * * * * * * * * * * * * * * *] (10)// 11: [* * * * * * * * * * * * * * * * ] (11)// 12: [* * * * * * * * * * * * * *] (12)// 13: [* * * * * * * * * * * * * * * * ] (13)// 14: [* * * * * * * * * * * * * * * *] (14)// 15: [* * * * * * * * * * * * * * * * ] (15)// 16: [* * * * * * * * * * * * * * * *] (16)//17:[************](17)// 18: [* * * * * * * * * * * * * * * * * *] (18)// 19: [* * * * * * * * * * * * * * * * ] (19)// 20: [* * * * * * * * * * * * * * * * * * * * * *] (20)// 21: [* * * * * * * * * * * * * * * * ] (21)// 22: [* * * * * * * * * * * * * * * *] (22)// 23: [* * * * * * * * * * * * * * * * ] (23)// 24: [* * * * * * * * * * * * * * * *] (24)// 25: [* * * * * * * * * * * * * * * * ] (25)// 26: [* * * * * * * * * * * * * * * * * *] (26)// 27: [* * * * * * * * * * * * * * * * ] (27)// 28: [* * * * * * * * * * * * * * * * * *] (28)// 29: [* * * * * * * * * * * * * * * * ] (29)// 30: [* * * * * * * * * * * * * * * *] (30)// 31: [* * * * * * * * * * * * * * * * ] (31)void idsth(双*x,ulong ldn,双*tmp/*=nullptr*/);//dsth()的逆运算//ldn:=数组长度的以2为底的对数//tmp:=(可选)临时空间指针无效dsth_basis(double*f,ulong n,ulongk);