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.
591 E T22, T4l, T2R, T1S, T1W, T1X, T2O, T3t, T2L, T3s, T1M, T1B, T1N, T2D, T3q;
592 E T2A, T3p, T1, Tt, Tu, T47, T25, T10, TV, T11, T2q, T3h, T2n, T3i, TQ;
593 E TF, TR, T2f, T3e, T2c, T3f;
595 E T1c, T1a, T1O, T1L, T1b, T1d, T1f, T1y, T1o, T1w, T1m, T1n, T1x, T1z, T1P;
596 E T1Q, T1R, T1E, T1H, T1I, T1Z, T21, T20;
598 E T19, T1K, T16, T1J;
601 E T17, T18, T14, T15;
611 T1a = KP559016994 * (T16 + T19);
612 T1O = FNMS(KP475528258, T1K, KP293892626 * T1J);
613 T1L = FMA(KP475528258, T1J, KP293892626 * T1K);
615 T1d = FMA(KP250000000, T1b, T1c);
618 E T1i, T1F, T1v, T1C, T1s, T1D, T1l, T1G;
620 E T1g, T1h, T1t, T1u;
632 E T1q, T1r, T1j, T1k;
643 T1o = KP559016994 * (T1i + T1l);
644 T1w = KP559016994 * (T1s - T1v);
646 T1n = FNMS(KP250000000, T1m, T1f);
648 T1z = FMA(KP250000000, T1x, T1y);
649 T1P = FNMS(KP475528258, T1G, KP293892626 * T1F);
650 T1Q = FMA(KP293892626, T1D, KP475528258 * T1C);
652 T1E = FNMS(KP475528258, T1D, KP293892626 * T1C);
653 T1H = FMA(KP475528258, T1F, KP293892626 * T1G);
659 T22 = KP371184290 * (T1Z + T20 + T21);
660 T4l = FMA(KP462201919, T1Z, KP155909426 * T20) - (KP618111346 * T21);
661 T2R = FMA(KP258006924, T1Z, KP102097497 * T21) - (KP360104421 * T20);
663 E T2I, T2F, T2G, T2J, T1T, T1V, T1U;
665 T2I = KP3_464101615 * (T1Q - T1P);
666 T2F = FNMS(KP4_000000000, T1O, KP2_000000000 * T1R);
670 T2G = KP1_732050807 * (T1T + T1U);
671 T2J = T1U + FNMA(KP2_000000000, T1V, T1T);
672 T1W = T1T - T1U - T1V;
673 T1X = FNMS(KP202100941, T1W, KP622681257 * T1S);
675 E T2M, T2N, T2H, T2K;
678 T2O = FNMS(KP183215435, T2N, KP029606561 * T2M);
679 T3t = FMA(KP183215435, T2M, KP029606561 * T2N);
682 T2L = FMA(KP015708004, T2H, KP184926209 * T2K);
683 T3s = FNMS(KP015708004, T2K, KP184926209 * T2H);
687 E T2y, T2v, T2x, T2u, T1e, T1A, T1p;
689 T2y = FMA(KP4_000000000, T1L, KP2_000000000 * T1I);
690 T2v = KP3_464101615 * (T1H + T1E);
694 T2x = KP1_732050807 * (T1A - T1p);
695 T2u = FMS(KP2_000000000, T1e, T1A) - T1p;
696 T1B = T1e + T1p + T1A;
697 T1N = FNMS(KP245522678, T1M, KP350296205 * T1B);
699 E T2B, T2C, T2w, T2z;
702 T2D = FNMS(KP183845747, T2C, KP025400502 * T2B);
703 T3q = FMA(KP183845747, T2B, KP025400502 * T2C);
706 T2A = FNMS(KP184517712, T2z, KP019941366 * T2w);
707 T3p = FMA(KP184517712, T2w, KP019941366 * T2z);
712 E T2, Tw, TZ, TI, T9, Tv, Tb, Tk, Tz, TD, Ti, Ty, Tr, TB, TW;
713 E TX, TY, TL, TO, TP, Ta, Ts, Tj;
729 Tw = KP559016994 * (T5 - T8);
730 TZ = FMA(KP475528258, TH, KP293892626 * TG);
731 TI = FNMS(KP293892626, TH, KP475528258 * TG);
733 Tv = FNMS(KP250000000, T9, T2);
736 E Te, TJ, Tq, TN, Tn, TM, Th, TK, TC;
761 Tz = KP559016994 * (Te - Th);
763 TD = KP559016994 * TC;
765 Ty = FNMS(KP250000000, Ti, Tb);
767 TB = FMA(KP250000000, Tr, Tk);
768 TW = FNMS(KP293892626, TK, KP475528258 * TJ);
769 TX = FMA(KP475528258, TM, KP293892626 * TN);
771 TL = FMA(KP293892626, TJ, KP475528258 * TK);
772 TO = FNMS(KP475528258, TN, KP293892626 * TM);
779 Tu = FNMS(KP066666666, Tt, T1);
780 T47 = FNMS(KP387067417, Ts, KP638094290 * Tj) - (KP251026872 * Ta);
781 T25 = FNMS(KP296373721, Ts, KP341720569 * Ta) - (KP045346848 * Tj);
783 E T2l, T2i, T2h, T2k, TS, TU, TT;
785 T2l = KP3_464101615 * (TX - TW);
786 T2i = FMA(KP4_000000000, TZ, KP2_000000000 * TY);
790 T2h = KP1_732050807 * (TT - TU);
791 T2k = FMS(KP2_000000000, TS, TU) - TT;
793 T11 = FNMS(KP427405661, T10, KP303494444 * TV);
795 E T2o, T2p, T2j, T2m;
798 T2q = FMA(KP160793728, T2o, KP092681288 * T2p);
799 T3h = FNMS(KP092681288, T2o, KP160793728 * T2p);
802 T2n = FMA(KP183333495, T2j, KP028866483 * T2m);
803 T3i = FNMS(KP183333495, T2m, KP028866483 * T2j);
807 E T2a, T27, T26, T29, Tx, TE, TA;
809 T2a = KP3_464101615 * (TO - TL);
810 T27 = FNMS(KP2_000000000, TP, KP4_000000000 * TI);
814 T26 = KP1_732050807 * (TA - TE);
815 T29 = FMS(KP2_000000000, Tx, TE) - TA;
817 TR = FMA(KP348438623, TF, KP255877341 * TQ);
819 E T2d, T2e, T28, T2b;
822 T2f = FMA(KP147857608, T2d, KP112172063 * T2e);
823 T3e = FNMS(KP112172063, T2d, KP147857608 * T2e);
826 T2c = FMA(KP000412259, T28, KP185591687 * T2b);
827 T3f = FNMS(KP000412259, T2b, KP185591687 * T28);
831 O[WS(os, 15)] = FMA(KP2_000000000, Tt, T1);
833 E T3k, T3Q, T4g, T4D, T4r, T4H, T3v, T3T, T2t, T3d, T3P, T4T, T4d, T4E, T4U;
834 E T4o, T4G, T2S, T3o, T3S, T24, T2U, T32, T3A, T3N, T3Z, T3K, T3Y, T39, T3B;
836 E T3g, T3j, T4e, T4f;
839 T3k = FMA(KP587785252, T3g, KP951056516 * T3j);
840 T3Q = FNMS(KP587785252, T3j, KP951056516 * T3g);
843 T4g = FMA(KP1_018073920, T4e, KP1_647278207 * T4f);
844 T4D = FNMS(KP1_647278207, T4e, KP1_018073920 * T4f);
847 E T4p, T4q, T3r, T3u;
850 T4r = FNMS(KP1_647278207, T4q, KP1_018073920 * T4p);
851 T4H = FMA(KP1_018073920, T4q, KP1_647278207 * T4p);
854 T3v = FMA(KP951056516, T3r, KP587785252 * T3u);
855 T3T = FNMS(KP587785252, T3r, KP951056516 * T3u);
858 E T2s, T3c, T2g, T2r, T3b;
862 T3c = KP559016994 * (T2r - T2g);
864 T3b = FNMS(KP250000000, T2s, T25);
869 E T4a, T4c, T48, T49, T4b;
873 T4c = KP968245836 * (T49 - T48);
874 T4T = FMA(KP1_732050807, T4a, T47);
875 T4b = FNMS(KP433012701, T4a, T47);
880 E T4k, T4m, T4i, T4j, T4n;
883 T4k = KP968245836 * (T4i - T4j);
885 T4U = FMA(KP1_732050807, T4m, T4l);
886 T4n = FNMS(KP433012701, T4m, T4l);
891 E T2Q, T3n, T2E, T2P, T3m;
895 T3n = KP559016994 * (T2P - T2E);
897 T3m = FMA(KP250000000, T2Q, T2R);
902 E T2X, T34, T13, T2W, T23, T33, T38, T3M, T31, T3J, T12, T1Y;
903 T2X = KP1_118033988 * (T11 - TR);
904 T34 = KP1_118033988 * (T1X - T1N);
906 T13 = FMA(KP2_000000000, T12, Tu);
907 T2W = FNMS(KP500000000, T12, Tu);
909 T23 = FMS(KP2_000000000, T1Y, T22);
910 T33 = FMA(KP500000000, T1Y, T22);
912 E T36, T37, T2Z, T30;
913 T36 = FMA(KP700592410, T1M, KP122761339 * T1B);
914 T37 = FMA(KP404201883, T1S, KP311340628 * T1W);
915 T38 = FMA(KP1_902113032, T36, KP1_175570504 * T37);
916 T3M = FNMS(KP1_175570504, T36, KP1_902113032 * T37);
917 T2Z = FNMS(KP127938670, TF, KP696877247 * TQ);
918 T30 = FMA(KP213702830, TV, KP606988889 * T10);
919 T31 = FMA(KP1_175570504, T2Z, KP1_902113032 * T30);
920 T3J = FNMS(KP1_175570504, T30, KP1_902113032 * T2Z);
923 E T2Y, T3L, T3I, T35;
941 E T4X, T2T, T4W, T4V, T2V, T4S;
945 O[WS(os, 30)] = FMA(KP2_000000000, T2T, T24);
946 O[WS(os, 28)] = T4W + T4X;
947 O[WS(os, 18)] = T4W - T4X;
951 O[0] = FMA(KP2_000000000, T2V, T2U);
952 O[WS(os, 2)] = T4S + T4V;
953 O[WS(os, 12)] = T4S - T4V;
955 E T3a, T3y, T3x, T3z, T4t, T4v, T46, T4u;
959 E T3l, T3w, T4h, T4s;
969 O[WS(os, 7)] = FMA(KP2_000000000, T3x, T3a);
970 O[WS(os, 23)] = FMA(KP2_000000000, T3z, T3y);
972 O[WS(os, 1)] = T46 - T4t;
973 O[WS(os, 24)] = T46 + T4t;
975 O[WS(os, 29)] = T4u - T4v;
976 O[WS(os, 6)] = T4u + T4v;
980 E T40, T44, T43, T45, T4P, T4R, T4M, T4Q;
984 E T41, T42, T4N, T4O;
994 O[WS(os, 11)] = FMA(KP2_000000000, T43, T40);
995 O[WS(os, 19)] = FMA(KP2_000000000, T45, T44);
997 O[WS(os, 22)] = T4M - T4P;
998 O[WS(os, 4)] = T4M + T4P;
1000 O[WS(os, 8)] = T4Q - T4R;
1001 O[WS(os, 26)] = T4Q + T4R;
1004 E T3O, T3W, T3V, T3X, T4J, T4L, T4C, T4K;
1008 E T3R, T3U, T4F, T4I;
1018 O[WS(os, 13)] = FMA(KP2_000000000, T3V, T3O);
1019 O[WS(os, 17)] = FMA(KP2_000000000, T3X, T3W);
1021 O[WS(os, 27)] = T4C - T4J;
1022 O[WS(os, 5)] = T4C + T4J;
1024 O[WS(os, 3)] = T4K - T4L;
1025 O[WS(os, 25)] = T4K + T4L;
1028 E T3C, T3G, T3F, T3H, T4z, T4B, T4w, T4A;
1032 E T3D, T3E, T4x, T4y;
1042 O[WS(os, 16)] = FMA(KP2_000000000, T3F, T3C);
1043 O[WS(os, 14)] = FMA(KP2_000000000, T3H, T3G);
1045 O[WS(os, 21)] = T4w - T4z;
1046 O[WS(os, 20)] = T4w + T4z;
1048 O[WS(os, 9)] = T4A - T4B;
1049 O[WS(os, 10)] = T4A + T4B;