static void r2cb_7(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP2_000000000, +2.000000000000000000000000000000000000000000000); DK(KP1_801937735, +1.801937735804838252472204639014890102331838324); DK(KP445041867, +0.445041867912628808577805128993589518932711138); DK(KP1_246979603, +1.246979603717467061050009768008479621264549462); DK(KP867767478, +0.867767478235116240951536665696717509219981456); DK(KP1_949855824, +1.949855824363647214036263365987862434465571601); DK(KP1_563662964, +1.563662964936059617416889053348115500464669037); INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ovs, R1 = R1 + ovs, Cr = Cr + ivs, Ci = Ci + ivs, MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(csr), MAKE_VOLATILE_STRIDE(csi)) { E T9, Td, Tb, T1, T4, T2, T3, T5, Tc, Ta, T6, T8, T7; T6 = Ci[WS(csi, 2)]; T8 = Ci[WS(csi, 1)]; T7 = Ci[WS(csi, 3)]; T9 = FNMS(KP1_949855824, T7, KP1_563662964 * T6) - (KP867767478 * T8); Td = FMA(KP867767478, T6, KP1_563662964 * T7) - (KP1_949855824 * T8); Tb = FMA(KP1_563662964, T8, KP1_949855824 * T6) + (KP867767478 * T7); T1 = Cr[0]; T4 = Cr[WS(csr, 3)]; T2 = Cr[WS(csr, 1)]; T3 = Cr[WS(csr, 2)]; T5 = FMA(KP1_246979603, T3, T1) + FNMA(KP445041867, T4, KP1_801937735 * T2); Tc = FMA(KP1_246979603, T4, T1) + FNMA(KP1_801937735, T3, KP445041867 * T2); Ta = FMA(KP1_246979603, T2, T1) + FNMA(KP1_801937735, T4, KP445041867 * T3); R0[WS(rs, 2)] = T5 - T9; R1[WS(rs, 1)] = T5 + T9; R0[WS(rs, 1)] = Tc + Td; R1[WS(rs, 2)] = Tc - Td; R0[WS(rs, 3)] = Ta + Tb; R1[0] = Ta - Tb; R0[0] = FMA(KP2_000000000, T2 + T3 + T4, T1); } }
static void r2cb_11(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP2_000000000, +2.000000000000000000000000000000000000000000000); DK(KP1_918985947, +1.918985947228994779780736114132655398124909697); DK(KP1_309721467, +1.309721467890570128113850144932587106367582399); DK(KP284629676, +0.284629676546570280887585337232739337582102722); DK(KP830830026, +0.830830026003772851058548298459246407048009821); DK(KP1_682507065, +1.682507065662362337723623297838735435026584997); DK(KP563465113, +0.563465113682859395422835830693233798071555798); DK(KP1_511499148, +1.511499148708516567548071687944688840359434890); DK(KP1_979642883, +1.979642883761865464752184075553437574753038744); DK(KP1_819263990, +1.819263990709036742823430766158056920120482102); DK(KP1_081281634, +1.081281634911195164215271908637383390863541216); { INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ovs, R1 = R1 + ovs, Cr = Cr + ivs, Ci = Ci + ivs, MAKE_VOLATILE_STRIDE(44, rs), MAKE_VOLATILE_STRIDE(44, csr), MAKE_VOLATILE_STRIDE(44, csi)) { E Td, Tl, Tf, Th, Tj, T1, T2, T6, T5, T4, T3, T7, Tk, Te, Tg; E Ti; { E T8, Tc, T9, Ta, Tb; T8 = Ci[WS(csi, 2)]; Tc = Ci[WS(csi, 1)]; T9 = Ci[WS(csi, 4)]; Ta = Ci[WS(csi, 5)]; Tb = Ci[WS(csi, 3)]; Td = FMA(KP1_081281634, T8, KP1_819263990 * T9) + FNMA(KP1_979642883, Ta, KP1_511499148 * Tb) - (KP563465113 * Tc); Tl = FMA(KP1_979642883, T8, KP1_819263990 * Ta) + FNMA(KP563465113, T9, KP1_081281634 * Tb) - (KP1_511499148 * Tc); Tf = FMA(KP563465113, T8, KP1_819263990 * Tb) + FNMA(KP1_511499148, Ta, KP1_081281634 * T9) - (KP1_979642883 * Tc); Th = FMA(KP1_081281634, Tc, KP1_819263990 * T8) + FMA(KP1_979642883, Tb, KP1_511499148 * T9) + (KP563465113 * Ta); Tj = FMA(KP563465113, Tb, KP1_979642883 * T9) + FNMS(KP1_511499148, T8, KP1_081281634 * Ta) - (KP1_819263990 * Tc); } T1 = Cr[0]; T2 = Cr[WS(csr, 1)]; T6 = Cr[WS(csr, 5)]; T5 = Cr[WS(csr, 4)]; T4 = Cr[WS(csr, 3)]; T3 = Cr[WS(csr, 2)]; T7 = FMA(KP1_682507065, T3, T1) + FNMS(KP284629676, T6, KP830830026 * T5) + FNMA(KP1_309721467, T4, KP1_918985947 * T2); Tk = FMA(KP1_682507065, T4, T1) + FNMS(KP1_918985947, T5, KP830830026 * T6) + FNMA(KP284629676, T3, KP1_309721467 * T2); Te = FMA(KP830830026, T4, T1) + FNMS(KP1_309721467, T6, KP1_682507065 * T5) + FNMA(KP1_918985947, T3, KP284629676 * T2); Tg = FMA(KP1_682507065, T2, T1) + FNMS(KP1_918985947, T6, KP830830026 * T3) + FNMA(KP1_309721467, T5, KP284629676 * T4); Ti = FMA(KP830830026, T2, T1) + FNMS(KP284629676, T5, KP1_682507065 * T6) + FNMA(KP1_918985947, T4, KP1_309721467 * T3); R0[WS(rs, 3)] = T7 - Td; R0[WS(rs, 4)] = Te - Tf; R0[WS(rs, 2)] = Tk + Tl; R1[WS(rs, 2)] = T7 + Td; R1[WS(rs, 3)] = Tk - Tl; R0[WS(rs, 1)] = Ti + Tj; R1[WS(rs, 1)] = Te + Tf; R0[WS(rs, 5)] = Tg + Th; R1[0] = Tg - Th; R1[WS(rs, 4)] = Ti - Tj; R0[0] = FMA(KP2_000000000, T2 + T3 + T4 + T5 + T6, T1); } } }
static void hc2r_11(const R *ri, const R *ii, R *O, stride ris, stride iis, stride os, int v, int ivs, int ovs) { DK(KP2_000000000, +2.000000000000000000000000000000000000000000000); DK(KP1_918985947, +1.918985947228994779780736114132655398124909697); DK(KP1_309721467, +1.309721467890570128113850144932587106367582399); DK(KP284629676, +0.284629676546570280887585337232739337582102722); DK(KP830830026, +0.830830026003772851058548298459246407048009821); DK(KP1_682507065, +1.682507065662362337723623297838735435026584997); DK(KP563465113, +0.563465113682859395422835830693233798071555798); DK(KP1_511499148, +1.511499148708516567548071687944688840359434890); DK(KP1_979642883, +1.979642883761865464752184075553437574753038744); DK(KP1_819263990, +1.819263990709036742823430766158056920120482102); DK(KP1_081281634, +1.081281634911195164215271908637383390863541216); int i; for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, O = O + ovs) { E Td, Tl, Tf, Th, Tj, T1, T2, T6, T5, T4, T3, T7, Tk, Te, Tg; E Ti; { E T8, Tc, T9, Ta, Tb; T8 = ii[WS(iis, 2)]; Tc = ii[WS(iis, 1)]; T9 = ii[WS(iis, 4)]; Ta = ii[WS(iis, 5)]; Tb = ii[WS(iis, 3)]; Td = FMA(KP1_081281634, T8, KP1_819263990 * T9) + FNMA(KP1_979642883, Ta, KP1_511499148 * Tb) - (KP563465113 * Tc); Tl = FMA(KP1_979642883, T8, KP1_819263990 * Ta) + FNMA(KP563465113, T9, KP1_081281634 * Tb) - (KP1_511499148 * Tc); Tf = FMA(KP563465113, T8, KP1_819263990 * Tb) + FNMA(KP1_511499148, Ta, KP1_081281634 * T9) - (KP1_979642883 * Tc); Th = FMA(KP1_081281634, Tc, KP1_819263990 * T8) + FMA(KP1_979642883, Tb, KP1_511499148 * T9) + (KP563465113 * Ta); Tj = FMA(KP563465113, Tb, KP1_979642883 * T9) + FNMS(KP1_511499148, T8, KP1_081281634 * Ta) - (KP1_819263990 * Tc); } T1 = ri[0]; T2 = ri[WS(ris, 1)]; T6 = ri[WS(ris, 5)]; T5 = ri[WS(ris, 4)]; T4 = ri[WS(ris, 3)]; T3 = ri[WS(ris, 2)]; T7 = FMA(KP1_682507065, T3, T1) + FNMS(KP284629676, T6, KP830830026 * T5) + FNMA(KP1_309721467, T4, KP1_918985947 * T2); Tk = FMA(KP1_682507065, T4, T1) + FNMS(KP1_918985947, T5, KP830830026 * T6) + FNMA(KP284629676, T3, KP1_309721467 * T2); Te = FMA(KP830830026, T4, T1) + FNMS(KP1_309721467, T6, KP1_682507065 * T5) + FNMA(KP1_918985947, T3, KP284629676 * T2); Tg = FMA(KP1_682507065, T2, T1) + FNMS(KP1_918985947, T6, KP830830026 * T3) + FNMA(KP1_309721467, T5, KP284629676 * T4); Ti = FMA(KP830830026, T2, T1) + FNMS(KP284629676, T5, KP1_682507065 * T6) + FNMA(KP1_918985947, T4, KP1_309721467 * T3); O[WS(os, 6)] = T7 - Td; O[WS(os, 8)] = Te - Tf; O[WS(os, 4)] = Tk + Tl; O[WS(os, 5)] = T7 + Td; O[WS(os, 7)] = Tk - Tl; O[WS(os, 2)] = Ti + Tj; O[WS(os, 3)] = Te + Tf; O[WS(os, 10)] = Tg + Th; O[WS(os, 1)] = Tg - Th; O[WS(os, 9)] = Ti - Tj; O[0] = FMA(KP2_000000000, T2 + T3 + T4 + T5 + T6, T1); } }
static void r2hc_11(const R *I, R *ro, R *io, stride is, stride ros, stride ios, INT v, INT ivs, INT ovs) { DK(KP654860733, +0.654860733945285064056925072466293553183791199); DK(KP142314838, +0.142314838273285140443792668616369668791051361); DK(KP959492973, +0.959492973614497389890368057066327699062454848); DK(KP415415013, +0.415415013001886425529274149229623203524004910); DK(KP841253532, +0.841253532831181168861811648919367717513292498); DK(KP989821441, +0.989821441880932732376092037776718787376519372); DK(KP909631995, +0.909631995354518371411715383079028460060241051); DK(KP281732556, +0.281732556841429697711417915346616899035777899); DK(KP540640817, +0.540640817455597582107635954318691695431770608); DK(KP755749574, +0.755749574354258283774035843972344420179717445); INT i; for (i = v; i > 0; i = i - 1, I = I + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(ros), MAKE_VOLATILE_STRIDE(ios)) { E T1, T4, Tl, Tg, Th, Td, Ti, Ta, Tk, T7, Tj, Tb, Tc; T1 = I[0]; { E T2, T3, Te, Tf; T2 = I[WS(is, 2)]; T3 = I[WS(is, 9)]; T4 = T2 + T3; Tl = T3 - T2; Te = I[WS(is, 1)]; Tf = I[WS(is, 10)]; Tg = Te + Tf; Th = Tf - Te; } Tb = I[WS(is, 3)]; Tc = I[WS(is, 8)]; Td = Tb + Tc; Ti = Tc - Tb; { E T8, T9, T5, T6; T8 = I[WS(is, 5)]; T9 = I[WS(is, 6)]; Ta = T8 + T9; Tk = T9 - T8; T5 = I[WS(is, 4)]; T6 = I[WS(is, 7)]; T7 = T5 + T6; Tj = T6 - T5; } io[WS(ios, 4)] = FMA(KP755749574, Th, KP540640817 * Ti) + FNMS(KP909631995, Tk, KP281732556 * Tj) - (KP989821441 * Tl); ro[WS(ros, 4)] = FMA(KP841253532, Td, T1) + FNMS(KP959492973, T7, KP415415013 * Ta) + FNMA(KP142314838, T4, KP654860733 * Tg); io[WS(ios, 2)] = FMA(KP909631995, Th, KP755749574 * Tl) + FNMA(KP540640817, Tk, KP989821441 * Tj) - (KP281732556 * Ti); io[WS(ios, 5)] = FMA(KP281732556, Th, KP755749574 * Ti) + FNMS(KP909631995, Tj, KP989821441 * Tk) - (KP540640817 * Tl); io[WS(ios, 1)] = FMA(KP540640817, Th, KP909631995 * Tl) + FMA(KP989821441, Ti, KP755749574 * Tj) + (KP281732556 * Tk); io[WS(ios, 3)] = FMA(KP989821441, Th, KP540640817 * Tj) + FNMS(KP909631995, Ti, KP755749574 * Tk) - (KP281732556 * Tl); ro[WS(ros, 3)] = FMA(KP415415013, Td, T1) + FNMS(KP654860733, Ta, KP841253532 * T7) + FNMA(KP959492973, T4, KP142314838 * Tg); ro[WS(ros, 1)] = FMA(KP841253532, Tg, T1) + FNMS(KP959492973, Ta, KP415415013 * T4) + FNMA(KP654860733, T7, KP142314838 * Td); ro[0] = T1 + Tg + T4 + Td + T7 + Ta; ro[WS(ros, 2)] = FMA(KP415415013, Tg, T1) + FNMS(KP142314838, T7, KP841253532 * Ta) + FNMA(KP959492973, Td, KP654860733 * T4); ro[WS(ros, 5)] = FMA(KP841253532, T4, T1) + FNMS(KP142314838, Ta, KP415415013 * T7) + FNMA(KP654860733, Td, KP959492973 * Tg); } }
static void r2cf_11(float *R0, float *R1, float *Cr, float *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP654860733, +0.654860733945285064056925072466293553183791199); DK(KP142314838, +0.142314838273285140443792668616369668791051361); DK(KP959492973, +0.959492973614497389890368057066327699062454848); DK(KP415415013, +0.415415013001886425529274149229623203524004910); DK(KP841253532, +0.841253532831181168861811648919367717513292498); DK(KP989821441, +0.989821441880932732376092037776718787376519372); DK(KP909631995, +0.909631995354518371411715383079028460060241051); DK(KP281732556, +0.281732556841429697711417915346616899035777899); DK(KP540640817, +0.540640817455597582107635954318691695431770608); DK(KP755749574, +0.755749574354258283774035843972344420179717445); INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(csr), MAKE_VOLATILE_STRIDE(csi)) { E T1, T4, Tl, Tg, Th, Td, Ti, Ta, Tk, T7, Tj, Tb, Tc; T1 = R0[0]; { E T2, T3, Te, Tf; T2 = R0[WS(rs, 1)]; T3 = R1[WS(rs, 4)]; T4 = T2 + T3; Tl = T3 - T2; Te = R1[0]; Tf = R0[WS(rs, 5)]; Tg = Te + Tf; Th = Tf - Te; } Tb = R1[WS(rs, 1)]; Tc = R0[WS(rs, 4)]; Td = Tb + Tc; Ti = Tc - Tb; { E T8, T9, T5, T6; T8 = R1[WS(rs, 2)]; T9 = R0[WS(rs, 3)]; Ta = T8 + T9; Tk = T9 - T8; T5 = R0[WS(rs, 2)]; T6 = R1[WS(rs, 3)]; T7 = T5 + T6; Tj = T6 - T5; } Ci[WS(csi, 4)] = FMA(KP755749574, Th, KP540640817 * Ti) + FNMS(KP909631995, Tk, KP281732556 * Tj) - (KP989821441 * Tl); Cr[WS(csr, 4)] = FMA(KP841253532, Td, T1) + FNMS(KP959492973, T7, KP415415013 * Ta) + FNMA(KP142314838, T4, KP654860733 * Tg); Ci[WS(csi, 2)] = FMA(KP909631995, Th, KP755749574 * Tl) + FNMA(KP540640817, Tk, KP989821441 * Tj) - (KP281732556 * Ti); Ci[WS(csi, 5)] = FMA(KP281732556, Th, KP755749574 * Ti) + FNMS(KP909631995, Tj, KP989821441 * Tk) - (KP540640817 * Tl); Ci[WS(csi, 1)] = FMA(KP540640817, Th, KP909631995 * Tl) + FMA(KP989821441, Ti, KP755749574 * Tj) + (KP281732556 * Tk); Ci[WS(csi, 3)] = FMA(KP989821441, Th, KP540640817 * Tj) + FNMS(KP909631995, Ti, KP755749574 * Tk) - (KP281732556 * Tl); Cr[WS(csr, 3)] = FMA(KP415415013, Td, T1) + FNMS(KP654860733, Ta, KP841253532 * T7) + FNMA(KP959492973, T4, KP142314838 * Tg); Cr[WS(csr, 1)] = FMA(KP841253532, Tg, T1) + FNMS(KP959492973, Ta, KP415415013 * T4) + FNMA(KP654860733, T7, KP142314838 * Td); Cr[0] = T1 + Tg + T4 + Td + T7 + Ta; Cr[WS(csr, 2)] = FMA(KP415415013, Tg, T1) + FNMS(KP142314838, T7, KP841253532 * Ta) + FNMA(KP959492973, Td, KP654860733 * T4); Cr[WS(csr, 5)] = FMA(KP841253532, T4, T1) + FNMS(KP142314838, Ta, KP415415013 * T7) + FNMA(KP654860733, Td, KP959492973 * Tg); } }
static void r2cf_7(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP781831482, +0.781831482468029808708444526674057750232334519); DK(KP974927912, +0.974927912181823607018131682993931217232785801); { INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(28, rs), MAKE_VOLATILE_STRIDE(28, csr), MAKE_VOLATILE_STRIDE(28, csi)) { E T1, Ta, Tb, T4, Td, T7, Tc, T8, T9; T1 = R0[0]; T8 = R1[0]; T9 = R0[WS(rs, 3)]; Ta = T8 + T9; Tb = T9 - T8; { E T2, T3, T5, T6; T2 = R0[WS(rs, 1)]; T3 = R1[WS(rs, 2)]; T4 = T2 + T3; Td = T3 - T2; T5 = R1[WS(rs, 1)]; T6 = R0[WS(rs, 2)]; T7 = T5 + T6; Tc = T6 - T5; } Ci[WS(csi, 2)] = FNMS(KP781831482, Tc, KP974927912 * Tb) - (KP433883739 * Td); Ci[WS(csi, 1)] = FMA(KP781831482, Tb, KP974927912 * Td) + (KP433883739 * Tc); Cr[WS(csr, 2)] = FMA(KP623489801, T7, T1) + FNMA(KP900968867, T4, KP222520933 * Ta); Ci[WS(csi, 3)] = FMA(KP433883739, Tb, KP974927912 * Tc) - (KP781831482 * Td); Cr[WS(csr, 3)] = FMA(KP623489801, T4, T1) + FNMA(KP222520933, T7, KP900968867 * Ta); Cr[WS(csr, 1)] = FMA(KP623489801, Ta, T1) + FNMA(KP900968867, T7, KP222520933 * T4); Cr[0] = T1 + Ta + T4 + T7; } } }
static void r2hcII_7(const R *I, R *ro, R *io, stride is, stride ros, stride ios, INT v, INT ivs, INT ovs) { DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP974927912, +0.974927912181823607018131682993931217232785801); DK(KP781831482, +0.781831482468029808708444526674057750232334519); INT i; for (i = v; i > 0; i = i - 1, I = I + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(ros), MAKE_VOLATILE_STRIDE(ios)) { E T1, Ta, Td, T4, Tb, T7, Tc, T8, T9; T1 = I[0]; T8 = I[WS(is, 1)]; T9 = I[WS(is, 6)]; Ta = T8 - T9; Td = T8 + T9; { E T2, T3, T5, T6; T2 = I[WS(is, 2)]; T3 = I[WS(is, 5)]; T4 = T2 - T3; Tb = T2 + T3; T5 = I[WS(is, 3)]; T6 = I[WS(is, 4)]; T7 = T5 - T6; Tc = T5 + T6; } io[0] = -(FMA(KP781831482, Tb, KP974927912 * Tc) + (KP433883739 * Td)); io[WS(ios, 1)] = FNMS(KP974927912, Td, KP781831482 * Tc) - (KP433883739 * Tb); ro[0] = FMA(KP623489801, T4, T1) + FMA(KP222520933, T7, KP900968867 * Ta); io[WS(ios, 2)] = FNMS(KP781831482, Td, KP974927912 * Tb) - (KP433883739 * Tc); ro[WS(ros, 2)] = FMA(KP900968867, T7, T1) + FNMA(KP623489801, Ta, KP222520933 * T4); ro[WS(ros, 1)] = FMA(KP222520933, Ta, T1) + FNMA(KP623489801, T7, KP900968867 * T4); ro[WS(ros, 3)] = T1 + T4 - (T7 + Ta); } }
static void t1_7(R *ri, R *ii, const R *W, stride rs, INT mb, INT me, INT ms) { DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP781831482, +0.781831482468029808708444526674057750232334519); DK(KP974927912, +0.974927912181823607018131682993931217232785801); { INT m; for (m = mb, W = W + (mb * 12); m < me; m = m + 1, ri = ri + ms, ii = ii + ms, W = W + 12, MAKE_VOLATILE_STRIDE(14, rs)) { E T1, TR, Tc, TS, TC, TO, Tn, TT, TI, TP, Ty, TU, TF, TQ; T1 = ri[0]; TR = ii[0]; { E T6, TA, Tb, TB; { E T3, T5, T2, T4; T3 = ri[WS(rs, 1)]; T5 = ii[WS(rs, 1)]; T2 = W[0]; T4 = W[1]; T6 = FMA(T2, T3, T4 * T5); TA = FNMS(T4, T3, T2 * T5); } { E T8, Ta, T7, T9; T8 = ri[WS(rs, 6)]; Ta = ii[WS(rs, 6)]; T7 = W[10]; T9 = W[11]; Tb = FMA(T7, T8, T9 * Ta); TB = FNMS(T9, T8, T7 * Ta); } Tc = T6 + Tb; TS = Tb - T6; TC = TA - TB; TO = TA + TB; } { E Th, TG, Tm, TH; { E Te, Tg, Td, Tf; Te = ri[WS(rs, 2)]; Tg = ii[WS(rs, 2)]; Td = W[2]; Tf = W[3]; Th = FMA(Td, Te, Tf * Tg); TG = FNMS(Tf, Te, Td * Tg); } { E Tj, Tl, Ti, Tk; Tj = ri[WS(rs, 5)]; Tl = ii[WS(rs, 5)]; Ti = W[8]; Tk = W[9]; Tm = FMA(Ti, Tj, Tk * Tl); TH = FNMS(Tk, Tj, Ti * Tl); } Tn = Th + Tm; TT = Tm - Th; TI = TG - TH; TP = TG + TH; } { E Ts, TD, Tx, TE; { E Tp, Tr, To, Tq; Tp = ri[WS(rs, 3)]; Tr = ii[WS(rs, 3)]; To = W[4]; Tq = W[5]; Ts = FMA(To, Tp, Tq * Tr); TD = FNMS(Tq, Tp, To * Tr); } { E Tu, Tw, Tt, Tv; Tu = ri[WS(rs, 4)]; Tw = ii[WS(rs, 4)]; Tt = W[6]; Tv = W[7]; Tx = FMA(Tt, Tu, Tv * Tw); TE = FNMS(Tv, Tu, Tt * Tw); } Ty = Ts + Tx; TU = Tx - Ts; TF = TD - TE; TQ = TD + TE; } ri[0] = T1 + Tc + Tn + Ty; ii[0] = TO + TP + TQ + TR; { E TJ, Tz, TX, TY; TJ = FNMS(KP781831482, TF, KP974927912 * TC) - (KP433883739 * TI); Tz = FMA(KP623489801, Ty, T1) + FNMA(KP900968867, Tn, KP222520933 * Tc); ri[WS(rs, 5)] = Tz - TJ; ri[WS(rs, 2)] = Tz + TJ; TX = FNMS(KP781831482, TU, KP974927912 * TS) - (KP433883739 * TT); TY = FMA(KP623489801, TQ, TR) + FNMA(KP900968867, TP, KP222520933 * TO); ii[WS(rs, 2)] = TX + TY; ii[WS(rs, 5)] = TY - TX; } { E TL, TK, TV, TW; TL = FMA(KP781831482, TC, KP974927912 * TI) + (KP433883739 * TF); TK = FMA(KP623489801, Tc, T1) + FNMA(KP900968867, Ty, KP222520933 * Tn); ri[WS(rs, 6)] = TK - TL; ri[WS(rs, 1)] = TK + TL; TV = FMA(KP781831482, TS, KP974927912 * TT) + (KP433883739 * TU); TW = FMA(KP623489801, TO, TR) + FNMA(KP900968867, TQ, KP222520933 * TP); ii[WS(rs, 1)] = TV + TW; ii[WS(rs, 6)] = TW - TV; } { E TN, TM, TZ, T10; TN = FMA(KP433883739, TC, KP974927912 * TF) - (KP781831482 * TI); TM = FMA(KP623489801, Tn, T1) + FNMA(KP222520933, Ty, KP900968867 * Tc); ri[WS(rs, 4)] = TM - TN; ri[WS(rs, 3)] = TM + TN; TZ = FMA(KP433883739, TS, KP974927912 * TU) - (KP781831482 * TT); T10 = FMA(KP623489801, TP, TR) + FNMA(KP222520933, TQ, KP900968867 * TO); ii[WS(rs, 3)] = TZ + T10; ii[WS(rs, 4)] = T10 - TZ; } } } }
static void r2hc_9(const R *I, R *ro, R *io, stride is, stride ros, stride ios, int v, int ivs, int ovs) { DK(KP939692620, +0.939692620785908384054109277324731469936208134); DK(KP296198132, +0.296198132726023843175338011893050938967728390); DK(KP342020143, +0.342020143325668733044099614682259580763083368); DK(KP813797681, +0.813797681349373692844693217248393223289101568); DK(KP984807753, +0.984807753012208059366743024589523013670643252); DK(KP150383733, +0.150383733180435296639271897612501926072238258); DK(KP642787609, +0.642787609686539326322643409907263432907559884); DK(KP663413948, +0.663413948168938396205421319635891297216863310); DK(KP852868531, +0.852868531952443209628250963940074071936020296); DK(KP173648177, +0.173648177666930348851716626769314796000375677); DK(KP556670399, +0.556670399226419366452912952047023132968291906); DK(KP766044443, +0.766044443118978035202392650555416673935832457); DK(KP866025403, +0.866025403784438646763723170752936183471402627); DK(KP500000000, +0.500000000000000000000000000000000000000000000); int i; for (i = v; i > 0; i = i - 1, I = I + ivs, ro = ro + ovs, io = io + ovs) { E T1, T4, Tr, Ta, Tl, Ti, Tf, Tk, Tj, T2, T3, T5, Tg; T1 = I[0]; T2 = I[WS(is, 3)]; T3 = I[WS(is, 6)]; T4 = T2 + T3; Tr = T3 - T2; { E T6, T7, T8, T9; T6 = I[WS(is, 1)]; T7 = I[WS(is, 4)]; T8 = I[WS(is, 7)]; T9 = T7 + T8; Ta = T6 + T9; Tl = T8 - T7; Ti = FNMS(KP500000000, T9, T6); } { E Tb, Tc, Td, Te; Tb = I[WS(is, 2)]; Tc = I[WS(is, 5)]; Td = I[WS(is, 8)]; Te = Tc + Td; Tf = Tb + Te; Tk = FNMS(KP500000000, Te, Tb); Tj = Td - Tc; } io[WS(ios, 3)] = KP866025403 * (Tf - Ta); T5 = T1 + T4; Tg = Ta + Tf; ro[WS(ros, 3)] = FNMS(KP500000000, Tg, T5); ro[0] = T5 + Tg; { E Tt, Th, Tm, Tn, To, Tp, Tq, Ts; Tt = KP866025403 * Tr; Th = FNMS(KP500000000, T4, T1); Tm = FMA(KP766044443, Ti, KP556670399 * Tl); Tn = FMA(KP173648177, Tk, KP852868531 * Tj); To = Tm + Tn; Tp = FNMS(KP642787609, Ti, KP663413948 * Tl); Tq = FNMS(KP984807753, Tk, KP150383733 * Tj); Ts = Tp + Tq; ro[WS(ros, 1)] = Th + To; io[WS(ios, 1)] = Tt + Ts; ro[WS(ros, 4)] = FMA(KP866025403, Tp - Tq, Th) - (KP500000000 * To); io[WS(ios, 4)] = FNMS(KP500000000, Ts, KP866025403 * (Tr + (Tn - Tm))); io[WS(ios, 2)] = FNMS(KP342020143, Tk, KP813797681 * Tj) + FNMA(KP150383733, Tl, KP984807753 * Ti) - Tt; ro[WS(ros, 2)] = FMA(KP173648177, Ti, Th) + FNMA(KP296198132, Tj, KP939692620 * Tk) - (KP852868531 * Tl); } } }
static void r2cf_25(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP998026728, +0.998026728428271561952336806863450553336905220); DK(KP125581039, +0.125581039058626752152356449131262266244969664); DK(KP1_996053456, +1.996053456856543123904673613726901106673810439); DK(KP062790519, +0.062790519529313376076178224565631133122484832); DK(KP809016994, +0.809016994374947424102293417182819058860154590); DK(KP309016994, +0.309016994374947424102293417182819058860154590); DK(KP1_369094211, +1.369094211857377347464566715242418539779038465); DK(KP728968627, +0.728968627421411523146730319055259111372571664); DK(KP963507348, +0.963507348203430549974383005744259307057084020); DK(KP876306680, +0.876306680043863587308115903922062583399064238); DK(KP497379774, +0.497379774329709576484567492012895936835134813); DK(KP968583161, +0.968583161128631119490168375464735813836012403); DK(KP684547105, +0.684547105928688673732283357621209269889519233); DK(KP1_457937254, +1.457937254842823046293460638110518222745143328); DK(KP481753674, +0.481753674101715274987191502872129653528542010); DK(KP1_752613360, +1.752613360087727174616231807844125166798128477); DK(KP248689887, +0.248689887164854788242283746006447968417567406); DK(KP1_937166322, +1.937166322257262238980336750929471627672024806); DK(KP992114701, +0.992114701314477831049793042785778521453036709); DK(KP250666467, +0.250666467128608490746237519633017587885836494); DK(KP425779291, +0.425779291565072648862502445744251703979973042); DK(KP1_809654104, +1.809654104932039055427337295865395187940827822); DK(KP1_274847979, +1.274847979497379420353425623352032390869834596); DK(KP770513242, +0.770513242775789230803009636396177847271667672); DK(KP844327925, +0.844327925502015078548558063966681505381659241); DK(KP1_071653589, +1.071653589957993236542617535735279956127150691); DK(KP125333233, +0.125333233564304245373118759816508793942918247); DK(KP1_984229402, +1.984229402628955662099586085571557042906073418); DK(KP904827052, +0.904827052466019527713668647932697593970413911); DK(KP851558583, +0.851558583130145297725004891488503407959946084); DK(KP637423989, +0.637423989748689710176712811676016195434917298); DK(KP1_541026485, +1.541026485551578461606019272792355694543335344); DK(KP535826794, +0.535826794978996618271308767867639978063575346); DK(KP1_688655851, +1.688655851004030157097116127933363010763318483); DK(KP293892626, +0.293892626146236564584352977319536384298826219); DK(KP475528258, +0.475528258147576786058219666689691071702849317); DK(KP250000000, +0.250000000000000000000000000000000000000000000); DK(KP559016994, +0.559016994374947424102293417182819058860154590); DK(KP587785252, +0.587785252292473129168705954639072768597652438); DK(KP951056516, +0.951056516295153572116439333379382143405698634); INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(csr), MAKE_VOLATILE_STRIDE(csi)) { E T8, T1j, T1V, T1l, T7, T9, Ta, T12, T2u, T1O, T19, T1P, Ti, T2r, T1K; E Tp, T1L, Tx, T2q, T1H, TE, T1I, TN, T2t, T1R, TU, T1S, T6, T1k, T3; E T2s, T2v; T8 = R0[0]; { E T4, T5, T1, T2; T4 = R0[WS(rs, 5)]; T5 = R1[WS(rs, 7)]; T6 = T4 + T5; T1k = T4 - T5; T1 = R1[WS(rs, 2)]; T2 = R0[WS(rs, 10)]; T3 = T1 + T2; T1j = T1 - T2; } T1V = KP951056516 * T1k; T1l = FMA(KP951056516, T1j, KP587785252 * T1k); T7 = KP559016994 * (T3 - T6); T9 = T3 + T6; Ta = FNMS(KP250000000, T9, T8); { E T16, T13, T14, TY, T17, T11, T15, T18; T16 = R1[WS(rs, 1)]; { E TW, TX, TZ, T10; TW = R0[WS(rs, 4)]; TX = R1[WS(rs, 11)]; T13 = TW + TX; TZ = R1[WS(rs, 6)]; T10 = R0[WS(rs, 9)]; T14 = TZ + T10; TY = TW - TX; T17 = T13 + T14; T11 = TZ - T10; } T12 = FMA(KP475528258, TY, KP293892626 * T11); T2u = T16 + T17; T1O = FNMS(KP293892626, TY, KP475528258 * T11); T15 = KP559016994 * (T13 - T14); T18 = FNMS(KP250000000, T17, T16); T19 = T15 + T18; T1P = T18 - T15; } { E Tm, Tj, Tk, Te, Tn, Th, Tl, To; Tm = R1[0]; { E Tc, Td, Tf, Tg; Tc = R0[WS(rs, 3)]; Td = R1[WS(rs, 10)]; Tj = Tc + Td; Tf = R1[WS(rs, 5)]; Tg = R0[WS(rs, 8)]; Tk = Tf + Tg; Te = Tc - Td; Tn = Tj + Tk; Th = Tf - Tg; } Ti = FMA(KP475528258, Te, KP293892626 * Th); T2r = Tm + Tn; T1K = FNMS(KP293892626, Te, KP475528258 * Th); Tl = KP559016994 * (Tj - Tk); To = FNMS(KP250000000, Tn, Tm); Tp = Tl + To; T1L = To - Tl; } { E TB, Ty, Tz, Tt, TC, Tw, TA, TD; TB = R0[WS(rs, 2)]; { E Tr, Ts, Tu, Tv; Tr = R1[WS(rs, 4)]; Ts = R0[WS(rs, 12)]; Ty = Tr + Ts; Tu = R0[WS(rs, 7)]; Tv = R1[WS(rs, 9)]; Tz = Tu + Tv; Tt = Tr - Ts; TC = Ty + Tz; Tw = Tu - Tv; } Tx = FMA(KP475528258, Tt, KP293892626 * Tw); T2q = TB + TC; T1H = FNMS(KP293892626, Tt, KP475528258 * Tw); TA = KP559016994 * (Ty - Tz); TD = FNMS(KP250000000, TC, TB); TE = TA + TD; T1I = TD - TA; } { E TR, TO, TP, TJ, TS, TM, TQ, TT; TR = R0[WS(rs, 1)]; { E TH, TI, TK, TL; TH = R1[WS(rs, 3)]; TI = R0[WS(rs, 11)]; TO = TH + TI; TK = R0[WS(rs, 6)]; TL = R1[WS(rs, 8)]; TP = TK + TL; TJ = TH - TI; TS = TO + TP; TM = TK - TL; } TN = FMA(KP475528258, TJ, KP293892626 * TM); T2t = TR + TS; T1R = FNMS(KP293892626, TJ, KP475528258 * TM); TQ = KP559016994 * (TO - TP); TT = FNMS(KP250000000, TS, TR); TU = TQ + TT; T1S = TT - TQ; } T2s = T2q - T2r; T2v = T2t - T2u; Ci[WS(csi, 5)] = FNMS(KP587785252, T2v, KP951056516 * T2s); Ci[WS(csi, 10)] = FMA(KP587785252, T2s, KP951056516 * T2v); { E T2z, T2y, T2A, T2w, T2x, T2B; T2z = T8 + T9; T2w = T2r + T2q; T2x = T2t + T2u; T2y = KP559016994 * (T2w - T2x); T2A = T2w + T2x; Cr[0] = T2z + T2A; T2B = FNMS(KP250000000, T2A, T2z); Cr[WS(csr, 5)] = T2y + T2B; Cr[WS(csr, 10)] = T2B - T2y; } { E Tb, Tq, TF, TG, T1E, T1F, T1G, T1B, T1C, T1D, TV, T1a, T1b, T1o, T1r; E T1s, T1z, T1x, T1e, T1h, T1i, T1u, T1t; Tb = T7 + Ta; Tq = FMA(KP1_688655851, Ti, KP535826794 * Tp); TF = FMA(KP1_541026485, Tx, KP637423989 * TE); TG = Tq - TF; T1E = FMA(KP851558583, TN, KP904827052 * TU); T1F = FMA(KP1_984229402, T12, KP125333233 * T19); T1G = T1E + T1F; T1B = FNMS(KP844327925, Tp, KP1_071653589 * Ti); T1C = FNMS(KP1_274847979, Tx, KP770513242 * TE); T1D = T1B + T1C; TV = FNMS(KP425779291, TU, KP1_809654104 * TN); T1a = FNMS(KP992114701, T19, KP250666467 * T12); T1b = TV + T1a; { E T1m, T1n, T1p, T1q; T1m = FMA(KP1_937166322, Ti, KP248689887 * Tp); T1n = FMA(KP1_071653589, Tx, KP844327925 * TE); T1o = T1m + T1n; T1p = FMA(KP1_752613360, TN, KP481753674 * TU); T1q = FMA(KP1_457937254, T12, KP684547105 * T19); T1r = T1p + T1q; T1s = T1o + T1r; T1z = T1q - T1p; T1x = T1n - T1m; } { E T1c, T1d, T1f, T1g; T1c = FNMS(KP497379774, Ti, KP968583161 * Tp); T1d = FNMS(KP1_688655851, Tx, KP535826794 * TE); T1e = T1c + T1d; T1f = FNMS(KP963507348, TN, KP876306680 * TU); T1g = FNMS(KP1_369094211, T12, KP728968627 * T19); T1h = T1f + T1g; T1i = T1e + T1h; T1u = T1f - T1g; T1t = T1d - T1c; } Cr[WS(csr, 1)] = Tb + T1i; Ci[WS(csi, 1)] = -(T1l + T1s); Cr[WS(csr, 4)] = Tb + TG + T1b; Ci[WS(csi, 4)] = T1l + T1D - T1G; Ci[WS(csi, 9)] = FMA(KP309016994, T1D, T1l) + FMA(KP587785252, T1a - TV, KP809016994 * T1G) - (KP951056516 * (Tq + TF)); Cr[WS(csr, 9)] = FMA(KP309016994, TG, Tb) + FMA(KP951056516, T1B - T1C, KP587785252 * (T1F - T1E)) - (KP809016994 * T1b); { E T1v, T1w, T1y, T1A; T1v = FMS(KP250000000, T1s, T1l); T1w = KP559016994 * (T1r - T1o); Ci[WS(csi, 11)] = FMA(KP587785252, T1t, KP951056516 * T1u) + T1v - T1w; Ci[WS(csi, 6)] = FMA(KP951056516, T1t, T1v) + FNMS(KP587785252, T1u, T1w); T1y = FNMS(KP250000000, T1i, Tb); T1A = KP559016994 * (T1e - T1h); Cr[WS(csr, 11)] = FMA(KP587785252, T1x, T1y) + FNMA(KP951056516, T1z, T1A); Cr[WS(csr, 6)] = FMA(KP951056516, T1x, T1A) + FMA(KP587785252, T1z, T1y); } } { E T1W, T1X, T1J, T1M, T1N, T21, T22, T23, T1Q, T1T, T1U, T1Y, T1Z, T20, T26; E T29, T2a, T2k, T2j, T2l, T2m, T2d, T2o, T2i; T1W = FNMS(KP587785252, T1j, T1V); T1X = Ta - T7; T1J = FNMS(KP125333233, T1I, KP1_984229402 * T1H); T1M = FMA(KP1_457937254, T1K, KP684547105 * T1L); T1N = T1J - T1M; T21 = FNMS(KP1_996053456, T1R, KP062790519 * T1S); T22 = FMA(KP1_541026485, T1O, KP637423989 * T1P); T23 = T21 - T22; T1Q = FNMS(KP770513242, T1P, KP1_274847979 * T1O); T1T = FMA(KP125581039, T1R, KP998026728 * T1S); T1U = T1Q - T1T; T1Y = FNMS(KP1_369094211, T1K, KP728968627 * T1L); T1Z = FMA(KP250666467, T1H, KP992114701 * T1I); T20 = T1Y - T1Z; { E T24, T25, T27, T28; T24 = FNMS(KP481753674, T1L, KP1_752613360 * T1K); T25 = FMA(KP851558583, T1H, KP904827052 * T1I); T26 = T24 - T25; T27 = FNMS(KP844327925, T1S, KP1_071653589 * T1R); T28 = FNMS(KP998026728, T1P, KP125581039 * T1O); T29 = T27 + T28; T2a = T26 + T29; T2k = T27 - T28; T2j = T24 + T25; } { E T2b, T2c, T2g, T2h; T2b = FNMS(KP425779291, T1I, KP1_809654104 * T1H); T2c = FMA(KP963507348, T1K, KP876306680 * T1L); T2l = T2c + T2b; T2g = FMA(KP1_688655851, T1R, KP535826794 * T1S); T2h = FMA(KP1_996053456, T1O, KP062790519 * T1P); T2m = T2g + T2h; T2d = T2b - T2c; T2o = T2l + T2m; T2i = T2g - T2h; } Ci[WS(csi, 2)] = T1W + T2a; Cr[WS(csr, 2)] = T1X + T2o; Ci[WS(csi, 3)] = T1N + T1U - T1W; Cr[WS(csr, 3)] = T1X + T20 + T23; Cr[WS(csr, 8)] = FMA(KP309016994, T20, T1X) + FNMA(KP809016994, T23, KP587785252 * (T1T + T1Q)) - (KP951056516 * (T1M + T1J)); Ci[WS(csi, 8)] = FNMS(KP587785252, T21 + T22, KP309016994 * T1N) + FNMA(KP809016994, T1U, KP951056516 * (T1Y + T1Z)) - T1W; { E T2e, T2f, T2n, T2p; T2e = KP559016994 * (T26 - T29); T2f = FNMS(KP250000000, T2a, T1W); Ci[WS(csi, 7)] = FMA(KP951056516, T2d, T2e) + FNMS(KP587785252, T2i, T2f); Ci[WS(csi, 12)] = FMA(KP587785252, T2d, T2f) + FMS(KP951056516, T2i, T2e); T2n = KP559016994 * (T2l - T2m); T2p = FNMS(KP250000000, T2o, T1X); Cr[WS(csr, 7)] = FMA(KP951056516, T2j, KP587785252 * T2k) + T2n + T2p; Cr[WS(csr, 12)] = FMA(KP587785252, T2j, T2p) + FNMA(KP951056516, T2k, T2n); } } } }
static void hc2r_14(const R *ri, const R *ii, R *O, stride ris, stride iis, stride os, int v, int ivs, int ovs) { DK(KP1_801937735, +1.801937735804838252472204639014890102331838324); DK(KP445041867, +0.445041867912628808577805128993589518932711138); DK(KP1_246979603, +1.246979603717467061050009768008479621264549462); DK(KP867767478, +0.867767478235116240951536665696717509219981456); DK(KP1_949855824, +1.949855824363647214036263365987862434465571601); DK(KP1_563662964, +1.563662964936059617416889053348115500464669037); DK(KP2_000000000, +2.000000000000000000000000000000000000000000000); int i; for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, O = O + ovs) { E T3, Td, T6, Te, Tq, Tz, Tn, Ty, Tc, Tg, Tk, Tx, T9, Tf, T1; E T2; T1 = ri[0]; T2 = ri[WS(ris, 7)]; T3 = T1 - T2; Td = T1 + T2; { E T4, T5, To, Tp; T4 = ri[WS(ris, 2)]; T5 = ri[WS(ris, 5)]; T6 = T4 - T5; Te = T4 + T5; To = ii[WS(iis, 2)]; Tp = ii[WS(iis, 5)]; Tq = To - Tp; Tz = To + Tp; } { E Tl, Tm, Ta, Tb; Tl = ii[WS(iis, 6)]; Tm = ii[WS(iis, 1)]; Tn = Tl - Tm; Ty = Tl + Tm; Ta = ri[WS(ris, 6)]; Tb = ri[WS(ris, 1)]; Tc = Ta - Tb; Tg = Ta + Tb; } { E Ti, Tj, T7, T8; Ti = ii[WS(iis, 4)]; Tj = ii[WS(iis, 3)]; Tk = Ti - Tj; Tx = Ti + Tj; T7 = ri[WS(ris, 4)]; T8 = ri[WS(ris, 3)]; T9 = T7 - T8; Tf = T7 + T8; } O[WS(os, 7)] = FMA(KP2_000000000, T6 + T9 + Tc, T3); O[0] = FMA(KP2_000000000, Te + Tf + Tg, Td); { E Tr, Th, TE, TD; Tr = FNMS(KP1_949855824, Tn, KP1_563662964 * Tk) - (KP867767478 * Tq); Th = FMA(KP1_246979603, Tf, Td) + FNMA(KP445041867, Tg, KP1_801937735 * Te); O[WS(os, 4)] = Th - Tr; O[WS(os, 10)] = Th + Tr; TE = FMA(KP867767478, Tx, KP1_563662964 * Ty) - (KP1_949855824 * Tz); TD = FMA(KP1_246979603, Tc, T3) + FNMA(KP1_801937735, T9, KP445041867 * T6); O[WS(os, 5)] = TD - TE; O[WS(os, 9)] = TD + TE; } { E Tt, Ts, TA, Tw; Tt = FMA(KP867767478, Tk, KP1_563662964 * Tn) - (KP1_949855824 * Tq); Ts = FMA(KP1_246979603, Tg, Td) + FNMA(KP1_801937735, Tf, KP445041867 * Te); O[WS(os, 12)] = Ts - Tt; O[WS(os, 2)] = Ts + Tt; TA = FNMS(KP1_949855824, Ty, KP1_563662964 * Tx) - (KP867767478 * Tz); Tw = FMA(KP1_246979603, T9, T3) + FNMA(KP445041867, Tc, KP1_801937735 * T6); O[WS(os, 11)] = Tw - TA; O[WS(os, 3)] = Tw + TA; } { E TC, TB, Tv, Tu; TC = FMA(KP1_563662964, Tz, KP1_949855824 * Tx) + (KP867767478 * Ty); TB = FMA(KP1_246979603, T6, T3) + FNMA(KP1_801937735, Tc, KP445041867 * T9); O[WS(os, 1)] = TB - TC; O[WS(os, 13)] = TB + TC; Tv = FMA(KP1_563662964, Tq, KP1_949855824 * Tk) + (KP867767478 * Tn); Tu = FMA(KP1_246979603, Te, Td) + FNMA(KP1_801937735, Tg, KP445041867 * Tf); O[WS(os, 8)] = Tu - Tv; O[WS(os, 6)] = Tu + Tv; } } }
static void r2cb_14(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP1_801937735, +1.801937735804838252472204639014890102331838324); DK(KP445041867, +0.445041867912628808577805128993589518932711138); DK(KP1_246979603, +1.246979603717467061050009768008479621264549462); DK(KP867767478, +0.867767478235116240951536665696717509219981456); DK(KP1_949855824, +1.949855824363647214036263365987862434465571601); DK(KP1_563662964, +1.563662964936059617416889053348115500464669037); DK(KP2_000000000, +2.000000000000000000000000000000000000000000000); { INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ovs, R1 = R1 + ovs, Cr = Cr + ivs, Ci = Ci + ivs, MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(csr), MAKE_VOLATILE_STRIDE(csi)) { E T3, Td, T6, Te, Tq, Tz, Tn, Ty, Tc, Tg, Tk, Tx, T9, Tf, T1; E T2; T1 = Cr[0]; T2 = Cr[WS(csr, 7)]; T3 = T1 - T2; Td = T1 + T2; { E T4, T5, To, Tp; T4 = Cr[WS(csr, 2)]; T5 = Cr[WS(csr, 5)]; T6 = T4 - T5; Te = T4 + T5; To = Ci[WS(csi, 2)]; Tp = Ci[WS(csi, 5)]; Tq = To - Tp; Tz = To + Tp; } { E Tl, Tm, Ta, Tb; Tl = Ci[WS(csi, 6)]; Tm = Ci[WS(csi, 1)]; Tn = Tl - Tm; Ty = Tl + Tm; Ta = Cr[WS(csr, 6)]; Tb = Cr[WS(csr, 1)]; Tc = Ta - Tb; Tg = Ta + Tb; } { E Ti, Tj, T7, T8; Ti = Ci[WS(csi, 4)]; Tj = Ci[WS(csi, 3)]; Tk = Ti - Tj; Tx = Ti + Tj; T7 = Cr[WS(csr, 4)]; T8 = Cr[WS(csr, 3)]; T9 = T7 - T8; Tf = T7 + T8; } R1[WS(rs, 3)] = FMA(KP2_000000000, T6 + T9 + Tc, T3); R0[0] = FMA(KP2_000000000, Te + Tf + Tg, Td); { E Tr, Th, TE, TD; Tr = FNMS(KP1_949855824, Tn, KP1_563662964 * Tk) - (KP867767478 * Tq); Th = FMA(KP1_246979603, Tf, Td) + FNMA(KP445041867, Tg, KP1_801937735 * Te); R0[WS(rs, 2)] = Th - Tr; R0[WS(rs, 5)] = Th + Tr; TE = FMA(KP867767478, Tx, KP1_563662964 * Ty) - (KP1_949855824 * Tz); TD = FMA(KP1_246979603, Tc, T3) + FNMA(KP1_801937735, T9, KP445041867 * T6); R1[WS(rs, 2)] = TD - TE; R1[WS(rs, 4)] = TD + TE; } { E Tt, Ts, TA, Tw; Tt = FMA(KP867767478, Tk, KP1_563662964 * Tn) - (KP1_949855824 * Tq); Ts = FMA(KP1_246979603, Tg, Td) + FNMA(KP1_801937735, Tf, KP445041867 * Te); R0[WS(rs, 6)] = Ts - Tt; R0[WS(rs, 1)] = Ts + Tt; TA = FNMS(KP1_949855824, Ty, KP1_563662964 * Tx) - (KP867767478 * Tz); Tw = FMA(KP1_246979603, T9, T3) + FNMA(KP445041867, Tc, KP1_801937735 * T6); R1[WS(rs, 5)] = Tw - TA; R1[WS(rs, 1)] = Tw + TA; } { E TC, TB, Tv, Tu; TC = FMA(KP1_563662964, Tz, KP1_949855824 * Tx) + (KP867767478 * Ty); TB = FMA(KP1_246979603, T6, T3) + FNMA(KP1_801937735, Tc, KP445041867 * T9); R1[0] = TB - TC; R1[WS(rs, 6)] = TB + TC; Tv = FMA(KP1_563662964, Tq, KP1_949855824 * Tk) + (KP867767478 * Tn); Tu = FMA(KP1_246979603, Te, Td) + FNMA(KP1_801937735, Tg, KP445041867 * Tf); R0[WS(rs, 4)] = Tu - Tv; R0[WS(rs, 3)] = Tu + Tv; } } } }
static void r2cf_9(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP939692620, +0.939692620785908384054109277324731469936208134); DK(KP296198132, +0.296198132726023843175338011893050938967728390); DK(KP342020143, +0.342020143325668733044099614682259580763083368); DK(KP813797681, +0.813797681349373692844693217248393223289101568); DK(KP984807753, +0.984807753012208059366743024589523013670643252); DK(KP150383733, +0.150383733180435296639271897612501926072238258); DK(KP642787609, +0.642787609686539326322643409907263432907559884); DK(KP663413948, +0.663413948168938396205421319635891297216863310); DK(KP852868531, +0.852868531952443209628250963940074071936020296); DK(KP173648177, +0.173648177666930348851716626769314796000375677); DK(KP556670399, +0.556670399226419366452912952047023132968291906); DK(KP766044443, +0.766044443118978035202392650555416673935832457); DK(KP866025403, +0.866025403784438646763723170752936183471402627); DK(KP500000000, +0.500000000000000000000000000000000000000000000); INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(csr), MAKE_VOLATILE_STRIDE(csi)) { E T1, T4, Tr, Ta, Tl, Ti, Tf, Tk, Tj, T2, T3, T5, Tg; T1 = R0[0]; T2 = R1[WS(rs, 1)]; T3 = R0[WS(rs, 3)]; T4 = T2 + T3; Tr = T3 - T2; { E T6, T7, T8, T9; T6 = R1[0]; T7 = R0[WS(rs, 2)]; T8 = R1[WS(rs, 3)]; T9 = T7 + T8; Ta = T6 + T9; Tl = T8 - T7; Ti = FNMS(KP500000000, T9, T6); } { E Tb, Tc, Td, Te; Tb = R0[WS(rs, 1)]; Tc = R1[WS(rs, 2)]; Td = R0[WS(rs, 4)]; Te = Tc + Td; Tf = Tb + Te; Tk = FNMS(KP500000000, Te, Tb); Tj = Td - Tc; } Ci[WS(csi, 3)] = KP866025403 * (Tf - Ta); T5 = T1 + T4; Tg = Ta + Tf; Cr[WS(csr, 3)] = FNMS(KP500000000, Tg, T5); Cr[0] = T5 + Tg; { E Tt, Th, Tm, Tn, To, Tp, Tq, Ts; Tt = KP866025403 * Tr; Th = FNMS(KP500000000, T4, T1); Tm = FMA(KP766044443, Ti, KP556670399 * Tl); Tn = FMA(KP173648177, Tk, KP852868531 * Tj); To = Tm + Tn; Tp = FNMS(KP642787609, Ti, KP663413948 * Tl); Tq = FNMS(KP984807753, Tk, KP150383733 * Tj); Ts = Tp + Tq; Cr[WS(csr, 1)] = Th + To; Ci[WS(csi, 1)] = Tt + Ts; Cr[WS(csr, 4)] = FMA(KP866025403, Tp - Tq, Th) - (KP500000000 * To); Ci[WS(csi, 4)] = FNMS(KP500000000, Ts, KP866025403 * (Tr + (Tn - Tm))); Ci[WS(csi, 2)] = FNMS(KP342020143, Tk, KP813797681 * Tj) + FNMA(KP150383733, Tl, KP984807753 * Ti) - Tt; Cr[WS(csr, 2)] = FMA(KP173648177, Ti, Th) + FNMA(KP296198132, Tj, KP939692620 * Tk) - (KP852868531 * Tl); } } }
static void n1_14(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, int v, int ivs, int ovs) { DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP781831482, +0.781831482468029808708444526674057750232334519); DK(KP974927912, +0.974927912181823607018131682993931217232785801); int i; for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs) { E T3, Tp, T16, T1f, Ta, T1q, Ts, T10, TG, T1z, T19, T1i, Th, T1s, Tv; E T12, TU, T1B, T17, T1o, To, T1r, Ty, T11, TN, T1A, T18, T1l; { E T1, T2, T14, T15; T1 = ri[0]; T2 = ri[WS(is, 7)]; T3 = T1 - T2; Tp = T1 + T2; T14 = ii[0]; T15 = ii[WS(is, 7)]; T16 = T14 - T15; T1f = T14 + T15; } { E T6, Tq, T9, Tr; { E T4, T5, T7, T8; T4 = ri[WS(is, 2)]; T5 = ri[WS(is, 9)]; T6 = T4 - T5; Tq = T4 + T5; T7 = ri[WS(is, 12)]; T8 = ri[WS(is, 5)]; T9 = T7 - T8; Tr = T7 + T8; } Ta = T6 + T9; T1q = Tr - Tq; Ts = Tq + Tr; T10 = T9 - T6; } { E TC, T1g, TF, T1h; { E TA, TB, TD, TE; TA = ii[WS(is, 2)]; TB = ii[WS(is, 9)]; TC = TA - TB; T1g = TA + TB; TD = ii[WS(is, 12)]; TE = ii[WS(is, 5)]; TF = TD - TE; T1h = TD + TE; } TG = TC - TF; T1z = T1g - T1h; T19 = TC + TF; T1i = T1g + T1h; } { E Td, Tt, Tg, Tu; { E Tb, Tc, Te, Tf; Tb = ri[WS(is, 4)]; Tc = ri[WS(is, 11)]; Td = Tb - Tc; Tt = Tb + Tc; Te = ri[WS(is, 10)]; Tf = ri[WS(is, 3)]; Tg = Te - Tf; Tu = Te + Tf; } Th = Td + Tg; T1s = Tt - Tu; Tv = Tt + Tu; T12 = Tg - Td; } { E TQ, T1m, TT, T1n; { E TO, TP, TR, TS; TO = ii[WS(is, 4)]; TP = ii[WS(is, 11)]; TQ = TO - TP; T1m = TO + TP; TR = ii[WS(is, 10)]; TS = ii[WS(is, 3)]; TT = TR - TS; T1n = TR + TS; } TU = TQ - TT; T1B = T1n - T1m; T17 = TQ + TT; T1o = T1m + T1n; } { E Tk, Tw, Tn, Tx; { E Ti, Tj, Tl, Tm; Ti = ri[WS(is, 6)]; Tj = ri[WS(is, 13)]; Tk = Ti - Tj; Tw = Ti + Tj; Tl = ri[WS(is, 8)]; Tm = ri[WS(is, 1)]; Tn = Tl - Tm; Tx = Tl + Tm; } To = Tk + Tn; T1r = Tw - Tx; Ty = Tw + Tx; T11 = Tn - Tk; } { E TJ, T1j, TM, T1k; { E TH, TI, TK, TL; TH = ii[WS(is, 6)]; TI = ii[WS(is, 13)]; TJ = TH - TI; T1j = TH + TI; TK = ii[WS(is, 8)]; TL = ii[WS(is, 1)]; TM = TK - TL; T1k = TK + TL; } TN = TJ - TM; T1A = T1k - T1j; T18 = TJ + TM; T1l = T1j + T1k; } ro[WS(os, 7)] = T3 + Ta + Th + To; io[WS(os, 7)] = T16 + T19 + T17 + T18; ro[0] = Tp + Ts + Tv + Ty; io[0] = T1f + T1i + T1o + T1l; { E TV, Tz, T1e, T1d; TV = FNMS(KP781831482, TN, KP974927912 * TG) - (KP433883739 * TU); Tz = FMA(KP623489801, To, T3) + FNMA(KP900968867, Th, KP222520933 * Ta); ro[WS(os, 5)] = Tz - TV; ro[WS(os, 9)] = Tz + TV; T1e = FNMS(KP781831482, T11, KP974927912 * T10) - (KP433883739 * T12); T1d = FMA(KP623489801, T18, T16) + FNMA(KP900968867, T17, KP222520933 * T19); io[WS(os, 5)] = T1d - T1e; io[WS(os, 9)] = T1e + T1d; } { E TX, TW, T1b, T1c; TX = FMA(KP781831482, TG, KP974927912 * TU) + (KP433883739 * TN); TW = FMA(KP623489801, Ta, T3) + FNMA(KP900968867, To, KP222520933 * Th); ro[WS(os, 13)] = TW - TX; ro[WS(os, 1)] = TW + TX; T1b = FMA(KP781831482, T10, KP974927912 * T12) + (KP433883739 * T11); T1c = FMA(KP623489801, T19, T16) + FNMA(KP900968867, T18, KP222520933 * T17); io[WS(os, 1)] = T1b + T1c; io[WS(os, 13)] = T1c - T1b; } { E TZ, TY, T13, T1a; TZ = FMA(KP433883739, TG, KP974927912 * TN) - (KP781831482 * TU); TY = FMA(KP623489801, Th, T3) + FNMA(KP222520933, To, KP900968867 * Ta); ro[WS(os, 11)] = TY - TZ; ro[WS(os, 3)] = TY + TZ; T13 = FMA(KP433883739, T10, KP974927912 * T11) - (KP781831482 * T12); T1a = FMA(KP623489801, T17, T16) + FNMA(KP222520933, T18, KP900968867 * T19); io[WS(os, 3)] = T13 + T1a; io[WS(os, 11)] = T1a - T13; } { E T1t, T1p, T1C, T1y; T1t = FNMS(KP433883739, T1r, KP781831482 * T1q) - (KP974927912 * T1s); T1p = FMA(KP623489801, T1i, T1f) + FNMA(KP900968867, T1l, KP222520933 * T1o); io[WS(os, 6)] = T1p - T1t; io[WS(os, 8)] = T1t + T1p; T1C = FNMS(KP433883739, T1A, KP781831482 * T1z) - (KP974927912 * T1B); T1y = FMA(KP623489801, Ts, Tp) + FNMA(KP900968867, Ty, KP222520933 * Tv); ro[WS(os, 6)] = T1y - T1C; ro[WS(os, 8)] = T1y + T1C; } { E T1v, T1u, T1E, T1D; T1v = FMA(KP433883739, T1q, KP781831482 * T1s) - (KP974927912 * T1r); T1u = FMA(KP623489801, T1o, T1f) + FNMA(KP222520933, T1l, KP900968867 * T1i); io[WS(os, 4)] = T1u - T1v; io[WS(os, 10)] = T1v + T1u; T1E = FMA(KP433883739, T1z, KP781831482 * T1B) - (KP974927912 * T1A); T1D = FMA(KP623489801, Tv, Tp) + FNMA(KP222520933, Ty, KP900968867 * Ts); ro[WS(os, 4)] = T1D - T1E; ro[WS(os, 10)] = T1D + T1E; } { E T1w, T1x, T1G, T1F; T1w = FMA(KP974927912, T1q, KP433883739 * T1s) + (KP781831482 * T1r); T1x = FMA(KP623489801, T1l, T1f) + FNMA(KP900968867, T1o, KP222520933 * T1i); io[WS(os, 2)] = T1w + T1x; io[WS(os, 12)] = T1x - T1w; T1G = FMA(KP974927912, T1z, KP433883739 * T1B) + (KP781831482 * T1A); T1F = FMA(KP623489801, Ty, Tp) + FNMA(KP900968867, Tv, KP222520933 * Ts); ro[WS(os, 12)] = T1F - T1G; ro[WS(os, 2)] = T1F + T1G; } } }
static void hb_7(R *cr, R *ci, const R *W, stride rs, INT mb, INT me, INT ms) { DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP781831482, +0.781831482468029808708444526674057750232334519); DK(KP974927912, +0.974927912181823607018131682993931217232785801); DK(KP433883739, +0.433883739117558120475768332848358754609990728); { INT m; for (m = mb, W = W + ((mb - 1) * 12); m < me; m = m + 1, cr = cr + ms, ci = ci - ms, W = W + 12, MAKE_VOLATILE_STRIDE(rs)) { E T1, T4, T7, Ta, Tx, TI, TV, TQ, TE, Tm, Tb, Te, Th, Tk, Tq; E TF, TR, TU, TJ, Tt; { E Tu, Tw, Tv, T2, T3; T1 = cr[0]; T2 = cr[WS(rs, 1)]; T3 = ci[0]; T4 = T2 + T3; Tu = T2 - T3; { E T5, T6, T8, T9; T5 = cr[WS(rs, 2)]; T6 = ci[WS(rs, 1)]; T7 = T5 + T6; Tw = T5 - T6; T8 = cr[WS(rs, 3)]; T9 = ci[WS(rs, 2)]; Ta = T8 + T9; Tv = T8 - T9; } Tx = FMA(KP433883739, Tu, KP974927912 * Tv) - (KP781831482 * Tw); TI = FMA(KP781831482, Tu, KP974927912 * Tw) + (KP433883739 * Tv); TV = FNMS(KP781831482, Tv, KP974927912 * Tu) - (KP433883739 * Tw); TQ = FMA(KP623489801, Ta, T1) + FNMA(KP900968867, T7, KP222520933 * T4); TE = FMA(KP623489801, T4, T1) + FNMA(KP900968867, Ta, KP222520933 * T7); Tm = FMA(KP623489801, T7, T1) + FNMA(KP222520933, Ta, KP900968867 * T4); } { E Tp, Tn, To, Tc, Td; Tb = ci[WS(rs, 6)]; Tc = ci[WS(rs, 5)]; Td = cr[WS(rs, 6)]; Te = Tc - Td; Tp = Tc + Td; { E Tf, Tg, Ti, Tj; Tf = ci[WS(rs, 4)]; Tg = cr[WS(rs, 5)]; Th = Tf - Tg; Tn = Tf + Tg; Ti = ci[WS(rs, 3)]; Tj = cr[WS(rs, 4)]; Tk = Ti - Tj; To = Ti + Tj; } Tq = FNMS(KP974927912, To, KP781831482 * Tn) - (KP433883739 * Tp); TF = FMA(KP781831482, Tp, KP974927912 * Tn) + (KP433883739 * To); TR = FMA(KP433883739, Tn, KP781831482 * To) - (KP974927912 * Tp); TU = FMA(KP623489801, Tk, Tb) + FNMA(KP900968867, Th, KP222520933 * Te); TJ = FMA(KP623489801, Te, Tb) + FNMA(KP900968867, Tk, KP222520933 * Th); Tt = FMA(KP623489801, Th, Tb) + FNMA(KP222520933, Tk, KP900968867 * Te); } cr[0] = T1 + T4 + T7 + Ta; ci[0] = Tb + Te + Th + Tk; { E Tr, Ty, Tl, Ts; Tr = Tm - Tq; Ty = Tt - Tx; Tl = W[6]; Ts = W[7]; cr[WS(rs, 4)] = FNMS(Ts, Ty, Tl * Tr); ci[WS(rs, 4)] = FMA(Tl, Ty, Ts * Tr); } { E TY, T10, TX, TZ; TY = TQ + TR; T10 = TV + TU; TX = W[2]; TZ = W[3]; cr[WS(rs, 2)] = FNMS(TZ, T10, TX * TY); ci[WS(rs, 2)] = FMA(TX, T10, TZ * TY); } { E TA, TC, Tz, TB; TA = Tm + Tq; TC = Tx + Tt; Tz = W[4]; TB = W[5]; cr[WS(rs, 3)] = FNMS(TB, TC, Tz * TA); ci[WS(rs, 3)] = FMA(Tz, TC, TB * TA); } { E TM, TO, TL, TN; TM = TE + TF; TO = TJ - TI; TL = W[10]; TN = W[11]; cr[WS(rs, 6)] = FNMS(TN, TO, TL * TM); ci[WS(rs, 6)] = FMA(TL, TO, TN * TM); } { E TS, TW, TP, TT; TS = TQ - TR; TW = TU - TV; TP = W[8]; TT = W[9]; cr[WS(rs, 5)] = FNMS(TT, TW, TP * TS); ci[WS(rs, 5)] = FMA(TP, TW, TT * TS); } { E TG, TK, TD, TH; TG = TE - TF; TK = TI + TJ; TD = W[0]; TH = W[1]; cr[WS(rs, 1)] = FNMS(TH, TK, TD * TG); ci[WS(rs, 1)] = FMA(TD, TK, TH * TG); } } } }
static void r2cfII_25(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP1_996053456, +1.996053456856543123904673613726901106673810439); DK(KP062790519, +0.062790519529313376076178224565631133122484832); DK(KP125581039, +0.125581039058626752152356449131262266244969664); DK(KP998026728, +0.998026728428271561952336806863450553336905220); DK(KP1_369094211, +1.369094211857377347464566715242418539779038465); DK(KP728968627, +0.728968627421411523146730319055259111372571664); DK(KP963507348, +0.963507348203430549974383005744259307057084020); DK(KP876306680, +0.876306680043863587308115903922062583399064238); DK(KP497379774, +0.497379774329709576484567492012895936835134813); DK(KP968583161, +0.968583161128631119490168375464735813836012403); DK(KP1_457937254, +1.457937254842823046293460638110518222745143328); DK(KP684547105, +0.684547105928688673732283357621209269889519233); DK(KP1_752613360, +1.752613360087727174616231807844125166798128477); DK(KP481753674, +0.481753674101715274987191502872129653528542010); DK(KP1_937166322, +1.937166322257262238980336750929471627672024806); DK(KP248689887, +0.248689887164854788242283746006447968417567406); DK(KP992114701, +0.992114701314477831049793042785778521453036709); DK(KP250666467, +0.250666467128608490746237519633017587885836494); DK(KP1_809654104, +1.809654104932039055427337295865395187940827822); DK(KP425779291, +0.425779291565072648862502445744251703979973042); DK(KP1_541026485, +1.541026485551578461606019272792355694543335344); DK(KP637423989, +0.637423989748689710176712811676016195434917298); DK(KP1_688655851, +1.688655851004030157097116127933363010763318483); DK(KP535826794, +0.535826794978996618271308767867639978063575346); DK(KP851558583, +0.851558583130145297725004891488503407959946084); DK(KP904827052, +0.904827052466019527713668647932697593970413911); DK(KP1_984229402, +1.984229402628955662099586085571557042906073418); DK(KP125333233, +0.125333233564304245373118759816508793942918247); DK(KP1_274847979, +1.274847979497379420353425623352032390869834596); DK(KP770513242, +0.770513242775789230803009636396177847271667672); DK(KP844327925, +0.844327925502015078548558063966681505381659241); DK(KP1_071653589, +1.071653589957993236542617535735279956127150691); DK(KP293892626, +0.293892626146236564584352977319536384298826219); DK(KP475528258, +0.475528258147576786058219666689691071702849317); DK(KP250000000, +0.250000000000000000000000000000000000000000000); DK(KP587785252, +0.587785252292473129168705954639072768597652438); DK(KP951056516, +0.951056516295153572116439333379382143405698634); DK(KP559016994, +0.559016994374947424102293417182819058860154590); { INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(100, rs), MAKE_VOLATILE_STRIDE(100, csr), MAKE_VOLATILE_STRIDE(100, csi)) { E TE, TR, T2i, T1z, TL, TS, TB, T2d, T1l, T1i, T2c, T9, T23, TZ, TW; E T22, Ti, T26, T16, T13, T25, Ts, T2a, T1e, T1b, T29, TP, TQ; { E TK, T1y, TH, T1x; TE = R0[0]; { E TI, TJ, TF, TG; TI = R0[WS(rs, 10)]; TJ = R1[WS(rs, 2)]; TK = TI - TJ; T1y = TI + TJ; TF = R0[WS(rs, 5)]; TG = R1[WS(rs, 7)]; TH = TF - TG; T1x = TF + TG; } TR = KP559016994 * (TH - TK); T2i = FNMS(KP587785252, T1x, KP951056516 * T1y); T1z = FMA(KP951056516, T1x, KP587785252 * T1y); TL = TH + TK; TS = FNMS(KP250000000, TL, TE); } { E Tt, Tw, Tz, TA, T1k, T1j, T1g, T1h; Tt = R0[WS(rs, 3)]; { E Tu, Tv, Tx, Ty; Tu = R0[WS(rs, 8)]; Tv = R1[WS(rs, 10)]; Tw = Tu - Tv; Tx = R1[0]; Ty = R1[WS(rs, 5)]; Tz = Tx + Ty; TA = Tw - Tz; T1k = Ty - Tx; T1j = Tu + Tv; } TB = Tt + TA; T2d = FNMS(KP293892626, T1j, KP475528258 * T1k); T1l = FMA(KP475528258, T1j, KP293892626 * T1k); T1g = FNMS(KP250000000, TA, Tt); T1h = KP559016994 * (Tw + Tz); T1i = T1g + T1h; T2c = T1g - T1h; } { E T1, T4, T7, T8, TY, TX, TU, TV; T1 = R0[WS(rs, 1)]; { E T2, T3, T5, T6; T2 = R0[WS(rs, 6)]; T3 = R1[WS(rs, 8)]; T4 = T2 - T3; T5 = R0[WS(rs, 11)]; T6 = R1[WS(rs, 3)]; T7 = T5 - T6; T8 = T4 + T7; TY = T5 + T6; TX = T2 + T3; } T9 = T1 + T8; T23 = FNMS(KP293892626, TX, KP475528258 * TY); TZ = FMA(KP475528258, TX, KP293892626 * TY); TU = KP559016994 * (T4 - T7); TV = FNMS(KP250000000, T8, T1); TW = TU + TV; T22 = TV - TU; } { E Ta, Td, Tg, Th, T15, T14, T11, T12; Ta = R0[WS(rs, 4)]; { E Tb, Tc, Te, Tf; Tb = R0[WS(rs, 9)]; Tc = R1[WS(rs, 11)]; Td = Tb - Tc; Te = R1[WS(rs, 1)]; Tf = R1[WS(rs, 6)]; Tg = Te + Tf; Th = Td - Tg; T15 = Tf - Te; T14 = Tb + Tc; } Ti = Ta + Th; T26 = FNMS(KP293892626, T14, KP475528258 * T15); T16 = FMA(KP475528258, T14, KP293892626 * T15); T11 = FNMS(KP250000000, Th, Ta); T12 = KP559016994 * (Td + Tg); T13 = T11 + T12; T25 = T11 - T12; } { E Tk, Tn, Tq, Tr, T1d, T1c, T19, T1a; Tk = R0[WS(rs, 2)]; { E Tl, Tm, To, Tp; Tl = R0[WS(rs, 7)]; Tm = R1[WS(rs, 9)]; Tn = Tl - Tm; To = R0[WS(rs, 12)]; Tp = R1[WS(rs, 4)]; Tq = To - Tp; Tr = Tn + Tq; T1d = To + Tp; T1c = Tl + Tm; } Ts = Tk + Tr; T2a = FNMS(KP293892626, T1c, KP475528258 * T1d); T1e = FMA(KP475528258, T1c, KP293892626 * T1d); T19 = KP559016994 * (Tn - Tq); T1a = FNMS(KP250000000, Tr, Tk); T1b = T19 + T1a; T29 = T1a - T19; } TP = TB - Ts; TQ = T9 - Ti; Ci[WS(csi, 2)] = FNMS(KP951056516, TQ, KP587785252 * TP); Ci[WS(csi, 7)] = FMA(KP587785252, TQ, KP951056516 * TP); { E TM, TD, TN, Tj, TC, TO; TM = TE + TL; Tj = T9 + Ti; TC = Ts + TB; TD = KP559016994 * (Tj - TC); TN = Tj + TC; Cr[WS(csr, 12)] = TM + TN; TO = FNMS(KP250000000, TN, TM); Cr[WS(csr, 2)] = TD + TO; Cr[WS(csr, 7)] = TO - TD; } { E TT, T1J, T1Y, T1U, T1X, T1P, T1V, T1M, T1W, T1A, T1B, T1r, T1C, T1v, T18; E T1n, T1o, T1G, T1D; TT = TR + TS; { E T1H, T1I, T1S, T1T; T1H = FNMS(KP844327925, TW, KP1_071653589 * TZ); T1I = FNMS(KP1_274847979, T16, KP770513242 * T13); T1J = T1H - T1I; T1Y = T1H + T1I; T1S = FMA(KP125333233, T1i, KP1_984229402 * T1l); T1T = FMA(KP904827052, T1b, KP851558583 * T1e); T1U = T1S - T1T; T1X = T1T + T1S; } { E T1N, T1O, T1K, T1L; T1N = FMA(KP535826794, TW, KP1_688655851 * TZ); T1O = FMA(KP637423989, T13, KP1_541026485 * T16); T1P = T1N - T1O; T1V = T1N + T1O; T1K = FNMS(KP1_809654104, T1e, KP425779291 * T1b); T1L = FNMS(KP992114701, T1i, KP250666467 * T1l); T1M = T1K - T1L; T1W = T1K + T1L; } { E T1p, T1q, T1t, T1u; T1p = FMA(KP844327925, T13, KP1_071653589 * T16); T1q = FMA(KP248689887, TW, KP1_937166322 * TZ); T1A = T1q + T1p; T1t = FMA(KP481753674, T1b, KP1_752613360 * T1e); T1u = FMA(KP684547105, T1i, KP1_457937254 * T1l); T1B = T1t + T1u; T1r = T1p - T1q; T1C = T1A + T1B; T1v = T1t - T1u; } { E T10, T17, T1f, T1m; T10 = FNMS(KP497379774, TZ, KP968583161 * TW); T17 = FNMS(KP1_688655851, T16, KP535826794 * T13); T18 = T10 + T17; T1f = FNMS(KP963507348, T1e, KP876306680 * T1b); T1m = FNMS(KP1_369094211, T1l, KP728968627 * T1i); T1n = T1f + T1m; T1o = T18 + T1n; T1G = T10 - T17; T1D = T1f - T1m; } { E T1R, T1Q, T20, T1Z; Cr[0] = TT + T1o; Ci[0] = -(T1z + T1C); T1R = KP559016994 * (T1P + T1M); T1Q = FMA(KP250000000, T1M - T1P, TT); Cr[WS(csr, 4)] = FMA(KP951056516, T1J, T1Q) + FMA(KP587785252, T1U, T1R); Cr[WS(csr, 9)] = FMA(KP951056516, T1U, T1Q) + FNMA(KP587785252, T1J, T1R); T20 = KP559016994 * (T1Y + T1X); T1Z = FMA(KP250000000, T1X - T1Y, T1z); Ci[WS(csi, 9)] = FMA(KP587785252, T1V, KP951056516 * T1W) + T1Z - T20; Ci[WS(csi, 4)] = FMA(KP587785252, T1W, T1Z) + FNMS(KP951056516, T1V, T20); { E T1E, T1F, T1s, T1w; T1E = FMS(KP250000000, T1C, T1z); T1F = KP559016994 * (T1B - T1A); Ci[WS(csi, 5)] = FMA(KP951056516, T1D, T1E) + FNMA(KP587785252, T1G, T1F); Ci[WS(csi, 10)] = FMA(KP951056516, T1G, KP587785252 * T1D) + T1E + T1F; T1s = FNMS(KP250000000, T1o, TT); T1w = KP559016994 * (T18 - T1n); Cr[WS(csr, 5)] = FMA(KP587785252, T1r, T1s) + FMS(KP951056516, T1v, T1w); Cr[WS(csr, 10)] = T1w + FMA(KP587785252, T1v, T1s) - (KP951056516 * T1r); } } } { E T21, T2z, T2L, T2K, T2M, T2F, T2P, T2C, T2Q, T2l, T2o, T2p, T2w, T2u, T28; E T2f, T2g, T2s, T2h; T21 = TS - TR; { E T2x, T2y, T2I, T2J; T2x = FNMS(KP844327925, T29, KP1_071653589 * T2a); T2y = FNMS(KP125581039, T2d, KP998026728 * T2c); T2z = T2x + T2y; T2L = T2y - T2x; T2I = FNMS(KP481753674, T22, KP1_752613360 * T23); T2J = FMA(KP904827052, T25, KP851558583 * T26); T2K = T2I + T2J; T2M = T2I - T2J; } { E T2D, T2E, T2A, T2B; T2D = FMA(KP535826794, T29, KP1_688655851 * T2a); T2E = FMA(KP062790519, T2c, KP1_996053456 * T2d); T2F = T2D + T2E; T2P = T2E - T2D; T2A = FMA(KP876306680, T22, KP963507348 * T23); T2B = FNMS(KP425779291, T25, KP1_809654104 * T26); T2C = T2A + T2B; T2Q = T2A - T2B; } { E T2j, T2k, T2m, T2n; T2j = FNMS(KP125333233, T25, KP1_984229402 * T26); T2k = FMA(KP684547105, T22, KP1_457937254 * T23); T2l = T2j - T2k; T2m = FNMS(KP770513242, T2c, KP1_274847979 * T2d); T2n = FMA(KP998026728, T29, KP125581039 * T2a); T2o = T2m - T2n; T2p = T2l + T2o; T2w = T2k + T2j; T2u = T2n + T2m; } { E T24, T27, T2b, T2e; T24 = FNMS(KP1_369094211, T23, KP728968627 * T22); T27 = FMA(KP992114701, T25, KP250666467 * T26); T28 = T24 - T27; T2b = FNMS(KP1_996053456, T2a, KP062790519 * T29); T2e = FMA(KP637423989, T2c, KP1_541026485 * T2d); T2f = T2b - T2e; T2g = T28 + T2f; T2s = T24 + T27; T2h = T2b + T2e; } { E T2H, T2G, T2O, T2N; Cr[WS(csr, 1)] = T21 + T2g; Ci[WS(csi, 1)] = T2p - T2i; T2H = KP559016994 * (T2C - T2F); T2G = FNMS(KP250000000, T2C + T2F, T21); Cr[WS(csr, 8)] = FMA(KP951056516, T2z, T2G) + FNMA(KP587785252, T2K, T2H); Cr[WS(csr, 3)] = FMA(KP951056516, T2K, KP587785252 * T2z) + T2G + T2H; T2O = KP559016994 * (T2M + T2L); T2N = FMA(KP250000000, T2L - T2M, T2i); Ci[WS(csi, 3)] = T2N + FMA(KP587785252, T2P, T2O) - (KP951056516 * T2Q); Ci[WS(csi, 8)] = FMA(KP587785252, T2Q, T2N) + FMS(KP951056516, T2P, T2O); { E T2t, T2v, T2q, T2r; T2t = FNMS(KP250000000, T2g, T21); T2v = KP559016994 * (T28 - T2f); Cr[WS(csr, 6)] = FMA(KP951056516, T2u, T2t) + FNMA(KP587785252, T2w, T2v); Cr[WS(csr, 11)] = FMA(KP951056516, T2w, T2v) + FMA(KP587785252, T2u, T2t); T2q = KP250000000 * T2p; T2r = KP559016994 * (T2l - T2o); Ci[WS(csi, 6)] = FMS(KP951056516, T2h, T2i + T2q) + FNMA(KP587785252, T2s, T2r); Ci[WS(csi, 11)] = FMA(KP951056516, T2s, KP587785252 * T2h) + T2r - (T2i + T2q); } } } } } }
static void r2cfII_15(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP500000000, +0.500000000000000000000000000000000000000000000); DK(KP866025403, +0.866025403784438646763723170752936183471402627); DK(KP809016994, +0.809016994374947424102293417182819058860154590); DK(KP309016994, +0.309016994374947424102293417182819058860154590); DK(KP250000000, +0.250000000000000000000000000000000000000000000); DK(KP559016994, +0.559016994374947424102293417182819058860154590); DK(KP587785252, +0.587785252292473129168705954639072768597652438); DK(KP951056516, +0.951056516295153572116439333379382143405698634); { INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(60, rs), MAKE_VOLATILE_STRIDE(60, csr), MAKE_VOLATILE_STRIDE(60, csi)) { E T1, T2, Tx, TR, TE, T7, TD, Th, Tm, Tr, TQ, TA, TB, Tf, Te; E Tu, TS, Td, TH, TO; T1 = R0[WS(rs, 5)]; { E T3, Tv, T6, Tw, T4, T5; T2 = R0[WS(rs, 2)]; T3 = R1[0]; Tv = T2 + T3; T4 = R1[WS(rs, 3)]; T5 = R1[WS(rs, 6)]; T6 = T4 + T5; Tw = T4 - T5; Tx = FMA(KP951056516, Tv, KP587785252 * Tw); TR = FNMS(KP587785252, Tv, KP951056516 * Tw); TE = KP559016994 * (T3 - T6); T7 = T3 + T6; TD = KP250000000 * T7; } { E Ti, Tl, Tj, Tk, Tp, Tq; Th = R0[0]; Ti = R1[WS(rs, 4)]; Tl = R0[WS(rs, 6)]; Tj = R1[WS(rs, 1)]; Tk = R0[WS(rs, 3)]; Tp = Tk + Ti; Tq = Tl + Tj; Tm = Ti + Tj - (Tk + Tl); Tr = FMA(KP951056516, Tp, KP587785252 * Tq); TQ = FNMS(KP951056516, Tq, KP587785252 * Tp); TA = FMA(KP250000000, Tm, Th); TB = KP559016994 * (Tl + Ti - (Tk + Tj)); } { E T9, Tt, Tc, Ts, Ta, Tb, TG; Tf = R1[WS(rs, 2)]; T9 = R0[WS(rs, 7)]; Te = R1[WS(rs, 5)]; Tt = T9 + Te; Ta = R0[WS(rs, 1)]; Tb = R0[WS(rs, 4)]; Tc = Ta + Tb; Ts = Ta - Tb; Tu = FNMS(KP951056516, Tt, KP587785252 * Ts); TS = FMA(KP951056516, Ts, KP587785252 * Tt); Td = T9 + Tc; TG = KP559016994 * (T9 - Tc); TH = FNMS(KP309016994, Te, TG) + FNMA(KP250000000, Td, Tf); TO = FMS(KP809016994, Te, Tf) + FNMA(KP250000000, Td, TG); } { E Tn, T8, Tg, To; Tn = Th - Tm; T8 = T1 + T2 - T7; Tg = Td - Te - Tf; To = T8 + Tg; Ci[WS(csi, 2)] = KP866025403 * (T8 - Tg); Cr[WS(csr, 2)] = FNMS(KP500000000, To, Tn); Cr[WS(csr, 7)] = Tn + To; } { E TM, TX, TT, TV, TP, TU, TN, TW; TM = TB + TA; TX = KP866025403 * (TR + TS); TT = TR - TS; TV = FMS(KP500000000, TT, TQ); TN = T1 + TE + FNMS(KP809016994, T2, TD); TP = TN + TO; TU = KP866025403 * (TO - TN); Cr[WS(csr, 1)] = TM + TP; Ci[WS(csi, 1)] = TQ + TT; Ci[WS(csi, 6)] = TU - TV; Ci[WS(csi, 3)] = TU + TV; TW = FNMS(KP500000000, TP, TM); Cr[WS(csr, 3)] = TW - TX; Cr[WS(csr, 6)] = TW + TX; } { E Tz, TC, Ty, TK, TI, TL, TF, TJ; Tz = KP866025403 * (Tx + Tu); TC = TA - TB; Ty = Tu - Tx; TK = FMS(KP500000000, Ty, Tr); TF = FMA(KP309016994, T2, T1) + TD - TE; TI = TF + TH; TL = KP866025403 * (TH - TF); Ci[WS(csi, 4)] = Tr + Ty; Cr[WS(csr, 4)] = TC + TI; Ci[WS(csi, 5)] = TK - TL; Ci[0] = TK + TL; TJ = FNMS(KP500000000, TI, TC); Cr[0] = Tz + TJ; Cr[WS(csr, 5)] = TJ - Tz; } } } }
static void r2hc_14(const R *I, R *ro, R *io, stride is, stride ros, stride ios, int v, int ivs, int ovs) { DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP974927912, +0.974927912181823607018131682993931217232785801); DK(KP781831482, +0.781831482468029808708444526674057750232334519); int i; for (i = v; i > 0; i = i - 1, I = I + ivs, ro = ro + ovs, io = io + ovs) { E T3, TB, T6, Tv, Tn, Ts, Tk, Tt, Td, Ty, T9, Tw, Tg, Tz, T1; E T2; T1 = I[0]; T2 = I[WS(is, 7)]; T3 = T1 - T2; TB = T1 + T2; { E T4, T5, Tl, Tm; T4 = I[WS(is, 4)]; T5 = I[WS(is, 11)]; T6 = T4 - T5; Tv = T4 + T5; Tl = I[WS(is, 12)]; Tm = I[WS(is, 5)]; Tn = Tl - Tm; Ts = Tl + Tm; } { E Ti, Tj, Tb, Tc; Ti = I[WS(is, 2)]; Tj = I[WS(is, 9)]; Tk = Ti - Tj; Tt = Ti + Tj; Tb = I[WS(is, 6)]; Tc = I[WS(is, 13)]; Td = Tb - Tc; Ty = Tb + Tc; } { E T7, T8, Te, Tf; T7 = I[WS(is, 10)]; T8 = I[WS(is, 3)]; T9 = T7 - T8; Tw = T7 + T8; Te = I[WS(is, 8)]; Tf = I[WS(is, 1)]; Tg = Te - Tf; Tz = Te + Tf; } { E Tp, Tr, Tq, Ta, To, Th; Tp = Tn - Tk; Tr = Tg - Td; Tq = T9 - T6; io[WS(ios, 1)] = FMA(KP781831482, Tp, KP974927912 * Tq) + (KP433883739 * Tr); io[WS(ios, 5)] = FMA(KP433883739, Tq, KP781831482 * Tr) - (KP974927912 * Tp); io[WS(ios, 3)] = FMA(KP433883739, Tp, KP974927912 * Tr) - (KP781831482 * Tq); Ta = T6 + T9; To = Tk + Tn; Th = Td + Tg; ro[WS(ros, 3)] = FMA(KP623489801, Ta, T3) + FNMA(KP222520933, Th, KP900968867 * To); ro[WS(ros, 7)] = T3 + To + Ta + Th; ro[WS(ros, 1)] = FMA(KP623489801, To, T3) + FNMA(KP900968867, Th, KP222520933 * Ta); ro[WS(ros, 5)] = FMA(KP623489801, Th, T3) + FNMA(KP900968867, Ta, KP222520933 * To); } { E Tu, TA, Tx, TC, TE, TD; Tu = Ts - Tt; TA = Ty - Tz; Tx = Tv - Tw; io[WS(ios, 2)] = FMA(KP974927912, Tu, KP433883739 * Tx) + (KP781831482 * TA); io[WS(ios, 6)] = FMA(KP974927912, Tx, KP433883739 * TA) - (KP781831482 * Tu); io[WS(ios, 4)] = FNMS(KP781831482, Tx, KP974927912 * TA) - (KP433883739 * Tu); TC = Tt + Ts; TE = Tv + Tw; TD = Ty + Tz; ro[WS(ros, 6)] = FMA(KP623489801, TC, TB) + FNMA(KP900968867, TD, KP222520933 * TE); ro[WS(ros, 2)] = FMA(KP623489801, TD, TB) + FNMA(KP900968867, TE, KP222520933 * TC); ro[WS(ros, 4)] = FMA(KP623489801, TE, TB) + FNMA(KP222520933, TD, KP900968867 * TC); ro[0] = TB + TC + TE + TD; } } }
static void n1_11(const float *ri, const float *ii, float *ro, float *io, stride is, stride os, INT v, INT ivs, INT ovs) { DK(KP654860733, +0.654860733945285064056925072466293553183791199); DK(KP142314838, +0.142314838273285140443792668616369668791051361); DK(KP959492973, +0.959492973614497389890368057066327699062454848); DK(KP415415013, +0.415415013001886425529274149229623203524004910); DK(KP841253532, +0.841253532831181168861811648919367717513292498); DK(KP989821441, +0.989821441880932732376092037776718787376519372); DK(KP909631995, +0.909631995354518371411715383079028460060241051); DK(KP281732556, +0.281732556841429697711417915346616899035777899); DK(KP540640817, +0.540640817455597582107635954318691695431770608); DK(KP755749574, +0.755749574354258283774035843972344420179717445); INT i; for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(os)) { E T1, TM, T4, TG, Tk, TR, Tw, TN, T7, TK, Ta, TH, Tn, TQ, Td; E TJ, Tq, TO, Tt, TP, Tg, TI; { E T2, T3, Ti, Tj; T1 = ri[0]; TM = ii[0]; T2 = ri[WS(is, 1)]; T3 = ri[WS(is, 10)]; T4 = T2 + T3; TG = T3 - T2; Ti = ii[WS(is, 1)]; Tj = ii[WS(is, 10)]; Tk = Ti - Tj; TR = Ti + Tj; { E Tu, Tv, T5, T6; Tu = ii[WS(is, 2)]; Tv = ii[WS(is, 9)]; Tw = Tu - Tv; TN = Tu + Tv; T5 = ri[WS(is, 2)]; T6 = ri[WS(is, 9)]; T7 = T5 + T6; TK = T6 - T5; } } { E T8, T9, To, Tp; T8 = ri[WS(is, 3)]; T9 = ri[WS(is, 8)]; Ta = T8 + T9; TH = T9 - T8; { E Tl, Tm, Tb, Tc; Tl = ii[WS(is, 3)]; Tm = ii[WS(is, 8)]; Tn = Tl - Tm; TQ = Tl + Tm; Tb = ri[WS(is, 4)]; Tc = ri[WS(is, 7)]; Td = Tb + Tc; TJ = Tc - Tb; } To = ii[WS(is, 4)]; Tp = ii[WS(is, 7)]; Tq = To - Tp; TO = To + Tp; { E Tr, Ts, Te, Tf; Tr = ii[WS(is, 5)]; Ts = ii[WS(is, 6)]; Tt = Tr - Ts; TP = Tr + Ts; Te = ri[WS(is, 5)]; Tf = ri[WS(is, 6)]; Tg = Te + Tf; TI = Tf - Te; } } { E Tx, Th, TZ, T10; ro[0] = T1 + T4 + T7 + Ta + Td + Tg; io[0] = TM + TR + TN + TQ + TO + TP; Tx = FMA(KP755749574, Tk, KP540640817 * Tn) + FNMS(KP909631995, Tt, KP281732556 * Tq) - (KP989821441 * Tw); Th = FMA(KP841253532, Ta, T1) + FNMS(KP959492973, Td, KP415415013 * Tg) + FNMA(KP142314838, T7, KP654860733 * T4); ro[WS(os, 7)] = Th - Tx; ro[WS(os, 4)] = Th + Tx; TZ = FMA(KP755749574, TG, KP540640817 * TH) + FNMS(KP909631995, TI, KP281732556 * TJ) - (KP989821441 * TK); T10 = FMA(KP841253532, TQ, TM) + FNMS(KP959492973, TO, KP415415013 * TP) + FNMA(KP142314838, TN, KP654860733 * TR); io[WS(os, 4)] = TZ + T10; io[WS(os, 7)] = T10 - TZ; { E TX, TY, Tz, Ty; TX = FMA(KP909631995, TG, KP755749574 * TK) + FNMA(KP540640817, TI, KP989821441 * TJ) - (KP281732556 * TH); TY = FMA(KP415415013, TR, TM) + FNMS(KP142314838, TO, KP841253532 * TP) + FNMA(KP959492973, TQ, KP654860733 * TN); io[WS(os, 2)] = TX + TY; io[WS(os, 9)] = TY - TX; Tz = FMA(KP909631995, Tk, KP755749574 * Tw) + FNMA(KP540640817, Tt, KP989821441 * Tq) - (KP281732556 * Tn); Ty = FMA(KP415415013, T4, T1) + FNMS(KP142314838, Td, KP841253532 * Tg) + FNMA(KP959492973, Ta, KP654860733 * T7); ro[WS(os, 9)] = Ty - Tz; ro[WS(os, 2)] = Ty + Tz; } } { E TB, TA, TT, TU; TB = FMA(KP540640817, Tk, KP909631995 * Tw) + FMA(KP989821441, Tn, KP755749574 * Tq) + (KP281732556 * Tt); TA = FMA(KP841253532, T4, T1) + FNMS(KP959492973, Tg, KP415415013 * T7) + FNMA(KP654860733, Td, KP142314838 * Ta); ro[WS(os, 10)] = TA - TB; ro[WS(os, 1)] = TA + TB; { E TV, TW, TD, TC; TV = FMA(KP540640817, TG, KP909631995 * TK) + FMA(KP989821441, TH, KP755749574 * TJ) + (KP281732556 * TI); TW = FMA(KP841253532, TR, TM) + FNMS(KP959492973, TP, KP415415013 * TN) + FNMA(KP654860733, TO, KP142314838 * TQ); io[WS(os, 1)] = TV + TW; io[WS(os, 10)] = TW - TV; TD = FMA(KP989821441, Tk, KP540640817 * Tq) + FNMS(KP909631995, Tn, KP755749574 * Tt) - (KP281732556 * Tw); TC = FMA(KP415415013, Ta, T1) + FNMS(KP654860733, Tg, KP841253532 * Td) + FNMA(KP959492973, T7, KP142314838 * T4); ro[WS(os, 8)] = TC - TD; ro[WS(os, 3)] = TC + TD; } TT = FMA(KP989821441, TG, KP540640817 * TJ) + FNMS(KP909631995, TH, KP755749574 * TI) - (KP281732556 * TK); TU = FMA(KP415415013, TQ, TM) + FNMS(KP654860733, TP, KP841253532 * TO) + FNMA(KP959492973, TN, KP142314838 * TR); io[WS(os, 3)] = TT + TU; io[WS(os, 8)] = TU - TT; { E TL, TS, TF, TE; TL = FMA(KP281732556, TG, KP755749574 * TH) + FNMS(KP909631995, TJ, KP989821441 * TI) - (KP540640817 * TK); TS = FMA(KP841253532, TN, TM) + FNMS(KP142314838, TP, KP415415013 * TO) + FNMA(KP654860733, TQ, KP959492973 * TR); io[WS(os, 5)] = TL + TS; io[WS(os, 6)] = TS - TL; TF = FMA(KP281732556, Tk, KP755749574 * Tn) + FNMS(KP909631995, Tq, KP989821441 * Tt) - (KP540640817 * Tw); TE = FMA(KP841253532, T7, T1) + FNMS(KP142314838, Tg, KP415415013 * Td) + FNMA(KP654860733, Ta, KP959492973 * T4); ro[WS(os, 6)] = TE - TF; ro[WS(os, 5)] = TE + TF; } } } }
static void r2cf_14(R *R0, R *R1, R *Cr, R *Ci, stride rs, stride csr, stride csi, INT v, INT ivs, INT ovs) { DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP974927912, +0.974927912181823607018131682993931217232785801); DK(KP781831482, +0.781831482468029808708444526674057750232334519); { INT i; for (i = v; i > 0; i = i - 1, R0 = R0 + ivs, R1 = R1 + ivs, Cr = Cr + ovs, Ci = Ci + ovs, MAKE_VOLATILE_STRIDE(rs), MAKE_VOLATILE_STRIDE(csr), MAKE_VOLATILE_STRIDE(csi)) { E T3, TB, T6, Tv, Tn, Ts, Tk, Tt, Td, Ty, T9, Tw, Tg, Tz, T1; E T2; T1 = R0[0]; T2 = R1[WS(rs, 3)]; T3 = T1 - T2; TB = T1 + T2; { E T4, T5, Tl, Tm; T4 = R0[WS(rs, 2)]; T5 = R1[WS(rs, 5)]; T6 = T4 - T5; Tv = T4 + T5; Tl = R0[WS(rs, 6)]; Tm = R1[WS(rs, 2)]; Tn = Tl - Tm; Ts = Tl + Tm; } { E Ti, Tj, Tb, Tc; Ti = R0[WS(rs, 1)]; Tj = R1[WS(rs, 4)]; Tk = Ti - Tj; Tt = Ti + Tj; Tb = R0[WS(rs, 3)]; Tc = R1[WS(rs, 6)]; Td = Tb - Tc; Ty = Tb + Tc; } { E T7, T8, Te, Tf; T7 = R0[WS(rs, 5)]; T8 = R1[WS(rs, 1)]; T9 = T7 - T8; Tw = T7 + T8; Te = R0[WS(rs, 4)]; Tf = R1[0]; Tg = Te - Tf; Tz = Te + Tf; } { E Tp, Tr, Tq, Ta, To, Th; Tp = Tn - Tk; Tr = Tg - Td; Tq = T9 - T6; Ci[WS(csi, 1)] = FMA(KP781831482, Tp, KP974927912 * Tq) + (KP433883739 * Tr); Ci[WS(csi, 5)] = FMA(KP433883739, Tq, KP781831482 * Tr) - (KP974927912 * Tp); Ci[WS(csi, 3)] = FMA(KP433883739, Tp, KP974927912 * Tr) - (KP781831482 * Tq); Ta = T6 + T9; To = Tk + Tn; Th = Td + Tg; Cr[WS(csr, 3)] = FMA(KP623489801, Ta, T3) + FNMA(KP222520933, Th, KP900968867 * To); Cr[WS(csr, 7)] = T3 + To + Ta + Th; Cr[WS(csr, 1)] = FMA(KP623489801, To, T3) + FNMA(KP900968867, Th, KP222520933 * Ta); Cr[WS(csr, 5)] = FMA(KP623489801, Th, T3) + FNMA(KP900968867, Ta, KP222520933 * To); } { E Tu, TA, Tx, TC, TE, TD; Tu = Ts - Tt; TA = Ty - Tz; Tx = Tv - Tw; Ci[WS(csi, 2)] = FMA(KP974927912, Tu, KP433883739 * Tx) + (KP781831482 * TA); Ci[WS(csi, 6)] = FMA(KP974927912, Tx, KP433883739 * TA) - (KP781831482 * Tu); Ci[WS(csi, 4)] = FNMS(KP781831482, Tx, KP974927912 * TA) - (KP433883739 * Tu); TC = Tt + Ts; TE = Tv + Tw; TD = Ty + Tz; Cr[WS(csr, 6)] = FMA(KP623489801, TC, TB) + FNMA(KP900968867, TD, KP222520933 * TE); Cr[WS(csr, 2)] = FMA(KP623489801, TD, TB) + FNMA(KP900968867, TE, KP222520933 * TC); Cr[WS(csr, 4)] = FMA(KP623489801, TE, TB) + FNMA(KP222520933, TD, KP900968867 * TC); Cr[0] = TB + TC + TE + TD; } } } }
static void n1_7(const R *ri, const R *ii, R *ro, R *io, stride is, stride os, INT v, INT ivs, INT ovs) { DK(KP222520933, +0.222520933956314404288902564496794759466355569); DK(KP900968867, +0.900968867902419126236102319507445051165919162); DK(KP623489801, +0.623489801858733530525004884004239810632274731); DK(KP433883739, +0.433883739117558120475768332848358754609990728); DK(KP781831482, +0.781831482468029808708444526674057750232334519); DK(KP974927912, +0.974927912181823607018131682993931217232785801); INT i; for (i = v; i > 0; i = i - 1, ri = ri + ivs, ii = ii + ivs, ro = ro + ovs, io = io + ovs, MAKE_VOLATILE_STRIDE(is), MAKE_VOLATILE_STRIDE(os)) { E T1, Tu, T4, Tq, Te, Tx, T7, Ts, Tk, Tv, Ta, Tr, Th, Tw; T1 = ri[0]; Tu = ii[0]; { E T2, T3, Tc, Td; T2 = ri[WS(is, 1)]; T3 = ri[WS(is, 6)]; T4 = T2 + T3; Tq = T3 - T2; Tc = ii[WS(is, 1)]; Td = ii[WS(is, 6)]; Te = Tc - Td; Tx = Tc + Td; } { E T5, T6, Ti, Tj; T5 = ri[WS(is, 2)]; T6 = ri[WS(is, 5)]; T7 = T5 + T6; Ts = T6 - T5; Ti = ii[WS(is, 2)]; Tj = ii[WS(is, 5)]; Tk = Ti - Tj; Tv = Ti + Tj; } { E T8, T9, Tf, Tg; T8 = ri[WS(is, 3)]; T9 = ri[WS(is, 4)]; Ta = T8 + T9; Tr = T9 - T8; Tf = ii[WS(is, 3)]; Tg = ii[WS(is, 4)]; Th = Tf - Tg; Tw = Tf + Tg; } ro[0] = T1 + T4 + T7 + Ta; io[0] = Tu + Tx + Tv + Tw; { E Tl, Tb, TB, TC; Tl = FNMS(KP781831482, Th, KP974927912 * Te) - (KP433883739 * Tk); Tb = FMA(KP623489801, Ta, T1) + FNMA(KP900968867, T7, KP222520933 * T4); ro[WS(os, 5)] = Tb - Tl; ro[WS(os, 2)] = Tb + Tl; TB = FNMS(KP781831482, Tr, KP974927912 * Tq) - (KP433883739 * Ts); TC = FMA(KP623489801, Tw, Tu) + FNMA(KP900968867, Tv, KP222520933 * Tx); io[WS(os, 2)] = TB + TC; io[WS(os, 5)] = TC - TB; } { E Tn, Tm, Tz, TA; Tn = FMA(KP781831482, Te, KP974927912 * Tk) + (KP433883739 * Th); Tm = FMA(KP623489801, T4, T1) + FNMA(KP900968867, Ta, KP222520933 * T7); ro[WS(os, 6)] = Tm - Tn; ro[WS(os, 1)] = Tm + Tn; Tz = FMA(KP781831482, Tq, KP974927912 * Ts) + (KP433883739 * Tr); TA = FMA(KP623489801, Tx, Tu) + FNMA(KP900968867, Tw, KP222520933 * Tv); io[WS(os, 1)] = Tz + TA; io[WS(os, 6)] = TA - Tz; } { E Tp, To, Tt, Ty; Tp = FMA(KP433883739, Te, KP974927912 * Th) - (KP781831482 * Tk); To = FMA(KP623489801, T7, T1) + FNMA(KP222520933, Ta, KP900968867 * T4); ro[WS(os, 4)] = To - Tp; ro[WS(os, 3)] = To + Tp; Tt = FMA(KP433883739, Tq, KP974927912 * Tr) - (KP781831482 * Ts); Ty = FMA(KP623489801, Tv, Tu) + FNMA(KP222520933, Tw, KP900968867 * Tx); io[WS(os, 3)] = Tt + Ty; io[WS(os, 4)] = Ty - Tt; } } }
static void r2hcII_15(const R *I, R *ro, R *io, stride is, stride ros, stride ios, int v, int ivs, int ovs) { DK(KP500000000, +0.500000000000000000000000000000000000000000000); DK(KP866025403, +0.866025403784438646763723170752936183471402627); DK(KP809016994, +0.809016994374947424102293417182819058860154590); DK(KP309016994, +0.309016994374947424102293417182819058860154590); DK(KP250000000, +0.250000000000000000000000000000000000000000000); DK(KP559016994, +0.559016994374947424102293417182819058860154590); DK(KP587785252, +0.587785252292473129168705954639072768597652438); DK(KP951056516, +0.951056516295153572116439333379382143405698634); int i; for (i = v; i > 0; i = i - 1, I = I + ivs, ro = ro + ovs, io = io + ovs) { E T1, T2, Tx, TR, TE, T7, TD, Th, Tm, Tr, TQ, TA, TB, Tf, Te; E Tu, TS, Td, TH, TO; T1 = I[WS(is, 10)]; { E T3, Tv, T6, Tw, T4, T5; T2 = I[WS(is, 4)]; T3 = I[WS(is, 1)]; Tv = T2 + T3; T4 = I[WS(is, 7)]; T5 = I[WS(is, 13)]; T6 = T4 + T5; Tw = T4 - T5; Tx = FMA(KP951056516, Tv, KP587785252 * Tw); TR = FNMS(KP587785252, Tv, KP951056516 * Tw); TE = KP559016994 * (T3 - T6); T7 = T3 + T6; TD = KP250000000 * T7; } { E Ti, Tl, Tj, Tk, Tp, Tq; Th = I[0]; Ti = I[WS(is, 9)]; Tl = I[WS(is, 12)]; Tj = I[WS(is, 3)]; Tk = I[WS(is, 6)]; Tp = Tk + Ti; Tq = Tl + Tj; Tm = Ti + Tj - (Tk + Tl); Tr = FMA(KP951056516, Tp, KP587785252 * Tq); TQ = FNMS(KP951056516, Tq, KP587785252 * Tp); TA = FMA(KP250000000, Tm, Th); TB = KP559016994 * (Tl + Ti - (Tk + Tj)); } { E T9, Tt, Tc, Ts, Ta, Tb, TG; Tf = I[WS(is, 5)]; T9 = I[WS(is, 14)]; Te = I[WS(is, 11)]; Tt = T9 + Te; Ta = I[WS(is, 2)]; Tb = I[WS(is, 8)]; Tc = Ta + Tb; Ts = Ta - Tb; Tu = FNMS(KP951056516, Tt, KP587785252 * Ts); TS = FMA(KP951056516, Ts, KP587785252 * Tt); Td = T9 + Tc; TG = KP559016994 * (T9 - Tc); TH = FNMS(KP309016994, Te, TG) + FNMA(KP250000000, Td, Tf); TO = FMS(KP809016994, Te, Tf) + FNMA(KP250000000, Td, TG); } { E Tn, T8, Tg, To; Tn = Th - Tm; T8 = T1 + T2 - T7; Tg = Td - Te - Tf; To = T8 + Tg; io[WS(ios, 2)] = KP866025403 * (T8 - Tg); ro[WS(ros, 2)] = FNMS(KP500000000, To, Tn); ro[WS(ros, 7)] = Tn + To; } { E TM, TX, TT, TV, TP, TU, TN, TW; TM = TB + TA; TX = KP866025403 * (TR + TS); TT = TR - TS; TV = FMS(KP500000000, TT, TQ); TN = T1 + TE + FNMS(KP809016994, T2, TD); TP = TN + TO; TU = KP866025403 * (TO - TN); ro[WS(ros, 1)] = TM + TP; io[WS(ios, 1)] = TQ + TT; io[WS(ios, 6)] = TU - TV; io[WS(ios, 3)] = TU + TV; TW = FNMS(KP500000000, TP, TM); ro[WS(ros, 3)] = TW - TX; ro[WS(ros, 6)] = TW + TX; } { E Tz, TC, Ty, TK, TI, TL, TF, TJ; Tz = KP866025403 * (Tx + Tu); TC = TA - TB; Ty = Tu - Tx; TK = FMS(KP500000000, Ty, Tr); TF = FMA(KP309016994, T2, T1) + TD - TE; TI = TF + TH; TL = KP866025403 * (TH - TF); io[WS(ios, 4)] = Tr + Ty; ro[WS(ros, 4)] = TC + TI; io[WS(ios, 5)] = TK - TL; io[0] = TK + TL; TJ = FNMS(KP500000000, TI, TC); ro[0] = Tz + TJ; ro[WS(ros, 5)] = TJ - Tz; } } }