Belle II Software  release-08-01-10
DiscreteCosineTransform_31points.cc File Reference

Generated by: ../../../genfft/gen_r2r.native -compact -variables 4 -pipeline-latency 4 -redft10 -n 31 -name e10_31 -include rdft/scalar/r2r.h Generated by: ../../../genfft/gen_r2r.native -compact -variables 4 -pipeline-latency 4 -redft01 -n 31 -name e01_31 -include rdft/scalar/r2r.h. More...

Go to the source code of this file.

Macros

#define K(x)   ((E) x)
 macro autogenerated by FFTW
 
#define DK(name, value)   const E name = K(value)
 macro autogenerated by FFTW
 
#define WS(x, y)   (y)
 macro autogenerated by FFTW
 
#define FMA(a, b, c)   (((a) * (b)) + (c))
 fused multiply add
 
#define FMS(a, b, c)   (((a) * (b)) - (c))
 fused multiply subtract
 
#define FNMA(a, b, c)   (- (((a) * (b)) + (c)))
 fused negative multiply add
 
#define FNMS(a, b, c)   ((c) - ((a) * (b)))
 fused negative multiply subtract
 

Typedefs

typedef double R
 typedef autogenerated by FFTW
 
typedef R E
 internal precision of FFTW codelets
 

Functions

void e10_31 (const R *I, R *O)
 DCT-II or "the" DCT transformation of 31-point signal This function contains 320 FP additions, 170 FP multiplications, (or, 229 additions, 79 multiplications, 91 fused multiply/add), 150 stack variables, 64 constants, and 62 memory accesses. More...
 
void e01_31 (const R *I, R *O)
 DCT-III or "the inverse" DCT transformation of 31-point signal This function contains 320 FP additions, 169 FP multiplications, (or, 228 additions, 77 multiplications, 92 fused multiply/add), 149 stack variables, 64 constants, and 62 memory accesses. More...
 

Detailed Description

Generated by: ../../../genfft/gen_r2r.native -compact -variables 4 -pipeline-latency 4 -redft10 -n 31 -name e10_31 -include rdft/scalar/r2r.h Generated by: ../../../genfft/gen_r2r.native -compact -variables 4 -pipeline-latency 4 -redft01 -n 31 -name e01_31 -include rdft/scalar/r2r.h.

This file was autogenerated by the FFTW package explicitly for 31-point DCT transformation. It is optimized version of the following functions:

DCT-II or "the" DCT transformation of 31-point signal void e10_31(const double <em>A, double *C){ for(int i=0;i<31;i++){ double c = 0; for(int j=0;j<31;j++) c += A[j]*cos(M_PI/31(j+0.5)*i); C[i] = 2*c; } }

and DCT-III or "the inverse" DCT transformation of 31-point signal void e01_31(const double <em>C, double *A){ for(int i=0;i<31;i++){ double a = 0.5*C[0]; for(int j=1;j<31;j++) a += C[j]*cos(M_PI/31*j(i+0.5)); A[i] = 2*a; } }

Those functions and the functions defined below give exactly the same results (up to floating point rounding errors).

Definition in file DiscreteCosineTransform_31points.cc.

Function Documentation

◆ e01_31()

void e01_31 ( const R I,
R O 
)

DCT-III or "the inverse" DCT transformation of 31-point signal This function contains 320 FP additions, 169 FP multiplications, (or, 228 additions, 77 multiplications, 92 fused multiply/add), 149 stack variables, 64 constants, and 62 memory accesses.

DCT-III or "the inverse" DCT transformation of 31-point signal.

Parameters
Iinput coefficients
Ooutput signal amplitudes

Definition at line 596 of file DiscreteCosineTransform_31points.cc.

597 {
598  E T22, T4l, T2R, T1S, T1W, T1X, T2O, T3t, T2L, T3s, T1M, T1B, T1N, T2D, T3q;
599  E T2A, T3p, T1, Tt, Tu, T47, T25, T10, TV, T11, T2q, T3h, T2n, T3i, TQ;
600  E TF, TR, T2f, T3e, T2c, T3f;
601  {
602  E T1c, T1a, T1O, T1L, T1b, T1d, T1f, T1y, T1o, T1w, T1m, T1n, T1x, T1z, T1P;
603  E T1Q, T1R, T1E, T1H, T1I, T1Z, T21, T20;
604  {
605  E T19, T1K, T16, T1J;
606  T1c = I[WS(is, 27)];
607  {
608  E T17, T18, T14, T15;
609  T17 = I[WS(is, 1)];
610  T18 = I[WS(is, 15)];
611  T19 = T17 + T18;
612  T1K = T18 - T17;
613  T14 = I[WS(is, 29)];
614  T15 = I[WS(is, 23)];
615  T16 = T14 - T15;
616  T1J = T14 + T15;
617  }
618  T1a = KP559016994 * (T16 + T19);
619  T1O = FNMS(KP475528258, T1K, KP293892626 * T1J);
620  T1L = FMA(KP475528258, T1J, KP293892626 * T1K);
621  T1b = T16 - T19;
622  T1d = FMA(KP250000000, T1b, T1c);
623  }
624  {
625  E T1i, T1F, T1v, T1C, T1s, T1D, T1l, T1G;
626  {
627  E T1g, T1h, T1t, T1u;
628  T1f = I[WS(is, 7)];
629  T1y = I[WS(is, 11)];
630  T1g = I[WS(is, 19)];
631  T1h = I[WS(is, 17)];
632  T1i = T1g + T1h;
633  T1F = T1g - T1h;
634  T1t = I[WS(is, 13)];
635  T1u = I[WS(is, 5)];
636  T1v = T1t - T1u;
637  T1C = T1t + T1u;
638  {
639  E T1q, T1r, T1j, T1k;
640  T1q = I[WS(is, 21)];
641  T1r = I[WS(is, 9)];
642  T1s = T1q - T1r;
643  T1D = T1q + T1r;
644  T1j = I[WS(is, 25)];
645  T1k = I[WS(is, 3)];
646  T1l = T1j + T1k;
647  T1G = T1k - T1j;
648  }
649  }
650  T1o = KP559016994 * (T1i + T1l);
651  T1w = KP559016994 * (T1s - T1v);
652  T1m = T1i - T1l;
653  T1n = FNMS(KP250000000, T1m, T1f);
654  T1x = T1s + T1v;
655  T1z = FMA(KP250000000, T1x, T1y);
656  T1P = FNMS(KP475528258, T1G, KP293892626 * T1F);
657  T1Q = FMA(KP293892626, T1D, KP475528258 * T1C);
658  T1R = T1P + T1Q;
659  T1E = FNMS(KP475528258, T1D, KP293892626 * T1C);
660  T1H = FMA(KP475528258, T1F, KP293892626 * T1G);
661  T1I = T1E - T1H;
662  }
663  T1Z = T1b - T1c;
664  T21 = T1x - T1y;
665  T20 = T1f + T1m;
666  T22 = KP371184290 * (T1Z + T20 + T21);
667  T4l = FMA(KP462201919, T1Z, KP155909426 * T20) - (KP618111346 * T21);
668  T2R = FMA(KP258006924, T1Z, KP102097497 * T21) - (KP360104421 * T20);
669  {
670  E T2I, T2F, T2G, T2J, T1T, T1V, T1U;
671  T1S = T1O + T1R;
672  T2I = KP3_464101615 * (T1Q - T1P);
673  T2F = FNMS(KP4_000000000, T1O, KP2_000000000 * T1R);
674  T1T = T1n - T1o;
675  T1V = T1a + T1d;
676  T1U = T1w + T1z;
677  T2G = KP1_732050807 * (T1T + T1U);
678  T2J = T1U + FNMA(KP2_000000000, T1V, T1T);
679  T1W = T1T - T1U - T1V;
680  T1X = FNMS(KP202100941, T1W, KP622681257 * T1S);
681  {
682  E T2M, T2N, T2H, T2K;
683  T2M = T2F + T2G;
684  T2N = T2J - T2I;
685  T2O = FNMS(KP183215435, T2N, KP029606561 * T2M);
686  T3t = FMA(KP183215435, T2M, KP029606561 * T2N);
687  T2H = T2F - T2G;
688  T2K = T2I + T2J;
689  T2L = FMA(KP015708004, T2H, KP184926209 * T2K);
690  T3s = FNMS(KP015708004, T2K, KP184926209 * T2H);
691  }
692  }
693  {
694  E T2y, T2v, T2x, T2u, T1e, T1A, T1p;
695  T1M = T1I - T1L;
696  T2y = FMA(KP4_000000000, T1L, KP2_000000000 * T1I);
697  T2v = KP3_464101615 * (T1H + T1E);
698  T1e = T1a - T1d;
699  T1A = T1w - T1z;
700  T1p = T1n + T1o;
701  T2x = KP1_732050807 * (T1A - T1p);
702  T2u = FMS(KP2_000000000, T1e, T1A) - T1p;
703  T1B = T1e + T1p + T1A;
704  T1N = FNMS(KP245522678, T1M, KP350296205 * T1B);
705  {
706  E T2B, T2C, T2w, T2z;
707  T2B = T2v + T2u;
708  T2C = T2y + T2x;
709  T2D = FNMS(KP183845747, T2C, KP025400502 * T2B);
710  T3q = FMA(KP183845747, T2B, KP025400502 * T2C);
711  T2w = T2u - T2v;
712  T2z = T2x - T2y;
713  T2A = FNMS(KP184517712, T2z, KP019941366 * T2w);
714  T3p = FMA(KP184517712, T2w, KP019941366 * T2z);
715  }
716  }
717  }
718  {
719  E T2, Tw, TZ, TI, T9, Tv, Tb, Tk, Tz, TD, Ti, Ty, Tr, TB, TW;
720  E TX, TY, TL, TO, TP, Ta, Ts, Tj;
721  T1 = I[0];
722  {
723  E T8, TG, T5, TH;
724  T2 = I[WS(is, 4)];
725  {
726  E T6, T7, T3, T4;
727  T6 = I[WS(is, 16)];
728  T7 = I[WS(is, 30)];
729  T8 = T6 - T7;
730  TG = T6 + T7;
731  T3 = I[WS(is, 8)];
732  T4 = I[WS(is, 2)];
733  T5 = T3 - T4;
734  TH = T3 + T4;
735  }
736  Tw = KP559016994 * (T5 - T8);
737  TZ = FMA(KP475528258, TH, KP293892626 * TG);
738  TI = FNMS(KP293892626, TH, KP475528258 * TG);
739  T9 = T5 + T8;
740  Tv = FNMS(KP250000000, T9, T2);
741  }
742  {
743  E Te, TJ, Tq, TN, Tn, TM, Th, TK, TC;
744  {
745  E Tc, Td, To, Tp;
746  Tb = I[WS(is, 24)];
747  Tk = I[WS(is, 20)];
748  Tc = I[WS(is, 12)];
749  Td = I[WS(is, 14)];
750  Te = Tc - Td;
751  TJ = Tc + Td;
752  To = I[WS(is, 26)];
753  Tp = I[WS(is, 18)];
754  Tq = To + Tp;
755  TN = Tp - To;
756  {
757  E Tl, Tm, Tf, Tg;
758  Tl = I[WS(is, 10)];
759  Tm = I[WS(is, 22)];
760  Tn = Tl + Tm;
761  TM = Tm - Tl;
762  Tf = I[WS(is, 28)];
763  Tg = I[WS(is, 6)];
764  Th = Tf - Tg;
765  TK = Tf + Tg;
766  }
767  }
768  Tz = KP559016994 * (Te - Th);
769  TC = Tq - Tn;
770  TD = KP559016994 * TC;
771  Ti = Te + Th;
772  Ty = FNMS(KP250000000, Ti, Tb);
773  Tr = Tn + Tq;
774  TB = FMA(KP250000000, Tr, Tk);
775  TW = FNMS(KP293892626, TK, KP475528258 * TJ);
776  TX = FMA(KP475528258, TM, KP293892626 * TN);
777  TY = TW + TX;
778  TL = FMA(KP293892626, TJ, KP475528258 * TK);
779  TO = FNMS(KP475528258, TN, KP293892626 * TM);
780  TP = TL + TO;
781  }
782  Ta = T2 + T9;
783  Ts = Tk - Tr;
784  Tj = Tb + Ti;
785  Tt = Ta + Tj + Ts;
786  Tu = FNMS(KP066666666, Tt, T1);
787  T47 = FNMS(KP387067417, Ts, KP638094290 * Tj) - (KP251026872 * Ta);
788  T25 = FNMS(KP296373721, Ts, KP341720569 * Ta) - (KP045346848 * Tj);
789  {
790  E T2l, T2i, T2h, T2k, TS, TU, TT;
791  T10 = TY - TZ;
792  T2l = KP3_464101615 * (TX - TW);
793  T2i = FMA(KP4_000000000, TZ, KP2_000000000 * TY);
794  TS = Tw + Tv;
795  TU = TB + TD;
796  TT = Tz + Ty;
797  T2h = KP1_732050807 * (TT - TU);
798  T2k = FMS(KP2_000000000, TS, TU) - TT;
799  TV = TS + TT + TU;
800  T11 = FNMS(KP427405661, T10, KP303494444 * TV);
801  {
802  E T2o, T2p, T2j, T2m;
803  T2o = T2h - T2i;
804  T2p = T2k + T2l;
805  T2q = FMA(KP160793728, T2o, KP092681288 * T2p);
806  T3h = FNMS(KP092681288, T2o, KP160793728 * T2p);
807  T2j = T2h + T2i;
808  T2m = T2k - T2l;
809  T2n = FMA(KP183333495, T2j, KP028866483 * T2m);
810  T3i = FNMS(KP183333495, T2m, KP028866483 * T2j);
811  }
812  }
813  {
814  E T2a, T27, T26, T29, Tx, TE, TA;
815  TQ = TI + TP;
816  T2a = KP3_464101615 * (TO - TL);
817  T27 = FNMS(KP2_000000000, TP, KP4_000000000 * TI);
818  Tx = Tv - Tw;
819  TE = TB - TD;
820  TA = Ty - Tz;
821  T26 = KP1_732050807 * (TA - TE);
822  T29 = FMS(KP2_000000000, Tx, TE) - TA;
823  TF = Tx + TA + TE;
824  TR = FMA(KP348438623, TF, KP255877341 * TQ);
825  {
826  E T2d, T2e, T28, T2b;
827  T2d = T26 + T27;
828  T2e = T29 + T2a;
829  T2f = FMA(KP147857608, T2d, KP112172063 * T2e);
830  T3e = FNMS(KP112172063, T2d, KP147857608 * T2e);
831  T28 = T26 - T27;
832  T2b = T29 - T2a;
833  T2c = FMA(KP000412259, T28, KP185591687 * T2b);
834  T3f = FNMS(KP000412259, T2b, KP185591687 * T28);
835  }
836  }
837  }
838  O[WS(os, 15)] = FMA(KP2_000000000, Tt, T1);
839  {
840  E T3k, T3Q, T4g, T4D, T4r, T4H, T3v, T3T, T2t, T3d, T3P, T4T, T4d, T4E, T4U;
841  E T4o, T4G, T2S, T3o, T3S, T24, T2U, T32, T3A, T3N, T3Z, T3K, T3Y, T39, T3B;
842  {
843  E T3g, T3j, T4e, T4f;
844  T3g = T3e - T3f;
845  T3j = T3h - T3i;
846  T3k = FMA(KP587785252, T3g, KP951056516 * T3j);
847  T3Q = FNMS(KP587785252, T3j, KP951056516 * T3g);
848  T4e = T2c + T2f;
849  T4f = T2n + T2q;
850  T4g = FMA(KP1_018073920, T4e, KP1_647278207 * T4f);
851  T4D = FNMS(KP1_647278207, T4e, KP1_018073920 * T4f);
852  }
853  {
854  E T4p, T4q, T3r, T3u;
855  T4p = T2L - T2O;
856  T4q = T2D - T2A;
857  T4r = FNMS(KP1_647278207, T4q, KP1_018073920 * T4p);
858  T4H = FMA(KP1_018073920, T4q, KP1_647278207 * T4p);
859  T3r = T3p - T3q;
860  T3u = T3s - T3t;
861  T3v = FMA(KP951056516, T3r, KP587785252 * T3u);
862  T3T = FNMS(KP587785252, T3r, KP951056516 * T3u);
863  }
864  {
865  E T2s, T3c, T2g, T2r, T3b;
866  T2g = T2c - T2f;
867  T2r = T2n - T2q;
868  T2s = T2g + T2r;
869  T3c = KP559016994 * (T2r - T2g);
870  T2t = T25 + T2s;
871  T3b = FNMS(KP250000000, T2s, T25);
872  T3d = T3b + T3c;
873  T3P = T3b - T3c;
874  }
875  {
876  E T4a, T4c, T48, T49, T4b;
877  T48 = T3f + T3e;
878  T49 = T3i + T3h;
879  T4a = T48 + T49;
880  T4c = KP968245836 * (T49 - T48);
881  T4T = FMA(KP1_732050807, T4a, T47);
882  T4b = FNMS(KP433012701, T4a, T47);
883  T4d = T4b + T4c;
884  T4E = T4b - T4c;
885  }
886  {
887  E T4k, T4m, T4i, T4j, T4n;
888  T4i = T3p + T3q;
889  T4j = T3s + T3t;
890  T4k = KP968245836 * (T4i - T4j);
891  T4m = T4i + T4j;
892  T4U = FMA(KP1_732050807, T4m, T4l);
893  T4n = FNMS(KP433012701, T4m, T4l);
894  T4o = T4k + T4n;
895  T4G = T4n - T4k;
896  }
897  {
898  E T2Q, T3n, T2E, T2P, T3m;
899  T2E = T2A + T2D;
900  T2P = T2L + T2O;
901  T2Q = T2E + T2P;
902  T3n = KP559016994 * (T2P - T2E);
903  T2S = T2Q - T2R;
904  T3m = FMA(KP250000000, T2Q, T2R);
905  T3o = T3m + T3n;
906  T3S = T3m - T3n;
907  }
908  {
909  E T2X, T34, T13, T2W, T23, T33, T38, T3M, T31, T3J, T12, T1Y;
910  T2X = KP1_118033988 * (T11 - TR);
911  T34 = KP1_118033988 * (T1X - T1N);
912  T12 = TR + T11;
913  T13 = FMA(KP2_000000000, T12, Tu);
914  T2W = FNMS(KP500000000, T12, Tu);
915  T1Y = T1N + T1X;
916  T23 = FMS(KP2_000000000, T1Y, T22);
917  T33 = FMA(KP500000000, T1Y, T22);
918  {
919  E T36, T37, T2Z, T30;
920  T36 = FMA(KP700592410, T1M, KP122761339 * T1B);
921  T37 = FMA(KP404201883, T1S, KP311340628 * T1W);
922  T38 = FMA(KP1_902113032, T36, KP1_175570504 * T37);
923  T3M = FNMS(KP1_175570504, T36, KP1_902113032 * T37);
924  T2Z = FNMS(KP127938670, TF, KP696877247 * TQ);
925  T30 = FMA(KP213702830, TV, KP606988889 * T10);
926  T31 = FMA(KP1_175570504, T2Z, KP1_902113032 * T30);
927  T3J = FNMS(KP1_175570504, T30, KP1_902113032 * T2Z);
928  }
929  {
930  E T2Y, T3L, T3I, T35;
931  T24 = T13 - T23;
932  T2U = T13 + T23;
933  T2Y = T2W + T2X;
934  T32 = T2Y - T31;
935  T3A = T2Y + T31;
936  T3L = T33 - T34;
937  T3N = T3L - T3M;
938  T3Z = T3L + T3M;
939  T3I = T2W - T2X;
940  T3K = T3I - T3J;
941  T3Y = T3I + T3J;
942  T35 = T33 + T34;
943  T39 = T35 - T38;
944  T3B = T35 + T38;
945  }
946  }
947  {
948  E T4X, T2T, T4W, T4V, T2V, T4S;
949  T4X = T4T + T4U;
950  T2T = T2t - T2S;
951  T4W = T24 - T2T;
952  O[WS(os, 30)] = FMA(KP2_000000000, T2T, T24);
953  O[WS(os, 28)] = T4W + T4X;
954  O[WS(os, 18)] = T4W - T4X;
955  T4V = T4T - T4U;
956  T2V = T2t + T2S;
957  T4S = T2U - T2V;
958  O[0] = FMA(KP2_000000000, T2V, T2U);
959  O[WS(os, 2)] = T4S + T4V;
960  O[WS(os, 12)] = T4S - T4V;
961  {
962  E T3a, T3y, T3x, T3z, T4t, T4v, T46, T4u;
963  T3a = T32 - T39;
964  T3y = T32 + T39;
965  {
966  E T3l, T3w, T4h, T4s;
967  T3l = T3d - T3k;
968  T3w = T3o - T3v;
969  T3x = T3l - T3w;
970  T3z = T3l + T3w;
971  T4h = T4d - T4g;
972  T4s = T4o - T4r;
973  T4t = T4h - T4s;
974  T4v = T4h + T4s;
975  }
976  O[WS(os, 7)] = FMA(KP2_000000000, T3x, T3a);
977  O[WS(os, 23)] = FMA(KP2_000000000, T3z, T3y);
978  T46 = T3a - T3x;
979  O[WS(os, 1)] = T46 - T4t;
980  O[WS(os, 24)] = T46 + T4t;
981  T4u = T3y - T3z;
982  O[WS(os, 29)] = T4u - T4v;
983  O[WS(os, 6)] = T4u + T4v;
984  }
985  }
986  {
987  E T40, T44, T43, T45, T4P, T4R, T4M, T4Q;
988  T40 = T3Y - T3Z;
989  T44 = T3Y + T3Z;
990  {
991  E T41, T42, T4N, T4O;
992  T41 = T3P + T3Q;
993  T42 = T3S + T3T;
994  T43 = T41 - T42;
995  T45 = T41 + T42;
996  T4N = T4E - T4D;
997  T4O = T4H + T4G;
998  T4P = T4N - T4O;
999  T4R = T4N + T4O;
1000  }
1001  O[WS(os, 11)] = FMA(KP2_000000000, T43, T40);
1002  O[WS(os, 19)] = FMA(KP2_000000000, T45, T44);
1003  T4M = T40 - T43;
1004  O[WS(os, 22)] = T4M - T4P;
1005  O[WS(os, 4)] = T4M + T4P;
1006  T4Q = T44 - T45;
1007  O[WS(os, 8)] = T4Q - T4R;
1008  O[WS(os, 26)] = T4Q + T4R;
1009  }
1010  {
1011  E T3O, T3W, T3V, T3X, T4J, T4L, T4C, T4K;
1012  T3O = T3K - T3N;
1013  T3W = T3K + T3N;
1014  {
1015  E T3R, T3U, T4F, T4I;
1016  T3R = T3P - T3Q;
1017  T3U = T3S - T3T;
1018  T3V = T3R - T3U;
1019  T3X = T3R + T3U;
1020  T4F = T4D + T4E;
1021  T4I = T4G - T4H;
1022  T4J = T4F - T4I;
1023  T4L = T4F + T4I;
1024  }
1025  O[WS(os, 13)] = FMA(KP2_000000000, T3V, T3O);
1026  O[WS(os, 17)] = FMA(KP2_000000000, T3X, T3W);
1027  T4C = T3O - T3V;
1028  O[WS(os, 27)] = T4C - T4J;
1029  O[WS(os, 5)] = T4C + T4J;
1030  T4K = T3W - T3X;
1031  O[WS(os, 3)] = T4K - T4L;
1032  O[WS(os, 25)] = T4K + T4L;
1033  }
1034  {
1035  E T3C, T3G, T3F, T3H, T4z, T4B, T4w, T4A;
1036  T3C = T3A - T3B;
1037  T3G = T3A + T3B;
1038  {
1039  E T3D, T3E, T4x, T4y;
1040  T3D = T3d + T3k;
1041  T3E = T3o + T3v;
1042  T3F = T3D - T3E;
1043  T3H = T3D + T3E;
1044  T4x = T4g + T4d;
1045  T4y = T4r + T4o;
1046  T4z = T4x - T4y;
1047  T4B = T4x + T4y;
1048  }
1049  O[WS(os, 16)] = FMA(KP2_000000000, T3F, T3C);
1050  O[WS(os, 14)] = FMA(KP2_000000000, T3H, T3G);
1051  T4w = T3C - T3F;
1052  O[WS(os, 21)] = T4w - T4z;
1053  O[WS(os, 20)] = T4w + T4z;
1054  T4A = T3G - T3H;
1055  O[WS(os, 9)] = T4A - T4B;
1056  O[WS(os, 10)] = T4A + T4B;
1057  }
1058  }
1059 }
R E
internal precision of FFTW codelets
#define FMA(a, b, c)
fused multiply add
#define FNMA(a, b, c)
fused negative multiply add
#define FMS(a, b, c)
fused multiply subtract
#define WS(x, y)
macro autogenerated by FFTW
#define FNMS(a, b, c)
fused negative multiply subtract

◆ e10_31()

void e10_31 ( const R I,
R O 
)

DCT-II or "the" DCT transformation of 31-point signal This function contains 320 FP additions, 170 FP multiplications, (or, 229 additions, 79 multiplications, 91 fused multiply/add), 150 stack variables, 64 constants, and 62 memory accesses.

DCT-II or "the" DCT transformation of 31-point signal.

Parameters
Iinput signal array of 31 values
Ooutput array with 31 DCT coefficients

Definition at line 124 of file DiscreteCosineTransform_31points.cc.