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.
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;
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;
605 E T19, T1K, T16, T1J;
608 E T17, T18, T14, T15;
618 T1a = KP559016994 * (T16 + T19);
619 T1O =
FNMS(KP475528258, T1K, KP293892626 * T1J);
620 T1L =
FMA(KP475528258, T1J, KP293892626 * T1K);
622 T1d =
FMA(KP250000000, T1b, T1c);
625 E T1i, T1F, T1v, T1C, T1s, T1D, T1l, T1G;
627 E T1g, T1h, T1t, T1u;
639 E T1q, T1r, T1j, T1k;
650 T1o = KP559016994 * (T1i + T1l);
651 T1w = KP559016994 * (T1s - T1v);
653 T1n =
FNMS(KP250000000, T1m, T1f);
655 T1z =
FMA(KP250000000, T1x, T1y);
656 T1P =
FNMS(KP475528258, T1G, KP293892626 * T1F);
657 T1Q =
FMA(KP293892626, T1D, KP475528258 * T1C);
659 T1E =
FNMS(KP475528258, T1D, KP293892626 * T1C);
660 T1H =
FMA(KP475528258, T1F, KP293892626 * T1G);
666 T22 = KP371184290 * (T1Z + T20 + T21);
667 T4l =
FMA(KP462201919, T1Z, KP155909426 * T20) - (KP618111346 * T21);
668 T2R =
FMA(KP258006924, T1Z, KP102097497 * T21) - (KP360104421 * T20);
670 E T2I, T2F, T2G, T2J, T1T, T1V, T1U;
672 T2I = KP3_464101615 * (T1Q - T1P);
673 T2F =
FNMS(KP4_000000000, T1O, KP2_000000000 * T1R);
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);
682 E T2M, T2N, T2H, T2K;
685 T2O =
FNMS(KP183215435, T2N, KP029606561 * T2M);
686 T3t =
FMA(KP183215435, T2M, KP029606561 * T2N);
689 T2L =
FMA(KP015708004, T2H, KP184926209 * T2K);
690 T3s =
FNMS(KP015708004, T2K, KP184926209 * T2H);
694 E T2y, T2v, T2x, T2u, T1e, T1A, T1p;
696 T2y =
FMA(KP4_000000000, T1L, KP2_000000000 * T1I);
697 T2v = KP3_464101615 * (T1H + T1E);
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);
706 E T2B, T2C, T2w, T2z;
709 T2D =
FNMS(KP183845747, T2C, KP025400502 * T2B);
710 T3q =
FMA(KP183845747, T2B, KP025400502 * T2C);
713 T2A =
FNMS(KP184517712, T2z, KP019941366 * T2w);
714 T3p =
FMA(KP184517712, T2w, KP019941366 * T2z);
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;
736 Tw = KP559016994 * (T5 - T8);
737 TZ =
FMA(KP475528258, TH, KP293892626 * TG);
738 TI =
FNMS(KP293892626, TH, KP475528258 * TG);
740 Tv =
FNMS(KP250000000, T9, T2);
743 E Te, TJ, Tq, TN, Tn, TM, Th, TK, TC;
768 Tz = KP559016994 * (Te - Th);
770 TD = KP559016994 * TC;
772 Ty =
FNMS(KP250000000, Ti, Tb);
774 TB =
FMA(KP250000000, Tr, Tk);
775 TW =
FNMS(KP293892626, TK, KP475528258 * TJ);
776 TX =
FMA(KP475528258, TM, KP293892626 * TN);
778 TL =
FMA(KP293892626, TJ, KP475528258 * TK);
779 TO =
FNMS(KP475528258, TN, KP293892626 * TM);
786 Tu =
FNMS(KP066666666, Tt, T1);
787 T47 =
FNMS(KP387067417, Ts, KP638094290 * Tj) - (KP251026872 * Ta);
788 T25 =
FNMS(KP296373721, Ts, KP341720569 * Ta) - (KP045346848 * Tj);
790 E T2l, T2i, T2h, T2k, TS, TU, TT;
792 T2l = KP3_464101615 * (TX - TW);
793 T2i =
FMA(KP4_000000000, TZ, KP2_000000000 * TY);
797 T2h = KP1_732050807 * (TT - TU);
798 T2k =
FMS(KP2_000000000, TS, TU) - TT;
800 T11 =
FNMS(KP427405661, T10, KP303494444 * TV);
802 E T2o, T2p, T2j, T2m;
805 T2q =
FMA(KP160793728, T2o, KP092681288 * T2p);
806 T3h =
FNMS(KP092681288, T2o, KP160793728 * T2p);
809 T2n =
FMA(KP183333495, T2j, KP028866483 * T2m);
810 T3i =
FNMS(KP183333495, T2m, KP028866483 * T2j);
814 E T2a, T27, T26, T29, Tx, TE, TA;
816 T2a = KP3_464101615 * (TO - TL);
817 T27 =
FNMS(KP2_000000000, TP, KP4_000000000 * TI);
821 T26 = KP1_732050807 * (TA - TE);
822 T29 =
FMS(KP2_000000000, Tx, TE) - TA;
824 TR =
FMA(KP348438623, TF, KP255877341 * TQ);
826 E T2d, T2e, T28, T2b;
829 T2f =
FMA(KP147857608, T2d, KP112172063 * T2e);
830 T3e =
FNMS(KP112172063, T2d, KP147857608 * T2e);
833 T2c =
FMA(KP000412259, T28, KP185591687 * T2b);
834 T3f =
FNMS(KP000412259, T2b, KP185591687 * T28);
838 O[
WS(os, 15)] =
FMA(KP2_000000000, Tt, T1);
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;
843 E T3g, T3j, T4e, T4f;
846 T3k =
FMA(KP587785252, T3g, KP951056516 * T3j);
847 T3Q =
FNMS(KP587785252, T3j, KP951056516 * T3g);
850 T4g =
FMA(KP1_018073920, T4e, KP1_647278207 * T4f);
851 T4D =
FNMS(KP1_647278207, T4e, KP1_018073920 * T4f);
854 E T4p, T4q, T3r, T3u;
857 T4r =
FNMS(KP1_647278207, T4q, KP1_018073920 * T4p);
858 T4H =
FMA(KP1_018073920, T4q, KP1_647278207 * T4p);
861 T3v =
FMA(KP951056516, T3r, KP587785252 * T3u);
862 T3T =
FNMS(KP587785252, T3r, KP951056516 * T3u);
865 E T2s, T3c, T2g, T2r, T3b;
869 T3c = KP559016994 * (T2r - T2g);
871 T3b =
FNMS(KP250000000, T2s, T25);
876 E T4a, T4c, T48, T49, T4b;
880 T4c = KP968245836 * (T49 - T48);
881 T4T =
FMA(KP1_732050807, T4a, T47);
882 T4b =
FNMS(KP433012701, T4a, T47);
887 E T4k, T4m, T4i, T4j, T4n;
890 T4k = KP968245836 * (T4i - T4j);
892 T4U =
FMA(KP1_732050807, T4m, T4l);
893 T4n =
FNMS(KP433012701, T4m, T4l);
898 E T2Q, T3n, T2E, T2P, T3m;
902 T3n = KP559016994 * (T2P - T2E);
904 T3m =
FMA(KP250000000, T2Q, T2R);
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);
913 T13 =
FMA(KP2_000000000, T12, Tu);
914 T2W =
FNMS(KP500000000, T12, Tu);
916 T23 =
FMS(KP2_000000000, T1Y, T22);
917 T33 =
FMA(KP500000000, T1Y, T22);
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);
930 E T2Y, T3L, T3I, T35;
948 E T4X, T2T, T4W, T4V, T2V, T4S;
952 O[
WS(os, 30)] =
FMA(KP2_000000000, T2T, T24);
953 O[
WS(os, 28)] = T4W + T4X;
954 O[
WS(os, 18)] = T4W - T4X;
958 O[0] =
FMA(KP2_000000000, T2V, T2U);
959 O[
WS(os, 2)] = T4S + T4V;
960 O[
WS(os, 12)] = T4S - T4V;
962 E T3a, T3y, T3x, T3z, T4t, T4v, T46, T4u;
966 E T3l, T3w, T4h, T4s;
976 O[
WS(os, 7)] =
FMA(KP2_000000000, T3x, T3a);
977 O[
WS(os, 23)] =
FMA(KP2_000000000, T3z, T3y);
979 O[
WS(os, 1)] = T46 - T4t;
980 O[
WS(os, 24)] = T46 + T4t;
982 O[
WS(os, 29)] = T4u - T4v;
983 O[
WS(os, 6)] = T4u + T4v;
987 E T40, T44, T43, T45, T4P, T4R, T4M, T4Q;
991 E T41, T42, T4N, T4O;
1001 O[
WS(os, 11)] =
FMA(KP2_000000000, T43, T40);
1002 O[
WS(os, 19)] =
FMA(KP2_000000000, T45, T44);
1004 O[
WS(os, 22)] = T4M - T4P;
1005 O[
WS(os, 4)] = T4M + T4P;
1007 O[
WS(os, 8)] = T4Q - T4R;
1008 O[
WS(os, 26)] = T4Q + T4R;
1011 E T3O, T3W, T3V, T3X, T4J, T4L, T4C, T4K;
1015 E T3R, T3U, T4F, T4I;
1025 O[
WS(os, 13)] =
FMA(KP2_000000000, T3V, T3O);
1026 O[
WS(os, 17)] =
FMA(KP2_000000000, T3X, T3W);
1028 O[
WS(os, 27)] = T4C - T4J;
1029 O[
WS(os, 5)] = T4C + T4J;
1031 O[
WS(os, 3)] = T4K - T4L;
1032 O[
WS(os, 25)] = T4K + T4L;
1035 E T3C, T3G, T3F, T3H, T4z, T4B, T4w, T4A;
1039 E T3D, T3E, T4x, T4y;
1049 O[
WS(os, 16)] =
FMA(KP2_000000000, T3F, T3C);
1050 O[
WS(os, 14)] =
FMA(KP2_000000000, T3H, T3G);
1052 O[
WS(os, 21)] = T4w - T4z;
1053 O[
WS(os, 20)] = T4w + T4z;
1055 O[
WS(os, 9)] = T4A - T4B;
1056 O[
WS(os, 10)] = T4A + T4B;