#define SIMDE_TEST_X86_AVX512_INSN scalef #include #include static int test_simde_mm_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 a[4]; const simde_float32 b[4]; const simde_float32 r[4]; } test_vec[] = { { { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -574.44), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 524.22) }, { SIMDE_FLOAT32_C( 500.85), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 876.76) }, { SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 919.28), SIMDE_FLOAT32_C( -131.68), SIMDE_FLOAT32_C( -977.50), SIMDE_FLOAT32_C( -661.80) }, { SIMDE_FLOAT32_C( 737.41), SIMDE_FLOAT32_C( -540.20), SIMDE_FLOAT32_C( 308.25), SIMDE_FLOAT32_C( 444.32) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 0.37), SIMDE_FLOAT32_C( 498.31), SIMDE_FLOAT32_C( 33.05), SIMDE_FLOAT32_C( -256.10) }, { SIMDE_FLOAT32_C( -472.78), SIMDE_FLOAT32_C( -591.57), SIMDE_FLOAT32_C( -2.46), SIMDE_FLOAT32_C( -254.61) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 4.13), SIMDE_FLOAT32_C( -0.00) } }, { { SIMDE_FLOAT32_C( 931.71), SIMDE_FLOAT32_C( -418.21), SIMDE_FLOAT32_C( 348.08), SIMDE_FLOAT32_C( 395.26) }, { SIMDE_FLOAT32_C( -506.53), SIMDE_FLOAT32_C( 75.82), SIMDE_FLOAT32_C( 809.38), SIMDE_FLOAT32_C( 887.05) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-15799526771589293308641280.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 501.38), SIMDE_FLOAT32_C( -77.34), SIMDE_FLOAT32_C( 411.27), SIMDE_FLOAT32_C( 2.23) }, { SIMDE_FLOAT32_C( 996.51), SIMDE_FLOAT32_C( 522.28), SIMDE_FLOAT32_C( -121.01), SIMDE_FLOAT32_C( 915.79) }, { SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -609.41), SIMDE_FLOAT32_C( -98.51), SIMDE_FLOAT32_C( -746.01), SIMDE_FLOAT32_C( -872.00) }, { SIMDE_FLOAT32_C( 361.29), SIMDE_FLOAT32_C( 562.24), SIMDE_FLOAT32_C( 572.32), SIMDE_FLOAT32_C( -638.34) }, { -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00) } }, { { SIMDE_FLOAT32_C( 60.55), SIMDE_FLOAT32_C( -394.64), SIMDE_FLOAT32_C( 105.57), SIMDE_FLOAT32_C( 587.77) }, { SIMDE_FLOAT32_C( 13.80), SIMDE_FLOAT32_C( -896.90), SIMDE_FLOAT32_C( -666.83), SIMDE_FLOAT32_C( -54.49) }, { SIMDE_FLOAT32_C(496025.59), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( -315.11), SIMDE_FLOAT32_C( 681.24), SIMDE_FLOAT32_C( -659.23), SIMDE_FLOAT32_C( 178.37) }, { SIMDE_FLOAT32_C( -242.94), SIMDE_FLOAT32_C( -849.85), SIMDE_FLOAT32_C( 65.41), SIMDE_FLOAT32_C( -741.55) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-24321293470847155044352.00), SIMDE_FLOAT32_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128 a = simde_mm_loadu_ps(test_vec[i].a); simde__m128 b = simde_mm_loadu_ps(test_vec[i].b); simde__m128 r = simde_mm_scalef_ps(a, b); simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x4_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values); simde__m128 b = simde_test_x86_random_extract_f32x4(i, 2, 1, values); simde__m128 r = simde_mm_scalef_ps(a, b); simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_mask_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 src[4]; const simde__mmask8 k; const simde_float32 a[4]; const simde_float32 b[4]; const simde_float32 r[4]; } test_vec[] = { { { SIMDE_FLOAT32_C( 510.80), SIMDE_FLOAT32_C( 70.72), SIMDE_FLOAT32_C( -240.36), SIMDE_FLOAT32_C( 667.59) }, UINT8_C(167), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 120.08), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 803.63) }, { SIMDE_FLOAT32_C( -971.21), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -397.24) }, { SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 667.59) } }, { { SIMDE_FLOAT32_C( -527.36), SIMDE_FLOAT32_C( 207.05), SIMDE_FLOAT32_C( 888.57), SIMDE_FLOAT32_C( 676.31) }, UINT8_C(209), { SIMDE_FLOAT32_C( 382.67), SIMDE_FLOAT32_C( -251.21), SIMDE_FLOAT32_C( 490.66), SIMDE_FLOAT32_C( 276.18) }, { SIMDE_FLOAT32_C( -493.35), SIMDE_FLOAT32_C( 664.91), SIMDE_FLOAT32_C( -894.03), SIMDE_FLOAT32_C( -245.08) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 207.05), SIMDE_FLOAT32_C( 888.57), SIMDE_FLOAT32_C( 676.31) } }, { { SIMDE_FLOAT32_C( 178.54), SIMDE_FLOAT32_C( -455.11), SIMDE_FLOAT32_C( -55.71), SIMDE_FLOAT32_C( 223.43) }, UINT8_C(149), { SIMDE_FLOAT32_C( 651.73), SIMDE_FLOAT32_C( 452.73), SIMDE_FLOAT32_C( 119.59), SIMDE_FLOAT32_C( -408.37) }, { SIMDE_FLOAT32_C( 720.80), SIMDE_FLOAT32_C( 390.12), SIMDE_FLOAT32_C( 263.08), SIMDE_FLOAT32_C( 973.63) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -455.11), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 223.43) } }, { { SIMDE_FLOAT32_C( 318.63), SIMDE_FLOAT32_C( -612.09), SIMDE_FLOAT32_C( -822.85), SIMDE_FLOAT32_C( 413.77) }, UINT8_C( 59), { SIMDE_FLOAT32_C( -230.03), SIMDE_FLOAT32_C( -651.76), SIMDE_FLOAT32_C( -462.21), SIMDE_FLOAT32_C( 420.82) }, { SIMDE_FLOAT32_C( 320.60), SIMDE_FLOAT32_C( 961.38), SIMDE_FLOAT32_C( -871.21), SIMDE_FLOAT32_C( 611.61) }, { -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -822.85), SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -447.83), SIMDE_FLOAT32_C( 482.54), SIMDE_FLOAT32_C( -732.93), SIMDE_FLOAT32_C( 275.44) }, UINT8_C(204), { SIMDE_FLOAT32_C( 81.46), SIMDE_FLOAT32_C( -363.38), SIMDE_FLOAT32_C( 415.25), SIMDE_FLOAT32_C( 110.24) }, { SIMDE_FLOAT32_C( -843.21), SIMDE_FLOAT32_C( -965.47), SIMDE_FLOAT32_C( 713.00), SIMDE_FLOAT32_C( 539.46) }, { SIMDE_FLOAT32_C( -447.83), SIMDE_FLOAT32_C( 482.54), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 12.45), SIMDE_FLOAT32_C( 319.29), SIMDE_FLOAT32_C( -342.96), SIMDE_FLOAT32_C( 886.63) }, UINT8_C( 98), { SIMDE_FLOAT32_C( -216.68), SIMDE_FLOAT32_C( 203.67), SIMDE_FLOAT32_C( -184.36), SIMDE_FLOAT32_C( 289.97) }, { SIMDE_FLOAT32_C( -131.42), SIMDE_FLOAT32_C( -78.39), SIMDE_FLOAT32_C( -955.11), SIMDE_FLOAT32_C( -479.68) }, { SIMDE_FLOAT32_C( 12.45), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -342.96), SIMDE_FLOAT32_C( 886.63) } }, { { SIMDE_FLOAT32_C( -693.57), SIMDE_FLOAT32_C( 397.43), SIMDE_FLOAT32_C( -954.51), SIMDE_FLOAT32_C( 66.07) }, UINT8_C(115), { SIMDE_FLOAT32_C( -625.66), SIMDE_FLOAT32_C( 164.48), SIMDE_FLOAT32_C( 111.94), SIMDE_FLOAT32_C( -904.86) }, { SIMDE_FLOAT32_C( -445.41), SIMDE_FLOAT32_C( -624.98), SIMDE_FLOAT32_C( -931.23), SIMDE_FLOAT32_C( 324.57) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -954.51), SIMDE_FLOAT32_C( 66.07) } }, { { SIMDE_FLOAT32_C( 150.74), SIMDE_FLOAT32_C( 538.71), SIMDE_FLOAT32_C( -727.93), SIMDE_FLOAT32_C( 39.30) }, UINT8_C(225), { SIMDE_FLOAT32_C( -276.74), SIMDE_FLOAT32_C( -393.44), SIMDE_FLOAT32_C( -254.61), SIMDE_FLOAT32_C( -956.14) }, { SIMDE_FLOAT32_C( -432.06), SIMDE_FLOAT32_C( -125.82), SIMDE_FLOAT32_C( 655.47), SIMDE_FLOAT32_C( 649.39) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 538.71), SIMDE_FLOAT32_C( -727.93), SIMDE_FLOAT32_C( 39.30) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128 src = simde_mm_loadu_ps(test_vec[i].src); simde__m128 a = simde_mm_loadu_ps(test_vec[i].a); simde__m128 b = simde_mm_loadu_ps(test_vec[i].b); simde__m128 r = simde_mm_mask_scalef_ps(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x4_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128 src = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values); simde__m128 b = simde_test_x86_random_extract_f32x4(i, 2, 1, values); simde__m128 r = simde_mm_mask_scalef_ps(src, k, a, b); simde_test_x86_write_f32x4(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_maskz_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float32 a[4]; const simde_float32 b[4]; const simde_float32 r[4]; } test_vec[] = { { UINT8_C( 8), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -782.16), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 239.05) }, { SIMDE_FLOAT32_C( 441.27), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 829.17) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { UINT8_C(212), { SIMDE_FLOAT32_C( 2.27), SIMDE_FLOAT32_C( 971.45), SIMDE_FLOAT32_C( -228.33), SIMDE_FLOAT32_C( 554.45) }, { SIMDE_FLOAT32_C( 453.99), SIMDE_FLOAT32_C( 38.74), SIMDE_FLOAT32_C( -170.12), SIMDE_FLOAT32_C( 543.09) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT8_C(142), { SIMDE_FLOAT32_C( -948.81), SIMDE_FLOAT32_C( -850.82), SIMDE_FLOAT32_C( -799.87), SIMDE_FLOAT32_C( 937.82) }, { SIMDE_FLOAT32_C( 123.94), SIMDE_FLOAT32_C( -493.44), SIMDE_FLOAT32_C( 335.26), SIMDE_FLOAT32_C( 169.43) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF } }, { UINT8_C( 34), { SIMDE_FLOAT32_C( 572.63), SIMDE_FLOAT32_C( -599.72), SIMDE_FLOAT32_C( -679.83), SIMDE_FLOAT32_C( 111.33) }, { SIMDE_FLOAT32_C( -327.65), SIMDE_FLOAT32_C( 359.47), SIMDE_FLOAT32_C( -673.65), SIMDE_FLOAT32_C( -32.89) }, { SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT8_C(185), { SIMDE_FLOAT32_C( 577.31), SIMDE_FLOAT32_C( -913.73), SIMDE_FLOAT32_C( -793.84), SIMDE_FLOAT32_C( 18.58) }, { SIMDE_FLOAT32_C( -88.61), SIMDE_FLOAT32_C( -236.15), SIMDE_FLOAT32_C( -152.25), SIMDE_FLOAT32_C( 913.66) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { UINT8_C(110), { SIMDE_FLOAT32_C( -264.70), SIMDE_FLOAT32_C( 619.42), SIMDE_FLOAT32_C( 468.11), SIMDE_FLOAT32_C( -810.71) }, { SIMDE_FLOAT32_C( -341.84), SIMDE_FLOAT32_C( -702.01), SIMDE_FLOAT32_C( 732.39), SIMDE_FLOAT32_C( -290.65) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00) } }, { UINT8_C( 76), { SIMDE_FLOAT32_C( -552.83), SIMDE_FLOAT32_C( 932.51), SIMDE_FLOAT32_C( -352.83), SIMDE_FLOAT32_C( 571.11) }, { SIMDE_FLOAT32_C( -560.93), SIMDE_FLOAT32_C( 982.43), SIMDE_FLOAT32_C( -259.45), SIMDE_FLOAT32_C( -988.30) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT8_C(172), { SIMDE_FLOAT32_C( -617.29), SIMDE_FLOAT32_C( 60.71), SIMDE_FLOAT32_C( 123.03), SIMDE_FLOAT32_C( 55.06) }, { SIMDE_FLOAT32_C( -579.82), SIMDE_FLOAT32_C( 449.39), SIMDE_FLOAT32_C( -977.83), SIMDE_FLOAT32_C( 997.49) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128 a = simde_mm_loadu_ps(test_vec[i].a); simde__m128 b = simde_mm_loadu_ps(test_vec[i].b); simde__m128 r = simde_mm_maskz_scalef_ps(test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x4_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values); simde__m128 b = simde_test_x86_random_extract_f32x4(i, 2, 1, values); simde__m128 r = simde_mm_maskz_scalef_ps(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm256_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 a[8]; const simde_float32 b[8]; const simde_float32 r[8]; } test_vec[] = { { { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 39.06), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 879.22), SIMDE_FLOAT32_C( 799.85), SIMDE_FLOAT32_C( 98.16), SIMDE_FLOAT32_C( 360.53), SIMDE_FLOAT32_C( 817.25) }, { SIMDE_FLOAT32_C( 981.76), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -177.33), SIMDE_FLOAT32_C( -885.94), SIMDE_FLOAT32_C( 138.17), SIMDE_FLOAT32_C( 764.91), SIMDE_FLOAT32_C( -195.41) }, { SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( 860.80), SIMDE_FLOAT32_C( -750.11), SIMDE_FLOAT32_C( -210.97), SIMDE_FLOAT32_C( 614.29), SIMDE_FLOAT32_C( 913.44), SIMDE_FLOAT32_C( 400.13), SIMDE_FLOAT32_C( 801.72), SIMDE_FLOAT32_C( 828.58) }, { SIMDE_FLOAT32_C( -995.54), SIMDE_FLOAT32_C( 953.74), SIMDE_FLOAT32_C( 674.22), SIMDE_FLOAT32_C( 219.06), SIMDE_FLOAT32_C( 633.43), SIMDE_FLOAT32_C( -596.99), SIMDE_FLOAT32_C( -149.83), SIMDE_FLOAT32_C( -755.25) }, { SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( 442.07), SIMDE_FLOAT32_C( 493.98), SIMDE_FLOAT32_C( -876.03), SIMDE_FLOAT32_C( 241.92), SIMDE_FLOAT32_C( -407.86), SIMDE_FLOAT32_C( 484.50), SIMDE_FLOAT32_C( 59.17), SIMDE_FLOAT32_C( -426.10) }, { SIMDE_FLOAT32_C( -934.67), SIMDE_FLOAT32_C( 908.49), SIMDE_FLOAT32_C( 396.57), SIMDE_FLOAT32_C( -820.61), SIMDE_FLOAT32_C( 46.66), SIMDE_FLOAT32_C( 161.48), SIMDE_FLOAT32_C( -16.02), SIMDE_FLOAT32_C( -92.54) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-28700594969509888.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00) } }, { { SIMDE_FLOAT32_C( 411.36), SIMDE_FLOAT32_C( 773.01), SIMDE_FLOAT32_C( -478.24), SIMDE_FLOAT32_C( 324.81), SIMDE_FLOAT32_C( 173.14), SIMDE_FLOAT32_C( -676.52), SIMDE_FLOAT32_C( 153.39), SIMDE_FLOAT32_C( 177.60) }, { SIMDE_FLOAT32_C( -722.78), SIMDE_FLOAT32_C( -172.39), SIMDE_FLOAT32_C( -603.34), SIMDE_FLOAT32_C( 910.65), SIMDE_FLOAT32_C( 230.62), SIMDE_FLOAT32_C( 246.83), SIMDE_FLOAT32_C( -844.60), SIMDE_FLOAT32_C( -327.31) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( -259.19), SIMDE_FLOAT32_C( -720.63), SIMDE_FLOAT32_C( 914.61), SIMDE_FLOAT32_C( 332.96), SIMDE_FLOAT32_C( 763.88), SIMDE_FLOAT32_C( -26.22), SIMDE_FLOAT32_C( 906.86), SIMDE_FLOAT32_C( 829.21) }, { SIMDE_FLOAT32_C( -117.73), SIMDE_FLOAT32_C( 303.42), SIMDE_FLOAT32_C( -991.40), SIMDE_FLOAT32_C( 928.93), SIMDE_FLOAT32_C( -535.10), SIMDE_FLOAT32_C( -7.42), SIMDE_FLOAT32_C( -163.61), SIMDE_FLOAT32_C( 876.26) }, { SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.10), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -234.41), SIMDE_FLOAT32_C( 358.15), SIMDE_FLOAT32_C( 201.07), SIMDE_FLOAT32_C( 938.74), SIMDE_FLOAT32_C( 681.63), SIMDE_FLOAT32_C( -645.54), SIMDE_FLOAT32_C( 116.33), SIMDE_FLOAT32_C( 958.85) }, { SIMDE_FLOAT32_C( 182.07), SIMDE_FLOAT32_C( 513.00), SIMDE_FLOAT32_C( 869.50), SIMDE_FLOAT32_C( -587.31), SIMDE_FLOAT32_C( -240.17), SIMDE_FLOAT32_C( -975.09), SIMDE_FLOAT32_C( 85.37), SIMDE_FLOAT32_C( 500.64) }, { -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C(4500298969900131223638900736.00), SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -695.72), SIMDE_FLOAT32_C( -0.02), SIMDE_FLOAT32_C( -166.40), SIMDE_FLOAT32_C( -931.84), SIMDE_FLOAT32_C( 973.75), SIMDE_FLOAT32_C( -259.54), SIMDE_FLOAT32_C( 897.36), SIMDE_FLOAT32_C( -143.98) }, { SIMDE_FLOAT32_C( -956.12), SIMDE_FLOAT32_C( 905.96), SIMDE_FLOAT32_C( -215.05), SIMDE_FLOAT32_C( -491.22), SIMDE_FLOAT32_C( -101.46), SIMDE_FLOAT32_C( 621.35), SIMDE_FLOAT32_C( -614.96), SIMDE_FLOAT32_C( 664.13) }, { SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -20.50), SIMDE_FLOAT32_C( 586.11), SIMDE_FLOAT32_C( 602.87), SIMDE_FLOAT32_C( -338.88), SIMDE_FLOAT32_C( 940.58), SIMDE_FLOAT32_C( -280.80), SIMDE_FLOAT32_C( -380.03), SIMDE_FLOAT32_C( 122.65) }, { SIMDE_FLOAT32_C( -767.80), SIMDE_FLOAT32_C( -510.52), SIMDE_FLOAT32_C( 535.33), SIMDE_FLOAT32_C( -7.97), SIMDE_FLOAT32_C( -485.61), SIMDE_FLOAT32_C( -379.29), SIMDE_FLOAT32_C( -507.33), SIMDE_FLOAT32_C( -181.33) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -1.32), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a); simde__m256 b = simde_mm256_loadu_ps(test_vec[i].b); simde__m256 r = simde_mm256_scalef_ps(a, b); simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x8_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m256 a = simde_test_x86_random_extract_f32x8(i, 2, 0, values); simde__m256 b = simde_test_x86_random_extract_f32x8(i, 2, 1, values); simde__m256 r = simde_mm256_scalef_ps(a, b); simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm256_mask_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 src[8]; const simde__mmask8 k; const simde_float32 a[8]; const simde_float32 b[8]; const simde_float32 r[8]; } test_vec[] = { { { SIMDE_FLOAT32_C( 867.27), SIMDE_FLOAT32_C( -634.46), SIMDE_FLOAT32_C( -222.00), SIMDE_FLOAT32_C( -962.68), SIMDE_FLOAT32_C( 917.78), SIMDE_FLOAT32_C( -612.70), SIMDE_FLOAT32_C( -579.88), SIMDE_FLOAT32_C( -888.92) }, UINT8_C(242), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -925.31), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -690.77), SIMDE_FLOAT32_C( 675.94), SIMDE_FLOAT32_C( -374.50), SIMDE_FLOAT32_C( -487.76), SIMDE_FLOAT32_C( -756.43) }, { SIMDE_FLOAT32_C( -175.93), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -48.52), SIMDE_FLOAT32_C( 96.45), SIMDE_FLOAT32_C( 957.68), SIMDE_FLOAT32_C( 588.59), SIMDE_FLOAT32_C( -197.83) }, { SIMDE_FLOAT32_C( 867.27), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -222.00), SIMDE_FLOAT32_C( -962.68), SIMDE_FLOAT32_C(53553484363319967491320765743104.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00) } }, { { SIMDE_FLOAT32_C( 383.03), SIMDE_FLOAT32_C( -868.75), SIMDE_FLOAT32_C( -330.42), SIMDE_FLOAT32_C( 976.95), SIMDE_FLOAT32_C( 757.69), SIMDE_FLOAT32_C( -838.96), SIMDE_FLOAT32_C( -959.76), SIMDE_FLOAT32_C( -432.14) }, UINT8_C( 26), { SIMDE_FLOAT32_C( -316.46), SIMDE_FLOAT32_C( -406.44), SIMDE_FLOAT32_C( -251.32), SIMDE_FLOAT32_C( -212.53), SIMDE_FLOAT32_C( 798.11), SIMDE_FLOAT32_C( -886.02), SIMDE_FLOAT32_C( -585.83), SIMDE_FLOAT32_C( -936.92) }, { SIMDE_FLOAT32_C( 885.55), SIMDE_FLOAT32_C( 273.13), SIMDE_FLOAT32_C( 426.36), SIMDE_FLOAT32_C( 195.17), SIMDE_FLOAT32_C( -463.04), SIMDE_FLOAT32_C( 229.16), SIMDE_FLOAT32_C( -598.06), SIMDE_FLOAT32_C( -962.03) }, { SIMDE_FLOAT32_C( 383.03), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -330.42), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -838.96), SIMDE_FLOAT32_C( -959.76), SIMDE_FLOAT32_C( -432.14) } }, { { SIMDE_FLOAT32_C( 825.42), SIMDE_FLOAT32_C( -797.66), SIMDE_FLOAT32_C( 103.98), SIMDE_FLOAT32_C( -141.83), SIMDE_FLOAT32_C( 728.06), SIMDE_FLOAT32_C( 316.86), SIMDE_FLOAT32_C( 201.08), SIMDE_FLOAT32_C( 441.10) }, UINT8_C(185), { SIMDE_FLOAT32_C( 303.85), SIMDE_FLOAT32_C( 196.18), SIMDE_FLOAT32_C( -652.80), SIMDE_FLOAT32_C( -20.21), SIMDE_FLOAT32_C( 821.68), SIMDE_FLOAT32_C( -140.56), SIMDE_FLOAT32_C( 223.36), SIMDE_FLOAT32_C( -354.25) }, { SIMDE_FLOAT32_C( 136.29), SIMDE_FLOAT32_C( -590.33), SIMDE_FLOAT32_C( 597.23), SIMDE_FLOAT32_C( -767.26), SIMDE_FLOAT32_C( -632.64), SIMDE_FLOAT32_C( 185.82), SIMDE_FLOAT32_C( 34.90), SIMDE_FLOAT32_C( 50.90) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -797.66), SIMDE_FLOAT32_C( 103.98), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 201.08), SIMDE_FLOAT32_C(-398850041998999552.00) } }, { { SIMDE_FLOAT32_C( -45.25), SIMDE_FLOAT32_C( -58.61), SIMDE_FLOAT32_C( -79.21), SIMDE_FLOAT32_C( -433.04), SIMDE_FLOAT32_C( -191.34), SIMDE_FLOAT32_C( 286.33), SIMDE_FLOAT32_C( 344.96), SIMDE_FLOAT32_C( -154.03) }, UINT8_C( 54), { SIMDE_FLOAT32_C( 779.38), SIMDE_FLOAT32_C( 783.58), SIMDE_FLOAT32_C( 838.36), SIMDE_FLOAT32_C( 577.49), SIMDE_FLOAT32_C( 897.56), SIMDE_FLOAT32_C( -747.47), SIMDE_FLOAT32_C( 640.57), SIMDE_FLOAT32_C( 783.11) }, { SIMDE_FLOAT32_C( 525.66), SIMDE_FLOAT32_C( 66.92), SIMDE_FLOAT32_C( -21.72), SIMDE_FLOAT32_C( -937.39), SIMDE_FLOAT32_C( -703.91), SIMDE_FLOAT32_C( 380.22), SIMDE_FLOAT32_C( -899.41), SIMDE_FLOAT32_C( 599.93) }, { SIMDE_FLOAT32_C( -45.25), SIMDE_FLOAT32_C(57818000146117217484800.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -433.04), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 344.96), SIMDE_FLOAT32_C( -154.03) } }, { { SIMDE_FLOAT32_C( 732.26), SIMDE_FLOAT32_C( 266.10), SIMDE_FLOAT32_C( 315.19), SIMDE_FLOAT32_C( -594.88), SIMDE_FLOAT32_C( -350.87), SIMDE_FLOAT32_C( 446.44), SIMDE_FLOAT32_C( 74.70), SIMDE_FLOAT32_C( -373.92) }, UINT8_C(178), { SIMDE_FLOAT32_C( -423.60), SIMDE_FLOAT32_C( -552.21), SIMDE_FLOAT32_C( -420.28), SIMDE_FLOAT32_C( -601.92), SIMDE_FLOAT32_C( 307.23), SIMDE_FLOAT32_C( 803.08), SIMDE_FLOAT32_C( 43.83), SIMDE_FLOAT32_C( -556.48) }, { SIMDE_FLOAT32_C( -787.25), SIMDE_FLOAT32_C( -358.94), SIMDE_FLOAT32_C( -323.74), SIMDE_FLOAT32_C( -419.89), SIMDE_FLOAT32_C( 826.88), SIMDE_FLOAT32_C( 711.16), SIMDE_FLOAT32_C( 631.01), SIMDE_FLOAT32_C( 606.26) }, { SIMDE_FLOAT32_C( 732.26), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 315.19), SIMDE_FLOAT32_C( -594.88), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 74.70), -SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 235.74), SIMDE_FLOAT32_C( -333.68), SIMDE_FLOAT32_C( 771.99), SIMDE_FLOAT32_C( -719.46), SIMDE_FLOAT32_C( -508.26), SIMDE_FLOAT32_C( 974.33), SIMDE_FLOAT32_C( 384.53), SIMDE_FLOAT32_C( 349.91) }, UINT8_C( 46), { SIMDE_FLOAT32_C( 494.74), SIMDE_FLOAT32_C( 469.37), SIMDE_FLOAT32_C( 183.74), SIMDE_FLOAT32_C( 392.30), SIMDE_FLOAT32_C( 721.90), SIMDE_FLOAT32_C( -175.69), SIMDE_FLOAT32_C( 175.42), SIMDE_FLOAT32_C( 247.56) }, { SIMDE_FLOAT32_C( 891.23), SIMDE_FLOAT32_C( -846.30), SIMDE_FLOAT32_C( 310.17), SIMDE_FLOAT32_C( -812.68), SIMDE_FLOAT32_C( 533.92), SIMDE_FLOAT32_C( 410.76), SIMDE_FLOAT32_C( 787.25), SIMDE_FLOAT32_C( -889.67) }, { SIMDE_FLOAT32_C( 235.74), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -508.26), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 384.53), SIMDE_FLOAT32_C( 349.91) } }, { { SIMDE_FLOAT32_C( -298.61), SIMDE_FLOAT32_C( -449.02), SIMDE_FLOAT32_C( 143.49), SIMDE_FLOAT32_C( 765.05), SIMDE_FLOAT32_C( 505.73), SIMDE_FLOAT32_C( -915.12), SIMDE_FLOAT32_C( -314.15), SIMDE_FLOAT32_C( -927.30) }, UINT8_C( 96), { SIMDE_FLOAT32_C( 858.55), SIMDE_FLOAT32_C( -633.02), SIMDE_FLOAT32_C( -491.59), SIMDE_FLOAT32_C( 165.78), SIMDE_FLOAT32_C( -829.95), SIMDE_FLOAT32_C( 552.24), SIMDE_FLOAT32_C( 609.30), SIMDE_FLOAT32_C( -617.20) }, { SIMDE_FLOAT32_C( -806.70), SIMDE_FLOAT32_C( -714.44), SIMDE_FLOAT32_C( -37.09), SIMDE_FLOAT32_C( -979.82), SIMDE_FLOAT32_C( 996.72), SIMDE_FLOAT32_C( -406.08), SIMDE_FLOAT32_C( 626.43), SIMDE_FLOAT32_C( 491.46) }, { SIMDE_FLOAT32_C( -298.61), SIMDE_FLOAT32_C( -449.02), SIMDE_FLOAT32_C( 143.49), SIMDE_FLOAT32_C( 765.05), SIMDE_FLOAT32_C( 505.73), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -927.30) } }, { { SIMDE_FLOAT32_C( 972.18), SIMDE_FLOAT32_C( 417.66), SIMDE_FLOAT32_C( 739.51), SIMDE_FLOAT32_C( 176.29), SIMDE_FLOAT32_C( 149.93), SIMDE_FLOAT32_C( 5.61), SIMDE_FLOAT32_C( -508.52), SIMDE_FLOAT32_C( 555.05) }, UINT8_C(250), { SIMDE_FLOAT32_C( -936.71), SIMDE_FLOAT32_C( -189.83), SIMDE_FLOAT32_C( -116.24), SIMDE_FLOAT32_C( 785.19), SIMDE_FLOAT32_C( 634.48), SIMDE_FLOAT32_C( -940.82), SIMDE_FLOAT32_C( 32.74), SIMDE_FLOAT32_C( 525.72) }, { SIMDE_FLOAT32_C( -787.12), SIMDE_FLOAT32_C( -657.09), SIMDE_FLOAT32_C( 713.04), SIMDE_FLOAT32_C( 746.80), SIMDE_FLOAT32_C( 753.67), SIMDE_FLOAT32_C( 500.29), SIMDE_FLOAT32_C( 857.13), SIMDE_FLOAT32_C( 612.22) }, { SIMDE_FLOAT32_C( 972.18), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 739.51), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m256 src = simde_mm256_loadu_ps(test_vec[i].src); simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a); simde__m256 b = simde_mm256_loadu_ps(test_vec[i].b); simde__m256 r = simde_mm256_mask_scalef_ps(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x8_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m256 src = simde_test_x86_random_f32x8(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m256 a = simde_test_x86_random_extract_f32x8(i, 2, 0, values); simde__m256 b = simde_test_x86_random_extract_f32x8(i, 2, 1, values); simde__m256 r = simde_mm256_mask_scalef_ps(src, k, a, b); simde_test_x86_write_f32x8(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm256_maskz_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float32 a[8]; const simde_float32 b[8]; const simde_float32 r[8]; } test_vec[] = { { UINT8_C(186), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -178.84), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 73.91), SIMDE_FLOAT32_C( 775.85), SIMDE_FLOAT32_C( -179.10), SIMDE_FLOAT32_C( -902.23), SIMDE_FLOAT32_C( 808.26) }, { SIMDE_FLOAT32_C( 157.12), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -829.15), SIMDE_FLOAT32_C( 857.21), SIMDE_FLOAT32_C( 874.94), SIMDE_FLOAT32_C( -731.65), SIMDE_FLOAT32_C( 885.12) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { UINT8_C(254), { SIMDE_FLOAT32_C( -373.68), SIMDE_FLOAT32_C( -338.69), SIMDE_FLOAT32_C( -17.30), SIMDE_FLOAT32_C( -429.35), SIMDE_FLOAT32_C( 603.79), SIMDE_FLOAT32_C( -761.55), SIMDE_FLOAT32_C( 662.37), SIMDE_FLOAT32_C( 998.63) }, { SIMDE_FLOAT32_C( 271.41), SIMDE_FLOAT32_C( 639.65), SIMDE_FLOAT32_C( 500.97), SIMDE_FLOAT32_C( 133.67), SIMDE_FLOAT32_C( -849.31), SIMDE_FLOAT32_C( -311.72), SIMDE_FLOAT32_C( -251.83), SIMDE_FLOAT32_C( 361.48) }, { SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { UINT8_C( 91), { SIMDE_FLOAT32_C( 509.45), SIMDE_FLOAT32_C( -862.03), SIMDE_FLOAT32_C( -564.61), SIMDE_FLOAT32_C( 285.30), SIMDE_FLOAT32_C( -41.13), SIMDE_FLOAT32_C( -466.84), SIMDE_FLOAT32_C( 93.56), SIMDE_FLOAT32_C( -884.01) }, { SIMDE_FLOAT32_C( -518.82), SIMDE_FLOAT32_C( 198.48), SIMDE_FLOAT32_C( -713.16), SIMDE_FLOAT32_C( -661.61), SIMDE_FLOAT32_C( 73.43), SIMDE_FLOAT32_C( -444.81), SIMDE_FLOAT32_C( -776.49), SIMDE_FLOAT32_C( 699.75) }, { SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-388461876968920180588544.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT8_C(167), { SIMDE_FLOAT32_C( 216.50), SIMDE_FLOAT32_C( 206.21), SIMDE_FLOAT32_C( -729.60), SIMDE_FLOAT32_C( -179.71), SIMDE_FLOAT32_C( 444.66), SIMDE_FLOAT32_C( 932.77), SIMDE_FLOAT32_C( -181.08), SIMDE_FLOAT32_C( -283.93) }, { SIMDE_FLOAT32_C( 572.42), SIMDE_FLOAT32_C( -680.11), SIMDE_FLOAT32_C( 849.74), SIMDE_FLOAT32_C( 723.11), SIMDE_FLOAT32_C( 8.17), SIMDE_FLOAT32_C( -402.09), SIMDE_FLOAT32_C( 84.60), SIMDE_FLOAT32_C( -482.38) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00) } }, { UINT8_C( 15), { SIMDE_FLOAT32_C( -264.12), SIMDE_FLOAT32_C( 519.99), SIMDE_FLOAT32_C( 802.92), SIMDE_FLOAT32_C( 694.75), SIMDE_FLOAT32_C( -946.85), SIMDE_FLOAT32_C( -103.53), SIMDE_FLOAT32_C( 810.74), SIMDE_FLOAT32_C( -465.67) }, { SIMDE_FLOAT32_C( -905.04), SIMDE_FLOAT32_C( -902.42), SIMDE_FLOAT32_C( -127.28), SIMDE_FLOAT32_C( 168.39), SIMDE_FLOAT32_C( -347.23), SIMDE_FLOAT32_C( 96.24), SIMDE_FLOAT32_C( -131.87), SIMDE_FLOAT32_C( 869.27) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT8_C( 37), { SIMDE_FLOAT32_C( -697.56), SIMDE_FLOAT32_C( 138.53), SIMDE_FLOAT32_C( -310.44), SIMDE_FLOAT32_C( 747.10), SIMDE_FLOAT32_C( 71.30), SIMDE_FLOAT32_C( 508.48), SIMDE_FLOAT32_C( -536.83), SIMDE_FLOAT32_C( -356.28) }, { SIMDE_FLOAT32_C( 828.37), SIMDE_FLOAT32_C( -687.09), SIMDE_FLOAT32_C( -633.17), SIMDE_FLOAT32_C( -163.46), SIMDE_FLOAT32_C( -89.17), SIMDE_FLOAT32_C( 451.43), SIMDE_FLOAT32_C( 354.16), SIMDE_FLOAT32_C( 646.71) }, { -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT8_C(173), { SIMDE_FLOAT32_C( -28.58), SIMDE_FLOAT32_C( 157.08), SIMDE_FLOAT32_C( 341.46), SIMDE_FLOAT32_C( 24.57), SIMDE_FLOAT32_C( -946.45), SIMDE_FLOAT32_C( 152.20), SIMDE_FLOAT32_C( 558.90), SIMDE_FLOAT32_C( -851.49) }, { SIMDE_FLOAT32_C( 249.78), SIMDE_FLOAT32_C( -568.37), SIMDE_FLOAT32_C( 316.90), SIMDE_FLOAT32_C( 902.55), SIMDE_FLOAT32_C( 527.86), SIMDE_FLOAT32_C( -814.97), SIMDE_FLOAT32_C( 771.83), SIMDE_FLOAT32_C( 830.31) }, { -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF } }, { UINT8_C(195), { SIMDE_FLOAT32_C( 323.56), SIMDE_FLOAT32_C( -538.61), SIMDE_FLOAT32_C( 577.41), SIMDE_FLOAT32_C( -605.14), SIMDE_FLOAT32_C( 969.87), SIMDE_FLOAT32_C( -959.42), SIMDE_FLOAT32_C( 38.58), SIMDE_FLOAT32_C( 798.24) }, { SIMDE_FLOAT32_C( -646.50), SIMDE_FLOAT32_C( 405.42), SIMDE_FLOAT32_C( -365.22), SIMDE_FLOAT32_C( 264.32), SIMDE_FLOAT32_C( -143.15), SIMDE_FLOAT32_C( 988.94), SIMDE_FLOAT32_C( -88.97), SIMDE_FLOAT32_C( 828.26) }, { SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m256 a = simde_mm256_loadu_ps(test_vec[i].a); simde__m256 b = simde_mm256_loadu_ps(test_vec[i].b); simde__m256 r = simde_mm256_maskz_scalef_ps(test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x8(r, simde_mm256_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x8_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m256 a = simde_test_x86_random_extract_f32x8(i, 2, 0, values); simde__m256 b = simde_test_x86_random_extract_f32x8(i, 2, 1, values); simde__m256 r = simde_mm256_maskz_scalef_ps(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x8(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm512_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 a[16]; const simde_float32 b[16]; const simde_float32 r[16]; } test_vec[] = { { { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -941.86), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -47.07), SIMDE_FLOAT32_C( -156.60), SIMDE_FLOAT32_C( 419.86), SIMDE_FLOAT32_C( -712.98), SIMDE_FLOAT32_C( -783.29), SIMDE_FLOAT32_C( 69.87), SIMDE_FLOAT32_C( -21.10), SIMDE_FLOAT32_C( -277.06), SIMDE_FLOAT32_C( 523.29), SIMDE_FLOAT32_C( -586.99), SIMDE_FLOAT32_C( 332.51), SIMDE_FLOAT32_C( 560.50), SIMDE_FLOAT32_C( -464.61) }, { SIMDE_FLOAT32_C( 654.36), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 462.88), SIMDE_FLOAT32_C( -277.88), SIMDE_FLOAT32_C( -634.57), SIMDE_FLOAT32_C( -80.52), SIMDE_FLOAT32_C( 989.53), SIMDE_FLOAT32_C( 286.30), SIMDE_FLOAT32_C( -241.62), SIMDE_FLOAT32_C( -571.25), SIMDE_FLOAT32_C( 770.87), SIMDE_FLOAT32_C( 519.90), SIMDE_FLOAT32_C( 854.89), SIMDE_FLOAT32_C( -33.16), SIMDE_FLOAT32_C( 127.70) }, { SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_MATH_NANF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 913.03), SIMDE_FLOAT32_C( -34.30), SIMDE_FLOAT32_C( -919.38), SIMDE_FLOAT32_C( -243.57), SIMDE_FLOAT32_C( -614.45), SIMDE_FLOAT32_C( -632.36), SIMDE_FLOAT32_C( -26.86), SIMDE_FLOAT32_C( 455.43), SIMDE_FLOAT32_C( 346.55), SIMDE_FLOAT32_C( 696.08), SIMDE_FLOAT32_C( -21.28), SIMDE_FLOAT32_C( 759.56), SIMDE_FLOAT32_C( 28.59), SIMDE_FLOAT32_C( -460.78), SIMDE_FLOAT32_C( -705.05), SIMDE_FLOAT32_C( -317.05) }, { SIMDE_FLOAT32_C( 662.85), SIMDE_FLOAT32_C( 11.06), SIMDE_FLOAT32_C( -854.18), SIMDE_FLOAT32_C( -615.03), SIMDE_FLOAT32_C( 376.49), SIMDE_FLOAT32_C( 65.30), SIMDE_FLOAT32_C( -625.50), SIMDE_FLOAT32_C( -337.21), SIMDE_FLOAT32_C( 823.68), SIMDE_FLOAT32_C( -196.74), SIMDE_FLOAT32_C( -566.34), SIMDE_FLOAT32_C( 343.57), SIMDE_FLOAT32_C( -341.85), SIMDE_FLOAT32_C( 400.50), SIMDE_FLOAT32_C( -528.73), SIMDE_FLOAT32_C( -428.82) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C(-70246.40), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C(-23329965624469988835328.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00) } }, { { SIMDE_FLOAT32_C( -633.80), SIMDE_FLOAT32_C( -448.10), SIMDE_FLOAT32_C( 327.62), SIMDE_FLOAT32_C( -248.25), SIMDE_FLOAT32_C( -80.46), SIMDE_FLOAT32_C( -699.24), SIMDE_FLOAT32_C( -792.82), SIMDE_FLOAT32_C( -733.92), SIMDE_FLOAT32_C( 996.84), SIMDE_FLOAT32_C( 185.90), SIMDE_FLOAT32_C( -974.36), SIMDE_FLOAT32_C( 25.42), SIMDE_FLOAT32_C( 725.12), SIMDE_FLOAT32_C( -679.41), SIMDE_FLOAT32_C( 708.37), SIMDE_FLOAT32_C( 387.97) }, { SIMDE_FLOAT32_C( 331.65), SIMDE_FLOAT32_C( 854.19), SIMDE_FLOAT32_C( 772.94), SIMDE_FLOAT32_C( -291.85), SIMDE_FLOAT32_C( -80.51), SIMDE_FLOAT32_C( -852.55), SIMDE_FLOAT32_C( 370.94), SIMDE_FLOAT32_C( -256.84), SIMDE_FLOAT32_C( -49.30), SIMDE_FLOAT32_C( 804.60), SIMDE_FLOAT32_C( -913.26), SIMDE_FLOAT32_C( 608.85), SIMDE_FLOAT32_C( 205.10), SIMDE_FLOAT32_C( -441.99), SIMDE_FLOAT32_C( -819.97), SIMDE_FLOAT32_C( 571.30) }, { -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( 109.91), SIMDE_FLOAT32_C( 507.65), SIMDE_FLOAT32_C( -676.94), SIMDE_FLOAT32_C( -970.55), SIMDE_FLOAT32_C( 808.40), SIMDE_FLOAT32_C( -469.76), SIMDE_FLOAT32_C( -704.47), SIMDE_FLOAT32_C( 805.24), SIMDE_FLOAT32_C( 716.14), SIMDE_FLOAT32_C( -678.83), SIMDE_FLOAT32_C( -169.34), SIMDE_FLOAT32_C( 441.26), SIMDE_FLOAT32_C( -358.23), SIMDE_FLOAT32_C( -460.97), SIMDE_FLOAT32_C( -170.77), SIMDE_FLOAT32_C( 973.42) }, { SIMDE_FLOAT32_C( -606.78), SIMDE_FLOAT32_C( -397.82), SIMDE_FLOAT32_C( -318.44), SIMDE_FLOAT32_C( 312.71), SIMDE_FLOAT32_C( -250.38), SIMDE_FLOAT32_C( -947.50), SIMDE_FLOAT32_C( -944.13), SIMDE_FLOAT32_C( 700.32), SIMDE_FLOAT32_C( 857.10), SIMDE_FLOAT32_C( -857.39), SIMDE_FLOAT32_C( 309.17), SIMDE_FLOAT32_C( 62.21), SIMDE_FLOAT32_C( -299.38), SIMDE_FLOAT32_C( 489.21), SIMDE_FLOAT32_C( -366.49), SIMDE_FLOAT32_C( 810.53) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C(2034952617527265460224.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -3.14), SIMDE_FLOAT32_C( -43.43), SIMDE_FLOAT32_C( 839.97), SIMDE_FLOAT32_C( -194.74), SIMDE_FLOAT32_C( 486.80), SIMDE_FLOAT32_C( -864.50), SIMDE_FLOAT32_C( -389.50), SIMDE_FLOAT32_C( 202.94), SIMDE_FLOAT32_C( -543.32), SIMDE_FLOAT32_C( 441.16), SIMDE_FLOAT32_C( -355.80), SIMDE_FLOAT32_C( 98.44), SIMDE_FLOAT32_C( 980.20), SIMDE_FLOAT32_C( 473.43), SIMDE_FLOAT32_C( 71.86), SIMDE_FLOAT32_C( -626.58) }, { SIMDE_FLOAT32_C( -924.39), SIMDE_FLOAT32_C( 753.42), SIMDE_FLOAT32_C( 686.13), SIMDE_FLOAT32_C( -174.77), SIMDE_FLOAT32_C( 805.92), SIMDE_FLOAT32_C( 742.00), SIMDE_FLOAT32_C( -474.45), SIMDE_FLOAT32_C( 663.03), SIMDE_FLOAT32_C( 884.61), SIMDE_FLOAT32_C( 834.73), SIMDE_FLOAT32_C( -274.77), SIMDE_FLOAT32_C( -414.76), SIMDE_FLOAT32_C( 323.93), SIMDE_FLOAT32_C( 358.74), SIMDE_FLOAT32_C( -604.24), SIMDE_FLOAT32_C( -679.21) }, { SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00) } }, { { SIMDE_FLOAT32_C( -684.70), SIMDE_FLOAT32_C( -764.26), SIMDE_FLOAT32_C( 126.05), SIMDE_FLOAT32_C( 802.11), SIMDE_FLOAT32_C( -628.76), SIMDE_FLOAT32_C( 736.55), SIMDE_FLOAT32_C( 5.05), SIMDE_FLOAT32_C( -172.08), SIMDE_FLOAT32_C( 177.71), SIMDE_FLOAT32_C( 649.25), SIMDE_FLOAT32_C( 926.36), SIMDE_FLOAT32_C( 157.91), SIMDE_FLOAT32_C( 122.68), SIMDE_FLOAT32_C( -1.78), SIMDE_FLOAT32_C( 531.33), SIMDE_FLOAT32_C( 198.28) }, { SIMDE_FLOAT32_C( -248.36), SIMDE_FLOAT32_C( 217.45), SIMDE_FLOAT32_C( -976.49), SIMDE_FLOAT32_C( -442.43), SIMDE_FLOAT32_C( -40.54), SIMDE_FLOAT32_C( -450.94), SIMDE_FLOAT32_C( -779.41), SIMDE_FLOAT32_C( -155.93), SIMDE_FLOAT32_C( -616.21), SIMDE_FLOAT32_C( -54.18), SIMDE_FLOAT32_C( 429.31), SIMDE_FLOAT32_C( 707.72), SIMDE_FLOAT32_C( -695.44), SIMDE_FLOAT32_C( 825.07), SIMDE_FLOAT32_C( -971.49), SIMDE_FLOAT32_C( -380.13) }, { SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( -939.19), SIMDE_FLOAT32_C( 154.56), SIMDE_FLOAT32_C( -578.03), SIMDE_FLOAT32_C( -567.95), SIMDE_FLOAT32_C( -108.89), SIMDE_FLOAT32_C( 427.02), SIMDE_FLOAT32_C( 259.97), SIMDE_FLOAT32_C( -931.18), SIMDE_FLOAT32_C( 76.27), SIMDE_FLOAT32_C( 186.33), SIMDE_FLOAT32_C( 226.73), SIMDE_FLOAT32_C( -801.06), SIMDE_FLOAT32_C( -815.45), SIMDE_FLOAT32_C( -241.94), SIMDE_FLOAT32_C( 397.23), SIMDE_FLOAT32_C( -63.80) }, { SIMDE_FLOAT32_C( 975.51), SIMDE_FLOAT32_C( 420.74), SIMDE_FLOAT32_C( 493.76), SIMDE_FLOAT32_C( -65.03), SIMDE_FLOAT32_C( 969.81), SIMDE_FLOAT32_C( 714.36), SIMDE_FLOAT32_C( 779.04), SIMDE_FLOAT32_C( -646.40), SIMDE_FLOAT32_C( -339.82), SIMDE_FLOAT32_C( 208.34), SIMDE_FLOAT32_C( -938.68), SIMDE_FLOAT32_C( -35.26), SIMDE_FLOAT32_C( 33.41), SIMDE_FLOAT32_C( -910.17), SIMDE_FLOAT32_C( 584.61), SIMDE_FLOAT32_C( 94.22) }, { -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C(-7004662267904.00), SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C(-1263689176990943439434161324032.00) } }, { { SIMDE_FLOAT32_C( 244.39), SIMDE_FLOAT32_C( -993.42), SIMDE_FLOAT32_C( 526.27), SIMDE_FLOAT32_C( -864.50), SIMDE_FLOAT32_C( 433.60), SIMDE_FLOAT32_C( -213.76), SIMDE_FLOAT32_C( -795.68), SIMDE_FLOAT32_C( -490.13), SIMDE_FLOAT32_C( 972.57), SIMDE_FLOAT32_C( 431.05), SIMDE_FLOAT32_C( -291.19), SIMDE_FLOAT32_C( -842.88), SIMDE_FLOAT32_C( -810.89), SIMDE_FLOAT32_C( -893.96), SIMDE_FLOAT32_C( 93.32), SIMDE_FLOAT32_C( -835.37) }, { SIMDE_FLOAT32_C( 526.79), SIMDE_FLOAT32_C( -412.92), SIMDE_FLOAT32_C( 99.60), SIMDE_FLOAT32_C( 496.59), SIMDE_FLOAT32_C( -698.56), SIMDE_FLOAT32_C( -121.37), SIMDE_FLOAT32_C( 850.19), SIMDE_FLOAT32_C( -38.38), SIMDE_FLOAT32_C( -913.02), SIMDE_FLOAT32_C( 911.51), SIMDE_FLOAT32_C( 926.36), SIMDE_FLOAT32_C( 120.39), SIMDE_FLOAT32_C( -998.66), SIMDE_FLOAT32_C( 510.97), SIMDE_FLOAT32_C( -785.39), SIMDE_FLOAT32_C( 245.73) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C(333563253070455536416637746937856.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m512 a = simde_mm512_loadu_ps(test_vec[i].a); simde__m512 b = simde_mm512_loadu_ps(test_vec[i].b); simde__m512 r = simde_mm512_scalef_ps(a, b); simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x16_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m512 a = simde_test_x86_random_extract_f32x16(i, 2, 0, values); simde__m512 b = simde_test_x86_random_extract_f32x16(i, 2, 1, values); simde__m512 r = simde_mm512_scalef_ps(a, b); simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm512_mask_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 src[16]; const simde__mmask16 k; const simde_float32 a[16]; const simde_float32 b[16]; const simde_float32 r[16]; } test_vec[] = { { { SIMDE_FLOAT32_C( -384.09), SIMDE_FLOAT32_C( -958.76), SIMDE_FLOAT32_C( 466.64), SIMDE_FLOAT32_C( 966.42), SIMDE_FLOAT32_C( -935.87), SIMDE_FLOAT32_C( 220.72), SIMDE_FLOAT32_C( 714.63), SIMDE_FLOAT32_C( 933.35), SIMDE_FLOAT32_C( 753.44), SIMDE_FLOAT32_C( -693.92), SIMDE_FLOAT32_C( -785.64), SIMDE_FLOAT32_C( 651.72), SIMDE_FLOAT32_C( 585.75), SIMDE_FLOAT32_C( 125.22), SIMDE_FLOAT32_C( 285.70), SIMDE_FLOAT32_C( -119.05) }, UINT16_C( 6353), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 740.89), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -48.84), SIMDE_FLOAT32_C( -472.87), SIMDE_FLOAT32_C( 585.55), SIMDE_FLOAT32_C( 461.03), SIMDE_FLOAT32_C( -500.30), SIMDE_FLOAT32_C( 16.61), SIMDE_FLOAT32_C( -830.16), SIMDE_FLOAT32_C( -343.18), SIMDE_FLOAT32_C( 205.72), SIMDE_FLOAT32_C( -724.11), SIMDE_FLOAT32_C( 750.14), SIMDE_FLOAT32_C( 370.35), SIMDE_FLOAT32_C( 802.67) }, { SIMDE_FLOAT32_C( -662.78), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -361.34), SIMDE_FLOAT32_C( 348.58), SIMDE_FLOAT32_C( 149.45), SIMDE_FLOAT32_C( 600.28), SIMDE_FLOAT32_C( 435.55), SIMDE_FLOAT32_C( 60.96), SIMDE_FLOAT32_C( 526.64), SIMDE_FLOAT32_C( -444.05), SIMDE_FLOAT32_C( 62.30), SIMDE_FLOAT32_C( 37.62), SIMDE_FLOAT32_C( -229.44), SIMDE_FLOAT32_C( -691.97), SIMDE_FLOAT32_C( -444.83) }, { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -958.76), SIMDE_FLOAT32_C( 466.64), SIMDE_FLOAT32_C( 966.42), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 220.72), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 753.44), SIMDE_FLOAT32_C( -693.92), SIMDE_FLOAT32_C( -785.64), SIMDE_FLOAT32_C(948716053340381773824.00), SIMDE_FLOAT32_C(-99520918585344.00), SIMDE_FLOAT32_C( 125.22), SIMDE_FLOAT32_C( 285.70), SIMDE_FLOAT32_C( -119.05) } }, { { SIMDE_FLOAT32_C( 622.41), SIMDE_FLOAT32_C( 402.50), SIMDE_FLOAT32_C( 168.18), SIMDE_FLOAT32_C( 951.95), SIMDE_FLOAT32_C( 716.56), SIMDE_FLOAT32_C( 604.02), SIMDE_FLOAT32_C( 275.93), SIMDE_FLOAT32_C( -553.03), SIMDE_FLOAT32_C( 55.37), SIMDE_FLOAT32_C( 762.73), SIMDE_FLOAT32_C( -158.00), SIMDE_FLOAT32_C( 316.47), SIMDE_FLOAT32_C( 320.59), SIMDE_FLOAT32_C( 457.91), SIMDE_FLOAT32_C( 357.71), SIMDE_FLOAT32_C( -212.77) }, UINT16_C(57868), { SIMDE_FLOAT32_C( -488.55), SIMDE_FLOAT32_C( 689.26), SIMDE_FLOAT32_C( 506.33), SIMDE_FLOAT32_C( 38.58), SIMDE_FLOAT32_C( 274.81), SIMDE_FLOAT32_C( -32.64), SIMDE_FLOAT32_C( 538.27), SIMDE_FLOAT32_C( -708.59), SIMDE_FLOAT32_C( 137.20), SIMDE_FLOAT32_C( -804.91), SIMDE_FLOAT32_C( 497.13), SIMDE_FLOAT32_C( 413.09), SIMDE_FLOAT32_C( 945.23), SIMDE_FLOAT32_C( -132.52), SIMDE_FLOAT32_C( 215.76), SIMDE_FLOAT32_C( -717.54) }, { SIMDE_FLOAT32_C( 337.42), SIMDE_FLOAT32_C( -484.97), SIMDE_FLOAT32_C( -78.88), SIMDE_FLOAT32_C( -314.00), SIMDE_FLOAT32_C( 664.48), SIMDE_FLOAT32_C( -478.60), SIMDE_FLOAT32_C( -878.45), SIMDE_FLOAT32_C( -274.56), SIMDE_FLOAT32_C( -951.95), SIMDE_FLOAT32_C( -322.50), SIMDE_FLOAT32_C( 787.74), SIMDE_FLOAT32_C( 85.66), SIMDE_FLOAT32_C( 448.06), SIMDE_FLOAT32_C( -904.23), SIMDE_FLOAT32_C( 640.83), SIMDE_FLOAT32_C( 959.51) }, { SIMDE_FLOAT32_C( 622.41), SIMDE_FLOAT32_C( 402.50), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 716.56), SIMDE_FLOAT32_C( 604.02), SIMDE_FLOAT32_C( 275.93), SIMDE_FLOAT32_C( -553.03), SIMDE_FLOAT32_C( 55.37), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -158.00), SIMDE_FLOAT32_C( 316.47), SIMDE_FLOAT32_C( 320.59), SIMDE_FLOAT32_C( -0.00), SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -992.05), SIMDE_FLOAT32_C( 138.95), SIMDE_FLOAT32_C( 355.18), SIMDE_FLOAT32_C( 761.39), SIMDE_FLOAT32_C( 445.03), SIMDE_FLOAT32_C( 569.54), SIMDE_FLOAT32_C( 413.11), SIMDE_FLOAT32_C( 30.79), SIMDE_FLOAT32_C( -305.24), SIMDE_FLOAT32_C( -301.19), SIMDE_FLOAT32_C( 911.73), SIMDE_FLOAT32_C( -292.42), SIMDE_FLOAT32_C( -913.23), SIMDE_FLOAT32_C( 534.14), SIMDE_FLOAT32_C( -889.91), SIMDE_FLOAT32_C( 254.96) }, UINT16_C(49817), { SIMDE_FLOAT32_C( 785.03), SIMDE_FLOAT32_C( 147.16), SIMDE_FLOAT32_C( -1.92), SIMDE_FLOAT32_C( 59.84), SIMDE_FLOAT32_C( -885.48), SIMDE_FLOAT32_C( -463.64), SIMDE_FLOAT32_C( 351.25), SIMDE_FLOAT32_C( 251.72), SIMDE_FLOAT32_C( -268.55), SIMDE_FLOAT32_C( -151.61), SIMDE_FLOAT32_C( -335.18), SIMDE_FLOAT32_C( -323.32), SIMDE_FLOAT32_C( 715.87), SIMDE_FLOAT32_C( 880.58), SIMDE_FLOAT32_C( -40.86), SIMDE_FLOAT32_C( 53.29) }, { SIMDE_FLOAT32_C( -604.39), SIMDE_FLOAT32_C( 880.26), SIMDE_FLOAT32_C( 739.29), SIMDE_FLOAT32_C( -939.91), SIMDE_FLOAT32_C( -598.33), SIMDE_FLOAT32_C( 860.84), SIMDE_FLOAT32_C( -214.46), SIMDE_FLOAT32_C( -550.28), SIMDE_FLOAT32_C( -461.66), SIMDE_FLOAT32_C( -426.72), SIMDE_FLOAT32_C( 535.38), SIMDE_FLOAT32_C( 986.40), SIMDE_FLOAT32_C( -330.95), SIMDE_FLOAT32_C( 176.21), SIMDE_FLOAT32_C( 945.91), SIMDE_FLOAT32_C( -545.92) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 138.95), SIMDE_FLOAT32_C( 355.18), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 569.54), SIMDE_FLOAT32_C( 413.11), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -305.24), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 911.73), SIMDE_FLOAT32_C( -292.42), SIMDE_FLOAT32_C( -913.23), SIMDE_FLOAT32_C( 534.14), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( -141.02), SIMDE_FLOAT32_C( -237.99), SIMDE_FLOAT32_C( -726.39), SIMDE_FLOAT32_C( 914.35), SIMDE_FLOAT32_C( -475.26), SIMDE_FLOAT32_C( 115.61), SIMDE_FLOAT32_C( 230.82), SIMDE_FLOAT32_C( 845.33), SIMDE_FLOAT32_C( -426.47), SIMDE_FLOAT32_C( -411.48), SIMDE_FLOAT32_C( -367.44), SIMDE_FLOAT32_C( 997.86), SIMDE_FLOAT32_C( -989.64), SIMDE_FLOAT32_C( -359.48), SIMDE_FLOAT32_C( 136.81), SIMDE_FLOAT32_C( 365.54) }, UINT16_C(52705), { SIMDE_FLOAT32_C( -676.62), SIMDE_FLOAT32_C( -56.01), SIMDE_FLOAT32_C( 513.92), SIMDE_FLOAT32_C( -562.10), SIMDE_FLOAT32_C( 480.35), SIMDE_FLOAT32_C( -134.83), SIMDE_FLOAT32_C( 689.63), SIMDE_FLOAT32_C( -788.20), SIMDE_FLOAT32_C( 713.56), SIMDE_FLOAT32_C( -645.56), SIMDE_FLOAT32_C( -111.52), SIMDE_FLOAT32_C( 429.42), SIMDE_FLOAT32_C( -764.98), SIMDE_FLOAT32_C( 847.63), SIMDE_FLOAT32_C( -517.29), SIMDE_FLOAT32_C( -369.37) }, { SIMDE_FLOAT32_C( 727.89), SIMDE_FLOAT32_C( -778.00), SIMDE_FLOAT32_C( -309.27), SIMDE_FLOAT32_C( -870.44), SIMDE_FLOAT32_C( -917.16), SIMDE_FLOAT32_C( 476.26), SIMDE_FLOAT32_C( -420.73), SIMDE_FLOAT32_C( -378.82), SIMDE_FLOAT32_C( -950.46), SIMDE_FLOAT32_C( -885.35), SIMDE_FLOAT32_C( -392.42), SIMDE_FLOAT32_C( -281.40), SIMDE_FLOAT32_C( 290.87), SIMDE_FLOAT32_C( -446.51), SIMDE_FLOAT32_C( 172.67), SIMDE_FLOAT32_C( 614.25) }, { -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -237.99), SIMDE_FLOAT32_C( -726.39), SIMDE_FLOAT32_C( 914.35), SIMDE_FLOAT32_C( -475.26), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -411.48), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -989.64), SIMDE_FLOAT32_C( -359.48), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF } }, { { SIMDE_FLOAT32_C( -64.92), SIMDE_FLOAT32_C( 815.02), SIMDE_FLOAT32_C( 612.63), SIMDE_FLOAT32_C( 629.84), SIMDE_FLOAT32_C( -486.17), SIMDE_FLOAT32_C( 524.36), SIMDE_FLOAT32_C( -662.57), SIMDE_FLOAT32_C( -399.40), SIMDE_FLOAT32_C( 58.50), SIMDE_FLOAT32_C( -552.49), SIMDE_FLOAT32_C( 855.56), SIMDE_FLOAT32_C( -455.41), SIMDE_FLOAT32_C( -725.84), SIMDE_FLOAT32_C( -285.46), SIMDE_FLOAT32_C( 306.60), SIMDE_FLOAT32_C( -452.23) }, UINT16_C(57400), { SIMDE_FLOAT32_C( 497.48), SIMDE_FLOAT32_C( -313.41), SIMDE_FLOAT32_C( -947.85), SIMDE_FLOAT32_C( -22.17), SIMDE_FLOAT32_C( 551.76), SIMDE_FLOAT32_C( 741.77), SIMDE_FLOAT32_C( 189.63), SIMDE_FLOAT32_C( 265.32), SIMDE_FLOAT32_C( -903.79), SIMDE_FLOAT32_C( -921.89), SIMDE_FLOAT32_C( -305.26), SIMDE_FLOAT32_C( -668.76), SIMDE_FLOAT32_C( 925.73), SIMDE_FLOAT32_C( 177.45), SIMDE_FLOAT32_C( -38.13), SIMDE_FLOAT32_C( 653.62) }, { SIMDE_FLOAT32_C( 399.45), SIMDE_FLOAT32_C( 652.59), SIMDE_FLOAT32_C( 783.18), SIMDE_FLOAT32_C( 482.29), SIMDE_FLOAT32_C( 128.86), SIMDE_FLOAT32_C( -637.55), SIMDE_FLOAT32_C( -896.53), SIMDE_FLOAT32_C( 178.40), SIMDE_FLOAT32_C( -522.89), SIMDE_FLOAT32_C( -288.94), SIMDE_FLOAT32_C( 897.00), SIMDE_FLOAT32_C( 767.97), SIMDE_FLOAT32_C( 264.55), SIMDE_FLOAT32_C( 69.67), SIMDE_FLOAT32_C( 382.22), SIMDE_FLOAT32_C( -237.97) }, { SIMDE_FLOAT32_C( -64.92), SIMDE_FLOAT32_C( 815.02), SIMDE_FLOAT32_C( 612.63), -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -662.57), SIMDE_FLOAT32_C( -399.40), SIMDE_FLOAT32_C( 58.50), SIMDE_FLOAT32_C( -552.49), SIMDE_FLOAT32_C( 855.56), SIMDE_FLOAT32_C( -455.41), SIMDE_FLOAT32_C( -725.84), SIMDE_FLOAT32_C(104747989746712466948096.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00) } }, { { SIMDE_FLOAT32_C( 663.39), SIMDE_FLOAT32_C( 859.70), SIMDE_FLOAT32_C( 676.68), SIMDE_FLOAT32_C( -763.09), SIMDE_FLOAT32_C( -551.77), SIMDE_FLOAT32_C( -690.76), SIMDE_FLOAT32_C( -765.23), SIMDE_FLOAT32_C( -541.42), SIMDE_FLOAT32_C( -50.24), SIMDE_FLOAT32_C( 371.58), SIMDE_FLOAT32_C( 824.12), SIMDE_FLOAT32_C( 351.66), SIMDE_FLOAT32_C( 953.42), SIMDE_FLOAT32_C( -240.79), SIMDE_FLOAT32_C( 166.68), SIMDE_FLOAT32_C( 566.05) }, UINT16_C(32446), { SIMDE_FLOAT32_C( 756.26), SIMDE_FLOAT32_C( 434.37), SIMDE_FLOAT32_C( 739.85), SIMDE_FLOAT32_C( 308.03), SIMDE_FLOAT32_C( 176.14), SIMDE_FLOAT32_C( -70.52), SIMDE_FLOAT32_C( -426.66), SIMDE_FLOAT32_C( 272.35), SIMDE_FLOAT32_C( 7.59), SIMDE_FLOAT32_C( 268.08), SIMDE_FLOAT32_C( 603.59), SIMDE_FLOAT32_C( -66.68), SIMDE_FLOAT32_C( -554.46), SIMDE_FLOAT32_C( -434.54), SIMDE_FLOAT32_C( -413.06), SIMDE_FLOAT32_C( 844.99) }, { SIMDE_FLOAT32_C( -781.95), SIMDE_FLOAT32_C( -629.87), SIMDE_FLOAT32_C( 327.28), SIMDE_FLOAT32_C( 346.91), SIMDE_FLOAT32_C( -267.42), SIMDE_FLOAT32_C( 430.76), SIMDE_FLOAT32_C( -474.69), SIMDE_FLOAT32_C( 209.69), SIMDE_FLOAT32_C( -858.19), SIMDE_FLOAT32_C( -577.69), SIMDE_FLOAT32_C( -22.34), SIMDE_FLOAT32_C( 406.36), SIMDE_FLOAT32_C( 491.98), SIMDE_FLOAT32_C( -640.12), SIMDE_FLOAT32_C( -831.62), SIMDE_FLOAT32_C( 248.25) }, { SIMDE_FLOAT32_C( 663.39), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -765.23), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -50.24), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 566.05) } }, { { SIMDE_FLOAT32_C( 90.40), SIMDE_FLOAT32_C( -273.52), SIMDE_FLOAT32_C( -718.89), SIMDE_FLOAT32_C( -851.10), SIMDE_FLOAT32_C( 173.99), SIMDE_FLOAT32_C( -863.33), SIMDE_FLOAT32_C( -306.51), SIMDE_FLOAT32_C( 448.15), SIMDE_FLOAT32_C( -148.79), SIMDE_FLOAT32_C( -999.91), SIMDE_FLOAT32_C( 995.92), SIMDE_FLOAT32_C( 480.10), SIMDE_FLOAT32_C( 831.43), SIMDE_FLOAT32_C( 659.31), SIMDE_FLOAT32_C( 339.80), SIMDE_FLOAT32_C( 508.11) }, UINT16_C( 2559), { SIMDE_FLOAT32_C( 794.25), SIMDE_FLOAT32_C( 908.24), SIMDE_FLOAT32_C( -443.72), SIMDE_FLOAT32_C( -29.61), SIMDE_FLOAT32_C( -162.28), SIMDE_FLOAT32_C( 129.62), SIMDE_FLOAT32_C( -757.26), SIMDE_FLOAT32_C( 845.31), SIMDE_FLOAT32_C( -602.30), SIMDE_FLOAT32_C( 846.33), SIMDE_FLOAT32_C( -221.37), SIMDE_FLOAT32_C( -156.76), SIMDE_FLOAT32_C( -588.21), SIMDE_FLOAT32_C( 365.57), SIMDE_FLOAT32_C( -311.77), SIMDE_FLOAT32_C( -370.16) }, { SIMDE_FLOAT32_C( 735.70), SIMDE_FLOAT32_C( -984.49), SIMDE_FLOAT32_C( 976.75), SIMDE_FLOAT32_C( -531.72), SIMDE_FLOAT32_C( 446.27), SIMDE_FLOAT32_C( -497.93), SIMDE_FLOAT32_C( 677.96), SIMDE_FLOAT32_C( 588.08), SIMDE_FLOAT32_C( -75.62), SIMDE_FLOAT32_C( -344.38), SIMDE_FLOAT32_C( -5.56), SIMDE_FLOAT32_C( -583.64), SIMDE_FLOAT32_C( 15.50), SIMDE_FLOAT32_C( 162.82), SIMDE_FLOAT32_C( 664.61), SIMDE_FLOAT32_C( -190.25) }, { SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -999.91), SIMDE_FLOAT32_C( 995.92), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 831.43), SIMDE_FLOAT32_C( 659.31), SIMDE_FLOAT32_C( 339.80), SIMDE_FLOAT32_C( 508.11) } }, { { SIMDE_FLOAT32_C( 817.35), SIMDE_FLOAT32_C( -869.01), SIMDE_FLOAT32_C( -753.39), SIMDE_FLOAT32_C( -232.89), SIMDE_FLOAT32_C( 502.57), SIMDE_FLOAT32_C( -929.27), SIMDE_FLOAT32_C( -881.23), SIMDE_FLOAT32_C( 455.99), SIMDE_FLOAT32_C( -170.06), SIMDE_FLOAT32_C( 285.45), SIMDE_FLOAT32_C( 22.03), SIMDE_FLOAT32_C( 218.99), SIMDE_FLOAT32_C( -34.04), SIMDE_FLOAT32_C( -887.56), SIMDE_FLOAT32_C( 945.47), SIMDE_FLOAT32_C( 247.07) }, UINT16_C(32166), { SIMDE_FLOAT32_C( 71.06), SIMDE_FLOAT32_C( -779.11), SIMDE_FLOAT32_C( 780.14), SIMDE_FLOAT32_C( 908.78), SIMDE_FLOAT32_C( 350.50), SIMDE_FLOAT32_C( -977.11), SIMDE_FLOAT32_C( 754.08), SIMDE_FLOAT32_C( 748.21), SIMDE_FLOAT32_C( 869.22), SIMDE_FLOAT32_C( -467.29), SIMDE_FLOAT32_C( -408.55), SIMDE_FLOAT32_C( -718.99), SIMDE_FLOAT32_C( 898.28), SIMDE_FLOAT32_C( 279.68), SIMDE_FLOAT32_C( -89.14), SIMDE_FLOAT32_C( 633.98) }, { SIMDE_FLOAT32_C( 295.19), SIMDE_FLOAT32_C( -112.39), SIMDE_FLOAT32_C( -897.74), SIMDE_FLOAT32_C( -258.54), SIMDE_FLOAT32_C( 389.68), SIMDE_FLOAT32_C( 780.22), SIMDE_FLOAT32_C( -670.46), SIMDE_FLOAT32_C( -685.95), SIMDE_FLOAT32_C( -564.16), SIMDE_FLOAT32_C( 323.98), SIMDE_FLOAT32_C( -269.58), SIMDE_FLOAT32_C( 451.34), SIMDE_FLOAT32_C( -513.20), SIMDE_FLOAT32_C( -604.97), SIMDE_FLOAT32_C( -738.90), SIMDE_FLOAT32_C( 557.86) }, { SIMDE_FLOAT32_C( 817.35), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -232.89), SIMDE_FLOAT32_C( 502.57), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -881.23), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 285.45), SIMDE_FLOAT32_C( -0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 247.07) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m512 src = simde_mm512_loadu_ps(test_vec[i].src); simde__m512 a = simde_mm512_loadu_ps(test_vec[i].a); simde__m512 b = simde_mm512_loadu_ps(test_vec[i].b); simde__m512 r = simde_mm512_mask_scalef_ps(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x16_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m512 src = simde_test_x86_random_f32x16(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); simde__mmask16 k = simde_test_x86_random_mmask16(); simde__m512 a = simde_test_x86_random_extract_f32x16(i, 2, 0, values); simde__m512 b = simde_test_x86_random_extract_f32x16(i, 2, 1, values); simde__m512 r = simde_mm512_mask_scalef_ps(src, k, a, b); simde_test_x86_write_f32x16(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm512_maskz_scalef_ps (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask16 k; const simde_float32 a[16]; const simde_float32 b[16]; const simde_float32 r[16]; } test_vec[] = { { UINT16_C(60257), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 254.81), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -407.97), SIMDE_FLOAT32_C( 760.87), SIMDE_FLOAT32_C( -325.12), SIMDE_FLOAT32_C( 16.51), SIMDE_FLOAT32_C( 38.28), SIMDE_FLOAT32_C( 599.38), SIMDE_FLOAT32_C( 485.34), SIMDE_FLOAT32_C( 133.72), SIMDE_FLOAT32_C( 580.55), SIMDE_FLOAT32_C( -139.95), SIMDE_FLOAT32_C( -474.22), SIMDE_FLOAT32_C( -119.72), SIMDE_FLOAT32_C( 230.75) }, { SIMDE_FLOAT32_C( 613.23), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 488.81), SIMDE_FLOAT32_C( 971.27), SIMDE_FLOAT32_C( 124.58), SIMDE_FLOAT32_C( -409.85), SIMDE_FLOAT32_C( -229.54), SIMDE_FLOAT32_C( -583.28), SIMDE_FLOAT32_C( 611.22), SIMDE_FLOAT32_C( -28.00), SIMDE_FLOAT32_C( -40.38), SIMDE_FLOAT32_C( 556.64), SIMDE_FLOAT32_C( 264.91), SIMDE_FLOAT32_C( 835.06), SIMDE_FLOAT32_C( -53.83) }, { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00) } }, { UINT16_C(18948), { SIMDE_FLOAT32_C( -480.28), SIMDE_FLOAT32_C( 460.06), SIMDE_FLOAT32_C( 538.20), SIMDE_FLOAT32_C( -719.40), SIMDE_FLOAT32_C( -865.06), SIMDE_FLOAT32_C( -445.29), SIMDE_FLOAT32_C( 318.88), SIMDE_FLOAT32_C( 734.32), SIMDE_FLOAT32_C( -959.95), SIMDE_FLOAT32_C( -547.40), SIMDE_FLOAT32_C( 314.88), SIMDE_FLOAT32_C( -99.90), SIMDE_FLOAT32_C( -21.62), SIMDE_FLOAT32_C( -804.84), SIMDE_FLOAT32_C( -869.16), SIMDE_FLOAT32_C( -408.39) }, { SIMDE_FLOAT32_C( 239.48), SIMDE_FLOAT32_C( -209.55), SIMDE_FLOAT32_C( -919.58), SIMDE_FLOAT32_C( 210.74), SIMDE_FLOAT32_C( 915.03), SIMDE_FLOAT32_C( -329.43), SIMDE_FLOAT32_C( 981.21), SIMDE_FLOAT32_C( -668.25), SIMDE_FLOAT32_C( -718.22), SIMDE_FLOAT32_C( -46.79), SIMDE_FLOAT32_C( 291.36), SIMDE_FLOAT32_C( 838.42), SIMDE_FLOAT32_C( -781.88), SIMDE_FLOAT32_C( 126.42), SIMDE_FLOAT32_C( -215.40), SIMDE_FLOAT32_C( -262.16) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT16_C(38861), { SIMDE_FLOAT32_C( -413.52), SIMDE_FLOAT32_C( -677.20), SIMDE_FLOAT32_C( 18.44), SIMDE_FLOAT32_C( -278.58), SIMDE_FLOAT32_C( -122.49), SIMDE_FLOAT32_C( -662.68), SIMDE_FLOAT32_C( -544.26), SIMDE_FLOAT32_C( -82.44), SIMDE_FLOAT32_C( -210.08), SIMDE_FLOAT32_C( 770.62), SIMDE_FLOAT32_C( 817.65), SIMDE_FLOAT32_C( 768.30), SIMDE_FLOAT32_C( 965.78), SIMDE_FLOAT32_C( 948.50), SIMDE_FLOAT32_C( -640.09), SIMDE_FLOAT32_C( 205.26) }, { SIMDE_FLOAT32_C( -261.05), SIMDE_FLOAT32_C( -559.68), SIMDE_FLOAT32_C( -584.00), SIMDE_FLOAT32_C( -346.02), SIMDE_FLOAT32_C( 110.89), SIMDE_FLOAT32_C( -602.79), SIMDE_FLOAT32_C( -14.27), SIMDE_FLOAT32_C( 392.68), SIMDE_FLOAT32_C( 350.41), SIMDE_FLOAT32_C( -722.91), SIMDE_FLOAT32_C( 231.10), SIMDE_FLOAT32_C( 568.53), SIMDE_FLOAT32_C( 403.51), SIMDE_FLOAT32_C( -984.30), SIMDE_FLOAT32_C( -693.63), SIMDE_FLOAT32_C( 989.99) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.02), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { UINT16_C( 9085), { SIMDE_FLOAT32_C( -661.50), SIMDE_FLOAT32_C( 324.81), SIMDE_FLOAT32_C( -288.59), SIMDE_FLOAT32_C( 216.01), SIMDE_FLOAT32_C( 662.13), SIMDE_FLOAT32_C( 167.15), SIMDE_FLOAT32_C( -866.44), SIMDE_FLOAT32_C( -547.95), SIMDE_FLOAT32_C( -62.23), SIMDE_FLOAT32_C( 951.22), SIMDE_FLOAT32_C( -779.65), SIMDE_FLOAT32_C( -96.45), SIMDE_FLOAT32_C( 899.71), SIMDE_FLOAT32_C( -419.75), SIMDE_FLOAT32_C( -891.19), SIMDE_FLOAT32_C( -361.34) }, { SIMDE_FLOAT32_C( 20.58), SIMDE_FLOAT32_C( -475.19), SIMDE_FLOAT32_C( 292.64), SIMDE_FLOAT32_C( -868.53), SIMDE_FLOAT32_C( -77.98), SIMDE_FLOAT32_C( -721.63), SIMDE_FLOAT32_C( 524.15), SIMDE_FLOAT32_C( -727.57), SIMDE_FLOAT32_C( -444.54), SIMDE_FLOAT32_C( -244.75), SIMDE_FLOAT32_C( 840.96), SIMDE_FLOAT32_C( 958.97), SIMDE_FLOAT32_C( -229.06), SIMDE_FLOAT32_C( -852.67), SIMDE_FLOAT32_C( 948.96), SIMDE_FLOAT32_C( 109.44) }, { SIMDE_FLOAT32_C(-693633024.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT16_C(43730), { SIMDE_FLOAT32_C( 472.13), SIMDE_FLOAT32_C( -339.63), SIMDE_FLOAT32_C( -674.55), SIMDE_FLOAT32_C( 134.26), SIMDE_FLOAT32_C( 827.52), SIMDE_FLOAT32_C( -540.99), SIMDE_FLOAT32_C( 586.31), SIMDE_FLOAT32_C( -234.71), SIMDE_FLOAT32_C( -589.77), SIMDE_FLOAT32_C( 806.65), SIMDE_FLOAT32_C( 668.84), SIMDE_FLOAT32_C( -690.06), SIMDE_FLOAT32_C( -613.09), SIMDE_FLOAT32_C( 777.65), SIMDE_FLOAT32_C( -51.40), SIMDE_FLOAT32_C( 407.49) }, { SIMDE_FLOAT32_C( -697.54), SIMDE_FLOAT32_C( -758.76), SIMDE_FLOAT32_C( 538.96), SIMDE_FLOAT32_C( 224.47), SIMDE_FLOAT32_C( -480.40), SIMDE_FLOAT32_C( 63.11), SIMDE_FLOAT32_C( 496.90), SIMDE_FLOAT32_C( 75.06), SIMDE_FLOAT32_C( 818.35), SIMDE_FLOAT32_C( 337.86), SIMDE_FLOAT32_C( 34.03), SIMDE_FLOAT32_C( -410.70), SIMDE_FLOAT32_C( 485.18), SIMDE_FLOAT32_C( -17.01), SIMDE_FLOAT32_C( 698.74), SIMDE_FLOAT32_C( -42.68) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C(-8867093351197406438359040.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT16_C(37360), { SIMDE_FLOAT32_C( 643.36), SIMDE_FLOAT32_C( -975.82), SIMDE_FLOAT32_C( -908.42), SIMDE_FLOAT32_C( 470.88), SIMDE_FLOAT32_C( -516.81), SIMDE_FLOAT32_C( 677.89), SIMDE_FLOAT32_C( -763.83), SIMDE_FLOAT32_C( -106.58), SIMDE_FLOAT32_C( 484.54), SIMDE_FLOAT32_C( 905.01), SIMDE_FLOAT32_C( 203.36), SIMDE_FLOAT32_C( 871.45), SIMDE_FLOAT32_C( 682.65), SIMDE_FLOAT32_C( -848.04), SIMDE_FLOAT32_C( 278.94), SIMDE_FLOAT32_C( 985.11) }, { SIMDE_FLOAT32_C( -606.80), SIMDE_FLOAT32_C( -182.10), SIMDE_FLOAT32_C( 209.58), SIMDE_FLOAT32_C( -87.20), SIMDE_FLOAT32_C( 881.00), SIMDE_FLOAT32_C( -293.52), SIMDE_FLOAT32_C( 987.86), SIMDE_FLOAT32_C( 699.35), SIMDE_FLOAT32_C( -955.66), SIMDE_FLOAT32_C( 21.89), SIMDE_FLOAT32_C( -711.35), SIMDE_FLOAT32_C( 529.52), SIMDE_FLOAT32_C( -995.12), SIMDE_FLOAT32_C( 987.39), SIMDE_FLOAT32_C( -513.16), SIMDE_FLOAT32_C( 648.24) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), -SIMDE_MATH_INFINITYF, -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF } }, { UINT16_C(23765), { SIMDE_FLOAT32_C( -988.43), SIMDE_FLOAT32_C( -421.58), SIMDE_FLOAT32_C( 119.12), SIMDE_FLOAT32_C( -505.24), SIMDE_FLOAT32_C( -743.69), SIMDE_FLOAT32_C( 355.29), SIMDE_FLOAT32_C( 388.18), SIMDE_FLOAT32_C( 740.85), SIMDE_FLOAT32_C( 260.29), SIMDE_FLOAT32_C( -408.46), SIMDE_FLOAT32_C( 612.30), SIMDE_FLOAT32_C( -57.05), SIMDE_FLOAT32_C( -256.50), SIMDE_FLOAT32_C( -108.76), SIMDE_FLOAT32_C( -71.94), SIMDE_FLOAT32_C( 136.70) }, { SIMDE_FLOAT32_C( 709.14), SIMDE_FLOAT32_C( -862.36), SIMDE_FLOAT32_C( -950.50), SIMDE_FLOAT32_C( 590.14), SIMDE_FLOAT32_C( -155.88), SIMDE_FLOAT32_C( -962.63), SIMDE_FLOAT32_C( 289.49), SIMDE_FLOAT32_C( -111.55), SIMDE_FLOAT32_C( 59.26), SIMDE_FLOAT32_C( 578.14), SIMDE_FLOAT32_C( -582.02), SIMDE_FLOAT32_C( 64.14), SIMDE_FLOAT32_C( 565.53), SIMDE_FLOAT32_C( -95.18), SIMDE_FLOAT32_C( -287.62), SIMDE_FLOAT32_C( 577.10) }, { -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C(-1052386735331381084160.00), -SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00) } }, { UINT16_C(13355), { SIMDE_FLOAT32_C( 483.24), SIMDE_FLOAT32_C( 831.50), SIMDE_FLOAT32_C( -928.13), SIMDE_FLOAT32_C( 739.55), SIMDE_FLOAT32_C( 186.79), SIMDE_FLOAT32_C( 460.05), SIMDE_FLOAT32_C( 480.40), SIMDE_FLOAT32_C( -552.91), SIMDE_FLOAT32_C( -948.41), SIMDE_FLOAT32_C( 92.70), SIMDE_FLOAT32_C( 390.03), SIMDE_FLOAT32_C( -204.90), SIMDE_FLOAT32_C( 983.95), SIMDE_FLOAT32_C( -681.91), SIMDE_FLOAT32_C( 931.80), SIMDE_FLOAT32_C( 693.08) }, { SIMDE_FLOAT32_C( -544.27), SIMDE_FLOAT32_C( 981.30), SIMDE_FLOAT32_C( 283.22), SIMDE_FLOAT32_C( 299.84), SIMDE_FLOAT32_C( -981.34), SIMDE_FLOAT32_C( -427.29), SIMDE_FLOAT32_C( -811.70), SIMDE_FLOAT32_C( 77.92), SIMDE_FLOAT32_C( -849.14), SIMDE_FLOAT32_C( -393.73), SIMDE_FLOAT32_C( -857.94), SIMDE_FLOAT32_C( 716.39), SIMDE_FLOAT32_C( 511.09), SIMDE_FLOAT32_C( -145.55), SIMDE_FLOAT32_C( 293.49), SIMDE_FLOAT32_C( -5.67) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_MATH_INFINITYF, SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m512 a = simde_mm512_loadu_ps(test_vec[i].a); simde__m512 b = simde_mm512_loadu_ps(test_vec[i].b); simde__m512 r = simde_mm512_maskz_scalef_ps(test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x16(r, simde_mm512_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x16_full(8, 2, values, -1000.0f, 1000.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask16 k = simde_test_x86_random_mmask16(); simde__m512 a = simde_test_x86_random_extract_f32x16(i, 2, 0, values); simde__m512 b = simde_test_x86_random_extract_f32x16(i, 2, 1, values); simde__m512 r = simde_mm512_maskz_scalef_ps(k, a, b); simde_test_x86_write_mmask16(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x16(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x16(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x16(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 a[2]; const simde_float64 b[2]; const simde_float64 r[2]; } test_vec[] = { { { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 14.65) }, { SIMDE_FLOAT64_C( 73.76), SIMDE_MATH_NAN }, { SIMDE_MATH_NAN, SIMDE_MATH_NAN } }, { { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -30.10) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -60.62) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -0.00) } }, { { SIMDE_FLOAT64_C( 18.39), SIMDE_FLOAT64_C( -19.05) }, { SIMDE_FLOAT64_C( 8.69), SIMDE_FLOAT64_C( 2.38) }, { SIMDE_FLOAT64_C( 4707.84), SIMDE_FLOAT64_C( -76.20) } }, { { SIMDE_FLOAT64_C( -25.14), SIMDE_FLOAT64_C( 99.57) }, { SIMDE_FLOAT64_C( 63.92), SIMDE_FLOAT64_C( 15.05) }, { SIMDE_FLOAT64_C(-231875573006529069056.00), SIMDE_FLOAT64_C(3262709.76) } }, { { SIMDE_FLOAT64_C( -26.71), SIMDE_FLOAT64_C( -61.81) }, { SIMDE_FLOAT64_C( 53.58), SIMDE_FLOAT64_C( -85.95) }, { SIMDE_FLOAT64_C(-240582292094131904.00), SIMDE_FLOAT64_C( -0.00) } }, { { SIMDE_FLOAT64_C( 30.91), SIMDE_FLOAT64_C( 80.20) }, { SIMDE_FLOAT64_C( -51.60), SIMDE_FLOAT64_C( -87.81) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { { SIMDE_FLOAT64_C( 50.75), SIMDE_FLOAT64_C( -84.71) }, { SIMDE_FLOAT64_C( -31.49), SIMDE_FLOAT64_C( 85.93) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-3277059397745767354566967296.00) } }, { { SIMDE_FLOAT64_C( -22.94), SIMDE_FLOAT64_C( 9.42) }, { SIMDE_FLOAT64_C( 83.85), SIMDE_FLOAT64_C( 4.58) }, { SIMDE_FLOAT64_C(-221862066415676758511583232.00), SIMDE_FLOAT64_C( 150.72) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128d a = simde_mm_loadu_pd(test_vec[i].a); simde__m128d b = simde_mm_loadu_pd(test_vec[i].b); simde__m128d r = simde_mm_scalef_pd(a, b); simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x2_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128d a = simde_test_x86_random_extract_f64x2(i, 2, 0, values); simde__m128d b = simde_test_x86_random_extract_f64x2(i, 2, 1, values); simde__m128d r = simde_mm_scalef_pd(a, b); simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_mask_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 src[2]; const simde__mmask8 k; const simde_float64 a[2]; const simde_float64 b[2]; const simde_float64 r[2]; } test_vec[] = { { { SIMDE_FLOAT64_C( -683.93), SIMDE_FLOAT64_C( -643.14) }, UINT8_C( 97), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 57.61) }, { SIMDE_FLOAT64_C( 53.43), SIMDE_MATH_NAN }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -643.14) } }, { { SIMDE_FLOAT64_C( -408.83), SIMDE_FLOAT64_C( 845.11) }, UINT8_C( 22), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 48.83) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 45.90) }, { SIMDE_FLOAT64_C( -408.83), SIMDE_FLOAT64_C(1718052889097666.50) } }, { { SIMDE_FLOAT64_C( -949.80), SIMDE_FLOAT64_C( -857.08) }, UINT8_C(201), { SIMDE_FLOAT64_C( -70.22), SIMDE_FLOAT64_C( 50.02) }, { SIMDE_FLOAT64_C( -51.72), SIMDE_FLOAT64_C( 4.64) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -857.08) } }, { { SIMDE_FLOAT64_C( -466.99), SIMDE_FLOAT64_C( 189.32) }, UINT8_C(190), { SIMDE_FLOAT64_C( 49.59), SIMDE_FLOAT64_C( -87.80) }, { SIMDE_FLOAT64_C( -80.31), SIMDE_FLOAT64_C( -77.12) }, { SIMDE_FLOAT64_C( -466.99), SIMDE_FLOAT64_C( -0.00) } }, { { SIMDE_FLOAT64_C( -344.95), SIMDE_FLOAT64_C( 386.18) }, UINT8_C(156), { SIMDE_FLOAT64_C( -49.61), SIMDE_FLOAT64_C( 73.26) }, { SIMDE_FLOAT64_C( -63.07), SIMDE_FLOAT64_C( 81.30) }, { SIMDE_FLOAT64_C( -344.95), SIMDE_FLOAT64_C( 386.18) } }, { { SIMDE_FLOAT64_C( 158.99), SIMDE_FLOAT64_C( 118.79) }, UINT8_C( 37), { SIMDE_FLOAT64_C( 53.46), SIMDE_FLOAT64_C( -14.67) }, { SIMDE_FLOAT64_C( 93.50), SIMDE_FLOAT64_C( 4.21) }, { SIMDE_FLOAT64_C(529442196001571444413106749440.00), SIMDE_FLOAT64_C( 118.79) } }, { { SIMDE_FLOAT64_C( -27.96), SIMDE_FLOAT64_C( -346.62) }, UINT8_C(189), { SIMDE_FLOAT64_C( 0.62), SIMDE_FLOAT64_C( -37.99) }, { SIMDE_FLOAT64_C( -9.86), SIMDE_FLOAT64_C( 77.68) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -346.62) } }, { { SIMDE_FLOAT64_C( -93.00), SIMDE_FLOAT64_C( 695.44) }, UINT8_C(140), { SIMDE_FLOAT64_C( 71.43), SIMDE_FLOAT64_C( -26.01) }, { SIMDE_FLOAT64_C( -17.74), SIMDE_FLOAT64_C( 95.49) }, { SIMDE_FLOAT64_C( -93.00), SIMDE_FLOAT64_C( 695.44) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128d src = simde_mm_loadu_pd(test_vec[i].src); simde__m128d a = simde_mm_loadu_pd(test_vec[i].a); simde__m128d b = simde_mm_loadu_pd(test_vec[i].b); simde__m128d r = simde_mm_mask_scalef_pd(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x2_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128d src = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128d a = simde_test_x86_random_extract_f64x2(i, 2, 0, values); simde__m128d b = simde_test_x86_random_extract_f64x2(i, 2, 1, values); simde__m128d r = simde_mm_mask_scalef_pd(src, k, a, b); simde_test_x86_write_f64x2(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_maskz_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float64 a[2]; const simde_float64 b[2]; const simde_float64 r[2]; } test_vec[] = { { UINT8_C(123), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -40.32) }, { SIMDE_FLOAT64_C( 61.82), SIMDE_MATH_NAN }, { SIMDE_MATH_NAN, SIMDE_MATH_NAN } }, { UINT8_C( 40), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -55.92) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 65.28) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(206), { SIMDE_FLOAT64_C( -20.24), SIMDE_FLOAT64_C( 17.07) }, { SIMDE_FLOAT64_C( -75.60), SIMDE_FLOAT64_C( -35.73) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(202), { SIMDE_FLOAT64_C( 55.84), SIMDE_FLOAT64_C( -70.58) }, { SIMDE_FLOAT64_C( -21.43), SIMDE_FLOAT64_C( 44.63) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-1241656491014881.25) } }, { UINT8_C( 11), { SIMDE_FLOAT64_C( -17.28), SIMDE_FLOAT64_C( 97.50) }, { SIMDE_FLOAT64_C( -16.98), SIMDE_FLOAT64_C( 48.23) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(27443810229288960.00) } }, { UINT8_C(223), { SIMDE_FLOAT64_C( 36.11), SIMDE_FLOAT64_C( -55.71) }, { SIMDE_FLOAT64_C( -35.87), SIMDE_FLOAT64_C( -52.01) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00) } }, { UINT8_C(137), { SIMDE_FLOAT64_C( -57.52), SIMDE_FLOAT64_C( 61.33) }, { SIMDE_FLOAT64_C( 13.33), SIMDE_FLOAT64_C( 26.00) }, { SIMDE_FLOAT64_C(-471203.84), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(221), { SIMDE_FLOAT64_C( -47.97), SIMDE_FLOAT64_C( -17.12) }, { SIMDE_FLOAT64_C( 10.14), SIMDE_FLOAT64_C( -95.26) }, { SIMDE_FLOAT64_C(-49121.28), SIMDE_FLOAT64_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128d a = simde_mm_loadu_pd(test_vec[i].a); simde__m128d b = simde_mm_loadu_pd(test_vec[i].b); simde__m128d r = simde_mm_maskz_scalef_pd(test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x2_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128d a = simde_test_x86_random_extract_f64x2(i, 2, 0, values); simde__m128d b = simde_test_x86_random_extract_f64x2(i, 2, 1, values); simde__m128d r = simde_mm_maskz_scalef_pd(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm256_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 a[4]; const simde_float64 b[4]; const simde_float64 r[4]; } test_vec[] = { { { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -98.02), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 14.34) }, { SIMDE_FLOAT64_C( 22.61), SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -40.04) }, { SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 0.00) } }, { { SIMDE_FLOAT64_C( -4.76), SIMDE_FLOAT64_C( 2.92), SIMDE_FLOAT64_C( 74.43), SIMDE_FLOAT64_C( 19.75) }, { SIMDE_FLOAT64_C( 1.84), SIMDE_FLOAT64_C( -74.38), SIMDE_FLOAT64_C( -33.99), SIMDE_FLOAT64_C( -68.40) }, { SIMDE_FLOAT64_C( -9.52), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { { SIMDE_FLOAT64_C( 68.17), SIMDE_FLOAT64_C( -15.58), SIMDE_FLOAT64_C( 50.42), SIMDE_FLOAT64_C( -37.05) }, { SIMDE_FLOAT64_C( -69.82), SIMDE_FLOAT64_C( -94.10), SIMDE_FLOAT64_C( 71.05), SIMDE_FLOAT64_C( -56.51) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(119050859033143759863808.00), SIMDE_FLOAT64_C( -0.00) } }, { { SIMDE_FLOAT64_C( -36.90), SIMDE_FLOAT64_C( 88.15), SIMDE_FLOAT64_C( 42.92), SIMDE_FLOAT64_C( -12.71) }, { SIMDE_FLOAT64_C( 79.73), SIMDE_FLOAT64_C( -61.58), SIMDE_FLOAT64_C( -58.02), SIMDE_FLOAT64_C( 6.34) }, { SIMDE_FLOAT64_C(-22304681371889907414335488.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -813.44) } }, { { SIMDE_FLOAT64_C( -59.60), SIMDE_FLOAT64_C( -82.73), SIMDE_FLOAT64_C( -79.32), SIMDE_FLOAT64_C( 63.02) }, { SIMDE_FLOAT64_C( 65.75), SIMDE_FLOAT64_C( 91.64), SIMDE_FLOAT64_C( -77.02), SIMDE_FLOAT64_C( -39.01) }, { SIMDE_FLOAT64_C(-2198851893586178605056.00), SIMDE_FLOAT64_C(-204829558900159030136433278976.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00) } }, { { SIMDE_FLOAT64_C( -5.44), SIMDE_FLOAT64_C( 97.41), SIMDE_FLOAT64_C( 80.74), SIMDE_FLOAT64_C( 96.39) }, { SIMDE_FLOAT64_C( -76.97), SIMDE_FLOAT64_C( -53.25), SIMDE_FLOAT64_C( -72.00), SIMDE_FLOAT64_C( 91.20) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(238650080773435610802428051456.00) } }, { { SIMDE_FLOAT64_C( 31.18), SIMDE_FLOAT64_C( 78.42), SIMDE_FLOAT64_C( -45.85), SIMDE_FLOAT64_C( 61.36) }, { SIMDE_FLOAT64_C( 84.31), SIMDE_FLOAT64_C( -74.80), SIMDE_FLOAT64_C( -95.16), SIMDE_FLOAT64_C( -52.59) }, { SIMDE_FLOAT64_C(603108912889346197179858944.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00) } }, { { SIMDE_FLOAT64_C( -86.66), SIMDE_FLOAT64_C( 47.76), SIMDE_FLOAT64_C( 34.70), SIMDE_FLOAT64_C( 93.08) }, { SIMDE_FLOAT64_C( 86.19), SIMDE_FLOAT64_C( 76.68), SIMDE_FLOAT64_C( -0.58), SIMDE_FLOAT64_C( -73.41) }, { SIMDE_FLOAT64_C(-6704992737779440650039590912.00), SIMDE_FLOAT64_C(3608643571549667936174080.00), SIMDE_FLOAT64_C( 17.35), SIMDE_FLOAT64_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a); simde__m256d b = simde_mm256_loadu_pd(test_vec[i].b); simde__m256d r = simde_mm256_scalef_pd(a, b); simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x4_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m256d a = simde_test_x86_random_extract_f64x4(i, 2, 0, values); simde__m256d b = simde_test_x86_random_extract_f64x4(i, 2, 1, values); simde__m256d r = simde_mm256_scalef_pd(a, b); simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm256_mask_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 src[4]; const simde__mmask8 k; const simde_float64 a[4]; const simde_float64 b[4]; const simde_float64 r[4]; } test_vec[] = { { { SIMDE_FLOAT64_C( -835.99), SIMDE_FLOAT64_C( 39.26), SIMDE_FLOAT64_C( 644.55), SIMDE_FLOAT64_C( 246.88) }, UINT8_C( 98), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 20.10), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 59.70) }, { SIMDE_FLOAT64_C( 11.73), SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -93.71) }, { SIMDE_FLOAT64_C( -835.99), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 644.55), SIMDE_FLOAT64_C( 246.88) } }, { { SIMDE_FLOAT64_C( -880.30), SIMDE_FLOAT64_C( -570.31), SIMDE_FLOAT64_C( 584.35), SIMDE_FLOAT64_C( -378.30) }, UINT8_C( 6), { SIMDE_FLOAT64_C( -90.01), SIMDE_FLOAT64_C( -98.57), SIMDE_FLOAT64_C( -97.32), SIMDE_FLOAT64_C( -66.98) }, { SIMDE_FLOAT64_C( -51.82), SIMDE_FLOAT64_C( -69.32), SIMDE_FLOAT64_C( -75.78), SIMDE_FLOAT64_C( 79.36) }, { SIMDE_FLOAT64_C( -880.30), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -378.30) } }, { { SIMDE_FLOAT64_C( 345.86), SIMDE_FLOAT64_C( 430.52), SIMDE_FLOAT64_C( 697.90), SIMDE_FLOAT64_C( -99.07) }, UINT8_C( 91), { SIMDE_FLOAT64_C( -90.90), SIMDE_FLOAT64_C( -21.63), SIMDE_FLOAT64_C( 40.71), SIMDE_FLOAT64_C( 93.41) }, { SIMDE_FLOAT64_C( 3.56), SIMDE_FLOAT64_C( 45.56), SIMDE_FLOAT64_C( -59.18), SIMDE_FLOAT64_C( 16.91) }, { SIMDE_FLOAT64_C( -727.20), SIMDE_FLOAT64_C(-761037968281436.12), SIMDE_FLOAT64_C( 697.90), SIMDE_FLOAT64_C(6121717.76) } }, { { SIMDE_FLOAT64_C( -763.22), SIMDE_FLOAT64_C( 863.15), SIMDE_FLOAT64_C( 164.23), SIMDE_FLOAT64_C( 811.29) }, UINT8_C(249), { SIMDE_FLOAT64_C( -6.68), SIMDE_FLOAT64_C( 75.52), SIMDE_FLOAT64_C( 9.98), SIMDE_FLOAT64_C( -20.49) }, { SIMDE_FLOAT64_C( 52.20), SIMDE_FLOAT64_C( -90.60), SIMDE_FLOAT64_C( 6.09), SIMDE_FLOAT64_C( 46.15) }, { SIMDE_FLOAT64_C(-30084045510834912.00), SIMDE_FLOAT64_C( 863.15), SIMDE_FLOAT64_C( 164.23), SIMDE_FLOAT64_C(-1441855568200335.25) } }, { { SIMDE_FLOAT64_C( -593.66), SIMDE_FLOAT64_C( -445.14), SIMDE_FLOAT64_C( 631.97), SIMDE_FLOAT64_C( 403.63) }, UINT8_C( 71), { SIMDE_FLOAT64_C( 29.49), SIMDE_FLOAT64_C( -4.30), SIMDE_FLOAT64_C( 5.85), SIMDE_FLOAT64_C( -58.77) }, { SIMDE_FLOAT64_C( 8.29), SIMDE_FLOAT64_C( 26.54), SIMDE_FLOAT64_C( -52.48), SIMDE_FLOAT64_C( 18.28) }, { SIMDE_FLOAT64_C( 7549.44), SIMDE_FLOAT64_C(-288568115.20), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 403.63) } }, { { SIMDE_FLOAT64_C( 778.03), SIMDE_FLOAT64_C( 922.89), SIMDE_FLOAT64_C( -664.40), SIMDE_FLOAT64_C( -14.97) }, UINT8_C(118), { SIMDE_FLOAT64_C( 27.97), SIMDE_FLOAT64_C( -49.80), SIMDE_FLOAT64_C( 51.30), SIMDE_FLOAT64_C( 76.15) }, { SIMDE_FLOAT64_C( -19.12), SIMDE_FLOAT64_C( 75.52), SIMDE_FLOAT64_C( 55.51), SIMDE_FLOAT64_C( -10.02) }, { SIMDE_FLOAT64_C( 778.03), SIMDE_FLOAT64_C(-1881390806775266545762304.00), SIMDE_FLOAT64_C(1848277287072851456.00), SIMDE_FLOAT64_C( -14.97) } }, { { SIMDE_FLOAT64_C( 567.88), SIMDE_FLOAT64_C( 149.04), SIMDE_FLOAT64_C( -57.09), SIMDE_FLOAT64_C( 212.43) }, UINT8_C(210), { SIMDE_FLOAT64_C( -46.11), SIMDE_FLOAT64_C( -3.78), SIMDE_FLOAT64_C( -16.61), SIMDE_FLOAT64_C( 57.45) }, { SIMDE_FLOAT64_C( -58.22), SIMDE_FLOAT64_C( 24.21), SIMDE_FLOAT64_C( -25.64), SIMDE_FLOAT64_C( 35.10) }, { SIMDE_FLOAT64_C( 567.88), SIMDE_FLOAT64_C(-63417876.48), SIMDE_FLOAT64_C( -57.09), SIMDE_FLOAT64_C( 212.43) } }, { { SIMDE_FLOAT64_C( 247.57), SIMDE_FLOAT64_C( 332.13), SIMDE_FLOAT64_C( -174.39), SIMDE_FLOAT64_C( -168.09) }, UINT8_C( 28), { SIMDE_FLOAT64_C( -0.27), SIMDE_FLOAT64_C( 84.34), SIMDE_FLOAT64_C( -85.39), SIMDE_FLOAT64_C( -48.07) }, { SIMDE_FLOAT64_C( 93.74), SIMDE_FLOAT64_C( 20.70), SIMDE_FLOAT64_C( 98.08), SIMDE_FLOAT64_C( 23.23) }, { SIMDE_FLOAT64_C( 247.57), SIMDE_FLOAT64_C( 332.13), SIMDE_FLOAT64_C(-27061171188372127328594856771584.00), SIMDE_FLOAT64_C(-403240386.56) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m256d src = simde_mm256_loadu_pd(test_vec[i].src); simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a); simde__m256d b = simde_mm256_loadu_pd(test_vec[i].b); simde__m256d r = simde_mm256_mask_scalef_pd(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x4_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m256d src = simde_test_x86_random_f64x4(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m256d a = simde_test_x86_random_extract_f64x4(i, 2, 0, values); simde__m256d b = simde_test_x86_random_extract_f64x4(i, 2, 1, values); simde__m256d r = simde_mm256_mask_scalef_pd(src, k, a, b); simde_test_x86_write_f64x4(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm256_maskz_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float64 a[4]; const simde_float64 b[4]; const simde_float64 r[4]; } test_vec[] = { { UINT8_C( 69), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -82.22), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -53.38) }, { SIMDE_FLOAT64_C( 7.87), SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -5.81) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 0.00), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(236), { SIMDE_FLOAT64_C( -12.11), SIMDE_FLOAT64_C( -48.57), SIMDE_FLOAT64_C( 22.28), SIMDE_FLOAT64_C( 28.52) }, { SIMDE_FLOAT64_C( 6.91), SIMDE_FLOAT64_C( -14.52), SIMDE_FLOAT64_C( -31.11), SIMDE_FLOAT64_C( 46.74) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(2006916583946977.25) } }, { UINT8_C( 31), { SIMDE_FLOAT64_C( -36.72), SIMDE_FLOAT64_C( -38.82), SIMDE_FLOAT64_C( 80.30), SIMDE_FLOAT64_C( 61.79) }, { SIMDE_FLOAT64_C( -48.46), SIMDE_FLOAT64_C( 37.08), SIMDE_FLOAT64_C( -23.31), SIMDE_FLOAT64_C( 45.83) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(-5335380173783.04), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(2174042351368929.25) } }, { UINT8_C(147), { SIMDE_FLOAT64_C( -41.67), SIMDE_FLOAT64_C( 16.28), SIMDE_FLOAT64_C( -29.41), SIMDE_FLOAT64_C( 91.54) }, { SIMDE_FLOAT64_C( 98.84), SIMDE_FLOAT64_C( 53.78), SIMDE_FLOAT64_C( 86.92), SIMDE_FLOAT64_C( -24.33) }, { SIMDE_FLOAT64_C(-13205750127877580330523860926464.00), SIMDE_FLOAT64_C(146637203867183360.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C( 72), { SIMDE_FLOAT64_C( 71.56), SIMDE_FLOAT64_C( 25.36), SIMDE_FLOAT64_C( 22.29), SIMDE_FLOAT64_C( -20.57) }, { SIMDE_FLOAT64_C( -3.18), SIMDE_FLOAT64_C( 92.59), SIMDE_FLOAT64_C( 73.62), SIMDE_FLOAT64_C( 84.72) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-397881665751566759476854784.00) } }, { UINT8_C(232), { SIMDE_FLOAT64_C( -55.98), SIMDE_FLOAT64_C( -4.10), SIMDE_FLOAT64_C( 13.24), SIMDE_FLOAT64_C( 50.93) }, { SIMDE_FLOAT64_C( 81.38), SIMDE_FLOAT64_C( 82.13), SIMDE_FLOAT64_C( -2.33), SIMDE_FLOAT64_C( -55.34) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(160), { SIMDE_FLOAT64_C( -56.69), SIMDE_FLOAT64_C( -22.04), SIMDE_FLOAT64_C( -93.56), SIMDE_FLOAT64_C( -5.15) }, { SIMDE_FLOAT64_C( -84.95), SIMDE_FLOAT64_C( -16.87), SIMDE_FLOAT64_C( -59.32), SIMDE_FLOAT64_C( -26.63) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C( 29), { SIMDE_FLOAT64_C( 99.42), SIMDE_FLOAT64_C( 11.27), SIMDE_FLOAT64_C( -35.09), SIMDE_FLOAT64_C( 98.26) }, { SIMDE_FLOAT64_C( -34.94), SIMDE_FLOAT64_C( -48.16), SIMDE_FLOAT64_C( -26.07), SIMDE_FLOAT64_C( -63.38) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m256d a = simde_mm256_loadu_pd(test_vec[i].a); simde__m256d b = simde_mm256_loadu_pd(test_vec[i].b); simde__m256d r = simde_mm256_maskz_scalef_pd(test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x4(r, simde_mm256_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x4_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m256d a = simde_test_x86_random_extract_f64x4(i, 2, 0, values); simde__m256d b = simde_test_x86_random_extract_f64x4(i, 2, 1, values); simde__m256d r = simde_mm256_maskz_scalef_pd(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm512_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 a[8]; const simde_float64 b[8]; const simde_float64 r[8]; } test_vec[] = { { { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 3.52), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 82.72), SIMDE_FLOAT64_C( -70.09), SIMDE_FLOAT64_C( 38.95), SIMDE_FLOAT64_C( -64.55), SIMDE_FLOAT64_C( 80.50) }, { SIMDE_FLOAT64_C( 55.63), SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 88.21), SIMDE_FLOAT64_C( -89.05), SIMDE_FLOAT64_C( 49.51), SIMDE_FLOAT64_C( 20.06), SIMDE_FLOAT64_C( 16.65) }, { SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C(25600600012421663733070168064.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(21926900685760104.00), SIMDE_FLOAT64_C(-67685580.80), SIMDE_FLOAT64_C(5275648.00) } }, { { SIMDE_FLOAT64_C( 72.14), SIMDE_FLOAT64_C( -64.35), SIMDE_FLOAT64_C( -86.99), SIMDE_FLOAT64_C( 12.78), SIMDE_FLOAT64_C( 48.87), SIMDE_FLOAT64_C( 35.58), SIMDE_FLOAT64_C( -50.15), SIMDE_FLOAT64_C( -28.04) }, { SIMDE_FLOAT64_C( -50.35), SIMDE_FLOAT64_C( 12.93), SIMDE_FLOAT64_C( -43.72), SIMDE_FLOAT64_C( 45.63), SIMDE_FLOAT64_C( 18.72), SIMDE_FLOAT64_C( 92.32), SIMDE_FLOAT64_C( -91.81), SIMDE_FLOAT64_C( 52.08) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-263577.60), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(449656275295272.94), SIMDE_FLOAT64_C(12810977.28), SIMDE_FLOAT64_C(176183626391095312279394058240.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(-126280933551468704.00) } }, { { SIMDE_FLOAT64_C( -4.16), SIMDE_FLOAT64_C( -75.71), SIMDE_FLOAT64_C( 34.79), SIMDE_FLOAT64_C( 25.75), SIMDE_FLOAT64_C( 63.24), SIMDE_FLOAT64_C( 70.24), SIMDE_FLOAT64_C( 6.25), SIMDE_FLOAT64_C( 18.87) }, { SIMDE_FLOAT64_C( 52.58), SIMDE_FLOAT64_C( -80.99), SIMDE_FLOAT64_C( 7.07), SIMDE_FLOAT64_C( 63.54), SIMDE_FLOAT64_C( 68.52), SIMDE_FLOAT64_C( -72.86), SIMDE_FLOAT64_C( -19.81), SIMDE_FLOAT64_C( 40.66) }, { SIMDE_FLOAT64_C(-18734974449861264.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 4453.12), SIMDE_FLOAT64_C(237501829949010477056.00), SIMDE_FLOAT64_C(18665153523542273294336.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(20747784416133.12) } }, { { SIMDE_FLOAT64_C( -37.21), SIMDE_FLOAT64_C( -6.81), SIMDE_FLOAT64_C( -46.56), SIMDE_FLOAT64_C( -88.34), SIMDE_FLOAT64_C( -71.23), SIMDE_FLOAT64_C( 3.29), SIMDE_FLOAT64_C( -16.38), SIMDE_FLOAT64_C( -21.58) }, { SIMDE_FLOAT64_C( -83.78), SIMDE_FLOAT64_C( 39.89), SIMDE_FLOAT64_C( -75.94), SIMDE_FLOAT64_C( 34.93), SIMDE_FLOAT64_C( 32.21), SIMDE_FLOAT64_C( -67.75), SIMDE_FLOAT64_C( -12.99), SIMDE_FLOAT64_C( -71.95) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(-3743837092577.28), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(-1517669643714.56), SIMDE_FLOAT64_C(-305930520494.08), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -0.00) } }, { { SIMDE_FLOAT64_C( -43.46), SIMDE_FLOAT64_C( -78.20), SIMDE_FLOAT64_C( 53.80), SIMDE_FLOAT64_C( -80.23), SIMDE_FLOAT64_C( 92.04), SIMDE_FLOAT64_C( -39.95), SIMDE_FLOAT64_C( 38.64), SIMDE_FLOAT64_C( 44.63) }, { SIMDE_FLOAT64_C( -20.94), SIMDE_FLOAT64_C( -54.29), SIMDE_FLOAT64_C( 8.17), SIMDE_FLOAT64_C( -52.42), SIMDE_FLOAT64_C( -27.15), SIMDE_FLOAT64_C( 88.35), SIMDE_FLOAT64_C( 88.24), SIMDE_FLOAT64_C( 35.64) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 13772.80), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-12363926142362736375164305408.00), SIMDE_FLOAT64_C(11958500779496773631447400448.00), SIMDE_FLOAT64_C(1533475123363.84) } }, { { SIMDE_FLOAT64_C( -18.45), SIMDE_FLOAT64_C( -58.32), SIMDE_FLOAT64_C( 47.30), SIMDE_FLOAT64_C( 10.32), SIMDE_FLOAT64_C( 44.97), SIMDE_FLOAT64_C( -69.08), SIMDE_FLOAT64_C( 88.74), SIMDE_FLOAT64_C( 61.18) }, { SIMDE_FLOAT64_C( 70.81), SIMDE_FLOAT64_C( -87.20), SIMDE_FLOAT64_C( -3.89), SIMDE_FLOAT64_C( 3.02), SIMDE_FLOAT64_C( -54.95), SIMDE_FLOAT64_C( 83.12), SIMDE_FLOAT64_C( 31.07), SIMDE_FLOAT64_C( 1.58) }, { SIMDE_FLOAT64_C(-21781915402236237709312.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 2.96), SIMDE_FLOAT64_C( 82.56), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-668100764951828650616946688.00), SIMDE_FLOAT64_C(190567698923.52), SIMDE_FLOAT64_C( 122.36) } }, { { SIMDE_FLOAT64_C( -95.08), SIMDE_FLOAT64_C( -15.13), SIMDE_FLOAT64_C( 21.36), SIMDE_FLOAT64_C( 96.97), SIMDE_FLOAT64_C( 44.91), SIMDE_FLOAT64_C( -40.00), SIMDE_FLOAT64_C( 41.60), SIMDE_FLOAT64_C( -76.03) }, { SIMDE_FLOAT64_C( 5.71), SIMDE_FLOAT64_C( -50.24), SIMDE_FLOAT64_C( -28.45), SIMDE_FLOAT64_C( 78.56), SIMDE_FLOAT64_C( -61.89), SIMDE_FLOAT64_C( -40.21), SIMDE_FLOAT64_C( 14.19), SIMDE_FLOAT64_C( 19.66) }, { SIMDE_FLOAT64_C( -3042.56), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(29307384182007647424217088.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(681574.40), SIMDE_FLOAT64_C(-39861616.64) } }, { { SIMDE_FLOAT64_C( 1.47), SIMDE_FLOAT64_C( -38.51), SIMDE_FLOAT64_C( -70.02), SIMDE_FLOAT64_C( -53.56), SIMDE_FLOAT64_C( -7.59), SIMDE_FLOAT64_C( -81.28), SIMDE_FLOAT64_C( -92.38), SIMDE_FLOAT64_C( -36.78) }, { SIMDE_FLOAT64_C( -68.49), SIMDE_FLOAT64_C( 3.73), SIMDE_FLOAT64_C( 66.24), SIMDE_FLOAT64_C( -23.44), SIMDE_FLOAT64_C( -13.15), SIMDE_FLOAT64_C( -2.69), SIMDE_FLOAT64_C( 78.14), SIMDE_FLOAT64_C( -8.22) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -308.08), SIMDE_FLOAT64_C(-5166564080164570923008.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -10.16), SIMDE_FLOAT64_C(-27920141803999859415449600.00), SIMDE_FLOAT64_C( -0.07) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m512d a = simde_mm512_loadu_pd(test_vec[i].a); simde__m512d b = simde_mm512_loadu_pd(test_vec[i].b); simde__m512d r = simde_mm512_scalef_pd(a, b); simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x8_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m512d a = simde_test_x86_random_extract_f64x8(i, 2, 0, values); simde__m512d b = simde_test_x86_random_extract_f64x8(i, 2, 1, values); simde__m512d r = simde_mm512_scalef_pd(a, b); simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm512_mask_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 src[8]; const simde__mmask8 k; const simde_float64 a[8]; const simde_float64 b[8]; const simde_float64 r[8]; } test_vec[] = { { { SIMDE_FLOAT64_C( -161.86), SIMDE_FLOAT64_C( -689.84), SIMDE_FLOAT64_C( -760.83), SIMDE_FLOAT64_C( -853.23), SIMDE_FLOAT64_C( 59.60), SIMDE_FLOAT64_C( -500.46), SIMDE_FLOAT64_C( -972.68), SIMDE_FLOAT64_C( 329.52) }, UINT8_C( 53), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -0.50), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 27.08), SIMDE_FLOAT64_C( 59.49), SIMDE_FLOAT64_C( -69.66), SIMDE_FLOAT64_C( 51.05), SIMDE_FLOAT64_C( -34.80) }, { SIMDE_FLOAT64_C( -19.90), SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 18.21), SIMDE_FLOAT64_C( -17.60), SIMDE_FLOAT64_C( 57.95), SIMDE_FLOAT64_C( -62.13), SIMDE_FLOAT64_C( 83.87) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -689.84), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -853.23), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-10039064001364119552.00), SIMDE_FLOAT64_C( -972.68), SIMDE_FLOAT64_C( 329.52) } }, { { SIMDE_FLOAT64_C( 466.56), SIMDE_FLOAT64_C( 875.54), SIMDE_FLOAT64_C( -763.98), SIMDE_FLOAT64_C( 645.69), SIMDE_FLOAT64_C( -868.26), SIMDE_FLOAT64_C( 770.97), SIMDE_FLOAT64_C( -135.66), SIMDE_FLOAT64_C( -602.20) }, UINT8_C(134), { SIMDE_FLOAT64_C( -80.56), SIMDE_FLOAT64_C( -32.15), SIMDE_FLOAT64_C( -69.69), SIMDE_FLOAT64_C( 11.85), SIMDE_FLOAT64_C( -13.44), SIMDE_FLOAT64_C( -62.07), SIMDE_FLOAT64_C( 75.06), SIMDE_FLOAT64_C( 18.08) }, { SIMDE_FLOAT64_C( 41.66), SIMDE_FLOAT64_C( 41.30), SIMDE_FLOAT64_C( 94.63), SIMDE_FLOAT64_C( -71.49), SIMDE_FLOAT64_C( -61.39), SIMDE_FLOAT64_C( 72.78), SIMDE_FLOAT64_C( 20.29), SIMDE_FLOAT64_C( -79.22) }, { SIMDE_FLOAT64_C( 466.56), SIMDE_FLOAT64_C(-70698597665996.80), SIMDE_FLOAT64_C(-1380352661404770376687523201024.00), SIMDE_FLOAT64_C( 645.69), SIMDE_FLOAT64_C( -868.26), SIMDE_FLOAT64_C( 770.97), SIMDE_FLOAT64_C( -135.66), SIMDE_FLOAT64_C( 0.00) } }, { { SIMDE_FLOAT64_C( 172.80), SIMDE_FLOAT64_C( -845.80), SIMDE_FLOAT64_C( -987.32), SIMDE_FLOAT64_C( -965.66), SIMDE_FLOAT64_C( -172.29), SIMDE_FLOAT64_C( -41.83), SIMDE_FLOAT64_C( 298.33), SIMDE_FLOAT64_C( 572.92) }, UINT8_C(149), { SIMDE_FLOAT64_C( -27.73), SIMDE_FLOAT64_C( -90.97), SIMDE_FLOAT64_C( 47.86), SIMDE_FLOAT64_C( -68.23), SIMDE_FLOAT64_C( -60.63), SIMDE_FLOAT64_C( -1.09), SIMDE_FLOAT64_C( -3.03), SIMDE_FLOAT64_C( 19.47) }, { SIMDE_FLOAT64_C( 21.52), SIMDE_FLOAT64_C( 40.73), SIMDE_FLOAT64_C( -62.31), SIMDE_FLOAT64_C( -96.08), SIMDE_FLOAT64_C( -1.32), SIMDE_FLOAT64_C( -24.44), SIMDE_FLOAT64_C( 87.79), SIMDE_FLOAT64_C( 18.12) }, { SIMDE_FLOAT64_C(-58154024.96), SIMDE_FLOAT64_C( -845.80), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -965.66), SIMDE_FLOAT64_C( -15.16), SIMDE_FLOAT64_C( -41.83), SIMDE_FLOAT64_C( 298.33), SIMDE_FLOAT64_C(5103943.68) } }, { { SIMDE_FLOAT64_C( 21.90), SIMDE_FLOAT64_C( -732.90), SIMDE_FLOAT64_C( -290.17), SIMDE_FLOAT64_C( -259.18), SIMDE_FLOAT64_C( 105.25), SIMDE_FLOAT64_C( 19.99), SIMDE_FLOAT64_C( -20.01), SIMDE_FLOAT64_C( 252.01) }, UINT8_C( 47), { SIMDE_FLOAT64_C( 43.41), SIMDE_FLOAT64_C( -81.90), SIMDE_FLOAT64_C( -70.04), SIMDE_FLOAT64_C( -70.03), SIMDE_FLOAT64_C( -43.98), SIMDE_FLOAT64_C( -94.97), SIMDE_FLOAT64_C( 48.05), SIMDE_FLOAT64_C( 97.68) }, { SIMDE_FLOAT64_C( 46.33), SIMDE_FLOAT64_C( 42.68), SIMDE_FLOAT64_C( -73.81), SIMDE_FLOAT64_C( 84.94), SIMDE_FLOAT64_C( 15.46), SIMDE_FLOAT64_C( 46.48), SIMDE_FLOAT64_C( -94.29), SIMDE_FLOAT64_C( 87.73) }, { SIMDE_FLOAT64_C(3054707184752394.00), SIMDE_FLOAT64_C(-360200009259417.62), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C(-1354577202361799719665008640.00), SIMDE_FLOAT64_C( 105.25), SIMDE_FLOAT64_C(-6682919634552750.00), SIMDE_FLOAT64_C( -20.01), SIMDE_FLOAT64_C( 252.01) } }, { { SIMDE_FLOAT64_C( 479.53), SIMDE_FLOAT64_C( 279.33), SIMDE_FLOAT64_C( 409.11), SIMDE_FLOAT64_C( -981.28), SIMDE_FLOAT64_C( -254.11), SIMDE_FLOAT64_C( 284.65), SIMDE_FLOAT64_C( -745.27), SIMDE_FLOAT64_C( -608.42) }, UINT8_C( 4), { SIMDE_FLOAT64_C( 55.51), SIMDE_FLOAT64_C( 53.58), SIMDE_FLOAT64_C( -80.50), SIMDE_FLOAT64_C( 94.89), SIMDE_FLOAT64_C( -47.51), SIMDE_FLOAT64_C( 16.47), SIMDE_FLOAT64_C( 14.36), SIMDE_FLOAT64_C( 74.01) }, { SIMDE_FLOAT64_C( -42.81), SIMDE_FLOAT64_C( 52.05), SIMDE_FLOAT64_C( 77.93), SIMDE_FLOAT64_C( 55.87), SIMDE_FLOAT64_C( -72.39), SIMDE_FLOAT64_C( 65.72), SIMDE_FLOAT64_C( -26.01), SIMDE_FLOAT64_C( 71.02) }, { SIMDE_FLOAT64_C( 479.53), SIMDE_FLOAT64_C( 279.33), SIMDE_FLOAT64_C(-12164816059872206070480896.00), SIMDE_FLOAT64_C( -981.28), SIMDE_FLOAT64_C( -254.11), SIMDE_FLOAT64_C( 284.65), SIMDE_FLOAT64_C( -745.27), SIMDE_FLOAT64_C( -608.42) } }, { { SIMDE_FLOAT64_C( -974.30), SIMDE_FLOAT64_C( 255.92), SIMDE_FLOAT64_C( 814.19), SIMDE_FLOAT64_C( 729.95), SIMDE_FLOAT64_C( -571.28), SIMDE_FLOAT64_C( 968.38), SIMDE_FLOAT64_C( 742.63), SIMDE_FLOAT64_C( -536.94) }, UINT8_C( 19), { SIMDE_FLOAT64_C( 83.81), SIMDE_FLOAT64_C( 3.95), SIMDE_FLOAT64_C( -99.01), SIMDE_FLOAT64_C( -60.17), SIMDE_FLOAT64_C( 8.98), SIMDE_FLOAT64_C( 49.03), SIMDE_FLOAT64_C( -62.49), SIMDE_FLOAT64_C( -44.69) }, { SIMDE_FLOAT64_C( -8.29), SIMDE_FLOAT64_C( -36.29), SIMDE_FLOAT64_C( -59.76), SIMDE_FLOAT64_C( -92.83), SIMDE_FLOAT64_C( -89.81), SIMDE_FLOAT64_C( -54.04), SIMDE_FLOAT64_C( 94.90), SIMDE_FLOAT64_C( 65.70) }, { SIMDE_FLOAT64_C( 0.16), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 814.19), SIMDE_FLOAT64_C( 729.95), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 968.38), SIMDE_FLOAT64_C( 742.63), SIMDE_FLOAT64_C( -536.94) } }, { { SIMDE_FLOAT64_C( -299.20), SIMDE_FLOAT64_C( 761.39), SIMDE_FLOAT64_C( -630.98), SIMDE_FLOAT64_C( -293.69), SIMDE_FLOAT64_C( -216.71), SIMDE_FLOAT64_C( -363.88), SIMDE_FLOAT64_C( 416.14), SIMDE_FLOAT64_C( 524.11) }, UINT8_C(105), { SIMDE_FLOAT64_C( 99.53), SIMDE_FLOAT64_C( -85.60), SIMDE_FLOAT64_C( 60.58), SIMDE_FLOAT64_C( -47.97), SIMDE_FLOAT64_C( 30.86), SIMDE_FLOAT64_C( -25.06), SIMDE_FLOAT64_C( -73.96), SIMDE_FLOAT64_C( 88.06) }, { SIMDE_FLOAT64_C( -73.01), SIMDE_FLOAT64_C( -96.03), SIMDE_FLOAT64_C( 43.92), SIMDE_FLOAT64_C( -45.40), SIMDE_FLOAT64_C( 69.68), SIMDE_FLOAT64_C( -82.09), SIMDE_FLOAT64_C( -74.38), SIMDE_FLOAT64_C( 53.49) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 761.39), SIMDE_FLOAT64_C( -630.98), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -216.71), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 524.11) } }, { { SIMDE_FLOAT64_C( -563.87), SIMDE_FLOAT64_C( -495.90), SIMDE_FLOAT64_C( -6.62), SIMDE_FLOAT64_C( -484.29), SIMDE_FLOAT64_C( 983.63), SIMDE_FLOAT64_C( -727.29), SIMDE_FLOAT64_C( 924.82), SIMDE_FLOAT64_C( -997.65) }, UINT8_C(190), { SIMDE_FLOAT64_C( 21.87), SIMDE_FLOAT64_C( -73.39), SIMDE_FLOAT64_C( 93.33), SIMDE_FLOAT64_C( -69.15), SIMDE_FLOAT64_C( 75.64), SIMDE_FLOAT64_C( -69.16), SIMDE_FLOAT64_C( -13.85), SIMDE_FLOAT64_C( -32.65) }, { SIMDE_FLOAT64_C( -5.45), SIMDE_FLOAT64_C( 26.40), SIMDE_FLOAT64_C( -25.48), SIMDE_FLOAT64_C( 4.73), SIMDE_FLOAT64_C( 72.36), SIMDE_FLOAT64_C( -30.58), SIMDE_FLOAT64_C( -29.57), SIMDE_FLOAT64_C( 71.89) }, { SIMDE_FLOAT64_C( -563.87), SIMDE_FLOAT64_C(-4925119528.96), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -1106.40), SIMDE_FLOAT64_C(357199800764259966648320.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 924.82), SIMDE_FLOAT64_C(-77092632832846954758144.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m512d src = simde_mm512_loadu_pd(test_vec[i].src); simde__m512d a = simde_mm512_loadu_pd(test_vec[i].a); simde__m512d b = simde_mm512_loadu_pd(test_vec[i].b); simde__m512d r = simde_mm512_mask_scalef_pd(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x8_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m512d src = simde_test_x86_random_f64x8(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m512d a = simde_test_x86_random_extract_f64x8(i, 2, 0, values); simde__m512d b = simde_test_x86_random_extract_f64x8(i, 2, 1, values); simde__m512d r = simde_mm512_mask_scalef_pd(src, k, a, b); simde_test_x86_write_f64x8(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm512_maskz_scalef_pd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float64 a[8]; const simde_float64 b[8]; const simde_float64 r[8]; } test_vec[] = { { UINT8_C( 75), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -74.29), SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -37.41), SIMDE_FLOAT64_C( -71.72), SIMDE_FLOAT64_C( -33.39), SIMDE_FLOAT64_C( -55.99), SIMDE_FLOAT64_C( -98.73) }, { SIMDE_FLOAT64_C( 9.48), SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 55.79), SIMDE_FLOAT64_C( 20.45), SIMDE_FLOAT64_C( -54.38), SIMDE_FLOAT64_C( 31.93), SIMDE_FLOAT64_C( 57.36) }, { SIMDE_MATH_NAN, SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-1347837296479441920.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-120237609451.52), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(115), { SIMDE_FLOAT64_C( 16.25), SIMDE_FLOAT64_C( -89.74), SIMDE_FLOAT64_C( -79.03), SIMDE_FLOAT64_C( -42.14), SIMDE_FLOAT64_C( 62.67), SIMDE_FLOAT64_C( 95.10), SIMDE_FLOAT64_C( 1.47), SIMDE_FLOAT64_C( -86.92) }, { SIMDE_FLOAT64_C( -5.56), SIMDE_FLOAT64_C( 53.05), SIMDE_FLOAT64_C( -88.56), SIMDE_FLOAT64_C( 21.71), SIMDE_FLOAT64_C( 45.53), SIMDE_FLOAT64_C( -88.32), SIMDE_FLOAT64_C( -76.43), SIMDE_FLOAT64_C( -33.52) }, { SIMDE_FLOAT64_C( 0.25), SIMDE_FLOAT64_C(-808306061120456576.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(2205004598807101.50), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(182), { SIMDE_FLOAT64_C( -62.62), SIMDE_FLOAT64_C( 64.59), SIMDE_FLOAT64_C( 29.06), SIMDE_FLOAT64_C( -34.34), SIMDE_FLOAT64_C( -68.80), SIMDE_FLOAT64_C( 73.07), SIMDE_FLOAT64_C( -33.07), SIMDE_FLOAT64_C( 40.68) }, { SIMDE_FLOAT64_C( -86.09), SIMDE_FLOAT64_C( -57.53), SIMDE_FLOAT64_C( -3.53), SIMDE_FLOAT64_C( 34.36), SIMDE_FLOAT64_C( -11.91), SIMDE_FLOAT64_C( -71.60), SIMDE_FLOAT64_C( -8.28), SIMDE_FLOAT64_C( -95.66) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 1.82), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.02), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C( 11), { SIMDE_FLOAT64_C( -61.35), SIMDE_FLOAT64_C( 12.69), SIMDE_FLOAT64_C( -37.80), SIMDE_FLOAT64_C( -98.68), SIMDE_FLOAT64_C( 7.79), SIMDE_FLOAT64_C( 63.67), SIMDE_FLOAT64_C( -85.60), SIMDE_FLOAT64_C( -97.77) }, { SIMDE_FLOAT64_C( 16.72), SIMDE_FLOAT64_C( -74.16), SIMDE_FLOAT64_C( 23.94), SIMDE_FLOAT64_C( -37.75), SIMDE_FLOAT64_C( -62.49), SIMDE_FLOAT64_C( 47.52), SIMDE_FLOAT64_C( 28.72), SIMDE_FLOAT64_C( -25.10) }, { SIMDE_FLOAT64_C(-4020633.60), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C( 86), { SIMDE_FLOAT64_C( 12.11), SIMDE_FLOAT64_C( -42.22), SIMDE_FLOAT64_C( 40.56), SIMDE_FLOAT64_C( 43.31), SIMDE_FLOAT64_C( -69.15), SIMDE_FLOAT64_C( -92.51), SIMDE_FLOAT64_C( -16.01), SIMDE_FLOAT64_C( -55.24) }, { SIMDE_FLOAT64_C( -50.04), SIMDE_FLOAT64_C( 80.46), SIMDE_FLOAT64_C( 79.12), SIMDE_FLOAT64_C( 38.05), SIMDE_FLOAT64_C( -91.14), SIMDE_FLOAT64_C( -29.16), SIMDE_FLOAT64_C( 42.39), SIMDE_FLOAT64_C( -52.49) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-51040848104129642381705216.00), SIMDE_FLOAT64_C(24517015621784681037430784.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-70412724642775.05), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(100), { SIMDE_FLOAT64_C( 83.52), SIMDE_FLOAT64_C( -95.42), SIMDE_FLOAT64_C( -51.17), SIMDE_FLOAT64_C( -8.69), SIMDE_FLOAT64_C( 68.26), SIMDE_FLOAT64_C( -36.77), SIMDE_FLOAT64_C( -6.45), SIMDE_FLOAT64_C( -15.03) }, { SIMDE_FLOAT64_C( -10.93), SIMDE_FLOAT64_C( -82.51), SIMDE_FLOAT64_C( 47.22), SIMDE_FLOAT64_C( 26.58), SIMDE_FLOAT64_C( 65.01), SIMDE_FLOAT64_C( -24.06), SIMDE_FLOAT64_C( -98.52), SIMDE_FLOAT64_C( -22.88) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(-7201537279142134.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C(135), { SIMDE_FLOAT64_C( 33.72), SIMDE_FLOAT64_C( 42.04), SIMDE_FLOAT64_C( -79.57), SIMDE_FLOAT64_C( 64.57), SIMDE_FLOAT64_C( 49.53), SIMDE_FLOAT64_C( 4.42), SIMDE_FLOAT64_C( -90.67), SIMDE_FLOAT64_C( 99.49) }, { SIMDE_FLOAT64_C( -15.11), SIMDE_FLOAT64_C( 88.45), SIMDE_FLOAT64_C( 37.55), SIMDE_FLOAT64_C( -6.25), SIMDE_FLOAT64_C( -40.71), SIMDE_FLOAT64_C( -20.07), SIMDE_FLOAT64_C( 41.26), SIMDE_FLOAT64_C( -57.19) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C(13010749812889346425307004928.00), SIMDE_FLOAT64_C(-10936017527767.04), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, { UINT8_C( 5), { SIMDE_FLOAT64_C( -15.48), SIMDE_FLOAT64_C( 90.09), SIMDE_FLOAT64_C( 34.13), SIMDE_FLOAT64_C( -47.23), SIMDE_FLOAT64_C( -46.68), SIMDE_FLOAT64_C( -72.33), SIMDE_FLOAT64_C( 37.75), SIMDE_FLOAT64_C( 42.39) }, { SIMDE_FLOAT64_C( -54.84), SIMDE_FLOAT64_C( -15.03), SIMDE_FLOAT64_C( -31.03), SIMDE_FLOAT64_C( -89.83), SIMDE_FLOAT64_C( 60.91), SIMDE_FLOAT64_C( -29.55), SIMDE_FLOAT64_C( -12.71), SIMDE_FLOAT64_C( -5.37) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 0.00) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m512d a = simde_mm512_loadu_pd(test_vec[i].a); simde__m512d b = simde_mm512_loadu_pd(test_vec[i].b); simde__m512d r = simde_mm512_maskz_scalef_pd(test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x8(r, simde_mm512_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x8_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m512d a = simde_test_x86_random_extract_f64x8(i, 2, 0, values); simde__m512d b = simde_test_x86_random_extract_f64x8(i, 2, 1, values); simde__m512d r = simde_mm512_maskz_scalef_pd(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x8(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x8(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x8(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_scalef_ss (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 a[4]; const simde_float32 b[4]; const simde_float32 r[4]; } test_vec[] = { { { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 8.46), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -43.86) }, { SIMDE_FLOAT32_C( 2.77), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 94.26) }, { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 8.46), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -43.86) } }, { { SIMDE_FLOAT32_C( 22.22), SIMDE_FLOAT32_C( 99.63), SIMDE_FLOAT32_C( 63.82), SIMDE_FLOAT32_C( -81.67) }, { SIMDE_FLOAT32_C( 56.56), SIMDE_FLOAT32_C( -8.28), SIMDE_FLOAT32_C( -19.28), SIMDE_FLOAT32_C( -43.97) }, { SIMDE_FLOAT32_C(1601119690044735488.00), SIMDE_FLOAT32_C( 99.63), SIMDE_FLOAT32_C( 63.82), SIMDE_FLOAT32_C( -81.67) } }, { { SIMDE_FLOAT32_C( -70.33), SIMDE_FLOAT32_C( 37.05), SIMDE_FLOAT32_C( -71.07), SIMDE_FLOAT32_C( 34.14) }, { SIMDE_FLOAT32_C( -79.13), SIMDE_FLOAT32_C( 49.31), SIMDE_FLOAT32_C( -6.87), SIMDE_FLOAT32_C( 71.23) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 37.05), SIMDE_FLOAT32_C( -71.07), SIMDE_FLOAT32_C( 34.14) } }, { { SIMDE_FLOAT32_C( 29.98), SIMDE_FLOAT32_C( 69.93), SIMDE_FLOAT32_C( -39.05), SIMDE_FLOAT32_C( -77.82) }, { SIMDE_FLOAT32_C( -34.23), SIMDE_FLOAT32_C( -95.61), SIMDE_FLOAT32_C( -20.06), SIMDE_FLOAT32_C( 75.82) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 69.93), SIMDE_FLOAT32_C( -39.05), SIMDE_FLOAT32_C( -77.82) } }, { { SIMDE_FLOAT32_C( 12.85), SIMDE_FLOAT32_C( 72.11), SIMDE_FLOAT32_C( -68.04), SIMDE_FLOAT32_C( -84.38) }, { SIMDE_FLOAT32_C( 93.74), SIMDE_FLOAT32_C( -93.74), SIMDE_FLOAT32_C( -90.12), SIMDE_FLOAT32_C( 15.95) }, { SIMDE_FLOAT32_C(127260239816430278555346141184.00), SIMDE_FLOAT32_C( 72.11), SIMDE_FLOAT32_C( -68.04), SIMDE_FLOAT32_C( -84.38) } }, { { SIMDE_FLOAT32_C( -94.12), SIMDE_FLOAT32_C( 73.70), SIMDE_FLOAT32_C( 34.29), SIMDE_FLOAT32_C( 62.45) }, { SIMDE_FLOAT32_C( -34.57), SIMDE_FLOAT32_C( -85.00), SIMDE_FLOAT32_C( -81.52), SIMDE_FLOAT32_C( -4.90) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( 73.70), SIMDE_FLOAT32_C( 34.29), SIMDE_FLOAT32_C( 62.45) } }, { { SIMDE_FLOAT32_C( 52.06), SIMDE_FLOAT32_C( -52.60), SIMDE_FLOAT32_C( -70.76), SIMDE_FLOAT32_C( 72.93) }, { SIMDE_FLOAT32_C( 96.71), SIMDE_FLOAT32_C( 22.38), SIMDE_FLOAT32_C( 44.16), SIMDE_FLOAT32_C( 26.69) }, { SIMDE_FLOAT32_C(4124618249295925180436523778048.00), SIMDE_FLOAT32_C( -52.60), SIMDE_FLOAT32_C( -70.76), SIMDE_FLOAT32_C( 72.93) } }, { { SIMDE_FLOAT32_C( -7.69), SIMDE_FLOAT32_C( -94.90), SIMDE_FLOAT32_C( 48.88), SIMDE_FLOAT32_C( 58.08) }, { SIMDE_FLOAT32_C( -90.51), SIMDE_FLOAT32_C( -71.19), SIMDE_FLOAT32_C( 33.90), SIMDE_FLOAT32_C( 22.34) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -94.90), SIMDE_FLOAT32_C( 48.88), SIMDE_FLOAT32_C( 58.08) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128 a = simde_mm_loadu_ps(test_vec[i].a); simde__m128 b = simde_mm_loadu_ps(test_vec[i].b); simde__m128 r = simde_mm_scalef_ss(a, b); simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x4_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values); simde__m128 b = simde_test_x86_random_extract_f32x4(i, 2, 1, values); simde__m128 r = simde_mm_scalef_ss(a, b); simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_mask_scalef_ss (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float32 src[4]; const simde__mmask8 k; const simde_float32 a[4]; const simde_float32 b[4]; const simde_float32 r[4]; } test_vec[] = { { { SIMDE_FLOAT32_C( 321.56), SIMDE_FLOAT32_C( 103.07), SIMDE_FLOAT32_C( 870.41), SIMDE_FLOAT32_C( 353.61) }, UINT8_C( 68), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 14.74), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -72.92) }, { SIMDE_FLOAT32_C( 42.33), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -50.64) }, { SIMDE_FLOAT32_C( 321.56), SIMDE_FLOAT32_C( 14.74), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -72.92) } }, { { SIMDE_FLOAT32_C( 573.63), SIMDE_FLOAT32_C( -621.46), SIMDE_FLOAT32_C( -603.81), SIMDE_FLOAT32_C( -953.39) }, UINT8_C(119), { SIMDE_FLOAT32_C( -0.71), SIMDE_FLOAT32_C( -1.98), SIMDE_FLOAT32_C( -23.02), SIMDE_FLOAT32_C( 52.28) }, { SIMDE_FLOAT32_C( 95.17), SIMDE_FLOAT32_C( -63.55), SIMDE_FLOAT32_C( 71.25), SIMDE_FLOAT32_C( 69.36) }, { SIMDE_FLOAT32_C(-28125996842537872929171963904.00), SIMDE_FLOAT32_C( -1.98), SIMDE_FLOAT32_C( -23.02), SIMDE_FLOAT32_C( 52.28) } }, { { SIMDE_FLOAT32_C( 484.51), SIMDE_FLOAT32_C( -115.93), SIMDE_FLOAT32_C( 186.45), SIMDE_FLOAT32_C( -733.62) }, UINT8_C( 47), { SIMDE_FLOAT32_C( 64.20), SIMDE_FLOAT32_C( -96.12), SIMDE_FLOAT32_C( -96.39), SIMDE_FLOAT32_C( -17.49) }, { SIMDE_FLOAT32_C( -36.36), SIMDE_FLOAT32_C( -78.88), SIMDE_FLOAT32_C( -0.44), SIMDE_FLOAT32_C( 32.66) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -96.12), SIMDE_FLOAT32_C( -96.39), SIMDE_FLOAT32_C( -17.49) } }, { { SIMDE_FLOAT32_C( 485.42), SIMDE_FLOAT32_C( 84.35), SIMDE_FLOAT32_C( -331.91), SIMDE_FLOAT32_C( -579.17) }, UINT8_C(110), { SIMDE_FLOAT32_C( 35.09), SIMDE_FLOAT32_C( -20.10), SIMDE_FLOAT32_C( 97.37), SIMDE_FLOAT32_C( -96.10) }, { SIMDE_FLOAT32_C( -27.26), SIMDE_FLOAT32_C( -36.11), SIMDE_FLOAT32_C( -8.13), SIMDE_FLOAT32_C( -49.72) }, { SIMDE_FLOAT32_C( 485.42), SIMDE_FLOAT32_C( -20.10), SIMDE_FLOAT32_C( 97.37), SIMDE_FLOAT32_C( -96.10) } }, { { SIMDE_FLOAT32_C( -31.73), SIMDE_FLOAT32_C( -317.18), SIMDE_FLOAT32_C( -506.44), SIMDE_FLOAT32_C( -932.52) }, UINT8_C( 58), { SIMDE_FLOAT32_C( 78.63), SIMDE_FLOAT32_C( 98.37), SIMDE_FLOAT32_C( -22.64), SIMDE_FLOAT32_C( 20.96) }, { SIMDE_FLOAT32_C( -96.80), SIMDE_FLOAT32_C( -84.35), SIMDE_FLOAT32_C( 70.32), SIMDE_FLOAT32_C( 2.49) }, { SIMDE_FLOAT32_C( -31.73), SIMDE_FLOAT32_C( 98.37), SIMDE_FLOAT32_C( -22.64), SIMDE_FLOAT32_C( 20.96) } }, { { SIMDE_FLOAT32_C( -87.31), SIMDE_FLOAT32_C( 894.08), SIMDE_FLOAT32_C( 793.10), SIMDE_FLOAT32_C( -749.47) }, UINT8_C( 58), { SIMDE_FLOAT32_C( 13.66), SIMDE_FLOAT32_C( -52.70), SIMDE_FLOAT32_C( -45.23), SIMDE_FLOAT32_C( 8.83) }, { SIMDE_FLOAT32_C( -16.25), SIMDE_FLOAT32_C( -73.98), SIMDE_FLOAT32_C( -21.81), SIMDE_FLOAT32_C( -52.06) }, { SIMDE_FLOAT32_C( -87.31), SIMDE_FLOAT32_C( -52.70), SIMDE_FLOAT32_C( -45.23), SIMDE_FLOAT32_C( 8.83) } }, { { SIMDE_FLOAT32_C( -546.05), SIMDE_FLOAT32_C( 572.09), SIMDE_FLOAT32_C( 326.61), SIMDE_FLOAT32_C( -675.63) }, UINT8_C( 85), { SIMDE_FLOAT32_C( -70.10), SIMDE_FLOAT32_C( -18.20), SIMDE_FLOAT32_C( 30.46), SIMDE_FLOAT32_C( -6.46) }, { SIMDE_FLOAT32_C( 2.91), SIMDE_FLOAT32_C( -69.98), SIMDE_FLOAT32_C( -73.80), SIMDE_FLOAT32_C( -61.99) }, { SIMDE_FLOAT32_C( -280.40), SIMDE_FLOAT32_C( -18.20), SIMDE_FLOAT32_C( 30.46), SIMDE_FLOAT32_C( -6.46) } }, { { SIMDE_FLOAT32_C( -413.85), SIMDE_FLOAT32_C( 897.99), SIMDE_FLOAT32_C( 304.24), SIMDE_FLOAT32_C( -17.66) }, UINT8_C( 74), { SIMDE_FLOAT32_C( 9.92), SIMDE_FLOAT32_C( -76.43), SIMDE_FLOAT32_C( -58.09), SIMDE_FLOAT32_C( 82.66) }, { SIMDE_FLOAT32_C( -12.54), SIMDE_FLOAT32_C( 33.78), SIMDE_FLOAT32_C( -67.05), SIMDE_FLOAT32_C( -33.92) }, { SIMDE_FLOAT32_C( -413.85), SIMDE_FLOAT32_C( -76.43), SIMDE_FLOAT32_C( -58.09), SIMDE_FLOAT32_C( 82.66) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128 src = simde_mm_loadu_ps(test_vec[i].src); simde__m128 a = simde_mm_loadu_ps(test_vec[i].a); simde__m128 b = simde_mm_loadu_ps(test_vec[i].b); simde__m128 r = simde_mm_mask_scalef_ss(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x4_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128 src = simde_test_x86_random_f32x4(SIMDE_FLOAT32_C(-1000.0), SIMDE_FLOAT32_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values); simde__m128 b = simde_test_x86_random_extract_f32x4(i, 2, 1, values); simde__m128 r = simde_mm_mask_scalef_ss(src, k, a, b); simde_test_x86_write_f32x4(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_maskz_scalef_ss (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float32 a[4]; const simde_float32 b[4]; const simde_float32 r[4]; } test_vec[] = { { UINT8_C( 91), { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -13.69), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 92.32) }, { SIMDE_FLOAT32_C( -7.87), SIMDE_MATH_NANF, SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 40.59) }, { SIMDE_MATH_NANF, SIMDE_FLOAT32_C( -13.69), SIMDE_MATH_NANF, SIMDE_FLOAT32_C( 92.32) } }, { UINT8_C(186), { SIMDE_FLOAT32_C( 67.39), SIMDE_FLOAT32_C( -52.02), SIMDE_FLOAT32_C( 54.28), SIMDE_FLOAT32_C( 29.68) }, { SIMDE_FLOAT32_C( -66.62), SIMDE_FLOAT32_C( 66.41), SIMDE_FLOAT32_C( 55.44), SIMDE_FLOAT32_C( -26.62) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -52.02), SIMDE_FLOAT32_C( 54.28), SIMDE_FLOAT32_C( 29.68) } }, { UINT8_C(219), { SIMDE_FLOAT32_C( -81.80), SIMDE_FLOAT32_C( 26.08), SIMDE_FLOAT32_C( 64.57), SIMDE_FLOAT32_C( -95.69) }, { SIMDE_FLOAT32_C( 75.38), SIMDE_FLOAT32_C( -99.29), SIMDE_FLOAT32_C( 88.91), SIMDE_FLOAT32_C( -94.01) }, { SIMDE_FLOAT32_C(-3090316741682046288527360.00), SIMDE_FLOAT32_C( 26.08), SIMDE_FLOAT32_C( 64.57), SIMDE_FLOAT32_C( -95.69) } }, { UINT8_C(121), { SIMDE_FLOAT32_C( -17.89), SIMDE_FLOAT32_C( -96.36), SIMDE_FLOAT32_C( 42.61), SIMDE_FLOAT32_C( -46.05) }, { SIMDE_FLOAT32_C( -69.23), SIMDE_FLOAT32_C( 42.52), SIMDE_FLOAT32_C( -33.23), SIMDE_FLOAT32_C( 79.27) }, { SIMDE_FLOAT32_C( -0.00), SIMDE_FLOAT32_C( -96.36), SIMDE_FLOAT32_C( 42.61), SIMDE_FLOAT32_C( -46.05) } }, { UINT8_C(188), { SIMDE_FLOAT32_C( -71.17), SIMDE_FLOAT32_C( 2.07), SIMDE_FLOAT32_C( 71.59), SIMDE_FLOAT32_C( 20.96) }, { SIMDE_FLOAT32_C( 50.12), SIMDE_FLOAT32_C( 64.72), SIMDE_FLOAT32_C( -38.45), SIMDE_FLOAT32_C( 17.51) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( 2.07), SIMDE_FLOAT32_C( 71.59), SIMDE_FLOAT32_C( 20.96) } }, { UINT8_C( 40), { SIMDE_FLOAT32_C( -87.30), SIMDE_FLOAT32_C( -84.17), SIMDE_FLOAT32_C( -52.81), SIMDE_FLOAT32_C( -53.92) }, { SIMDE_FLOAT32_C( 82.24), SIMDE_FLOAT32_C( -97.37), SIMDE_FLOAT32_C( 19.46), SIMDE_FLOAT32_C( -99.56) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -84.17), SIMDE_FLOAT32_C( -52.81), SIMDE_FLOAT32_C( -53.92) } }, { UINT8_C(121), { SIMDE_FLOAT32_C( 28.72), SIMDE_FLOAT32_C( -15.97), SIMDE_FLOAT32_C( -95.25), SIMDE_FLOAT32_C( 4.09) }, { SIMDE_FLOAT32_C( -15.26), SIMDE_FLOAT32_C( 93.67), SIMDE_FLOAT32_C( 10.09), SIMDE_FLOAT32_C( 66.85) }, { SIMDE_FLOAT32_C( 0.00), SIMDE_FLOAT32_C( -15.97), SIMDE_FLOAT32_C( -95.25), SIMDE_FLOAT32_C( 4.09) } }, { UINT8_C(159), { SIMDE_FLOAT32_C( 97.31), SIMDE_FLOAT32_C( -47.31), SIMDE_FLOAT32_C( -79.20), SIMDE_FLOAT32_C( -71.92) }, { SIMDE_FLOAT32_C( 95.22), SIMDE_FLOAT32_C( -12.43), SIMDE_FLOAT32_C( -92.66), SIMDE_FLOAT32_C( -75.95) }, { SIMDE_FLOAT32_C(3854846150417465776443546927104.00), SIMDE_FLOAT32_C( -47.31), SIMDE_FLOAT32_C( -79.20), SIMDE_FLOAT32_C( -71.92) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128 a = simde_mm_loadu_ps(test_vec[i].a); simde__m128 b = simde_mm_loadu_ps(test_vec[i].b); simde__m128 r = simde_mm_maskz_scalef_ss(test_vec[i].k, a, b); simde_test_x86_assert_equal_f32x4(r, simde_mm_loadu_ps(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float32 values[8 * 2 * sizeof(simde__m128)]; simde_test_x86_random_f32x4_full(8, 2, values, -100.0f, 100.0f, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128 a = simde_test_x86_random_extract_f32x4(i, 2, 0, values); simde__m128 b = simde_test_x86_random_extract_f32x4(i, 2, 1, values); simde__m128 r = simde_mm_maskz_scalef_ss(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f32x4(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f32x4(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_scalef_sd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 a[2]; const simde_float64 b[2]; const simde_float64 r[2]; } test_vec[] = { { { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -7.28) }, { SIMDE_FLOAT64_C( 15.70), SIMDE_MATH_NAN }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -7.28) } }, { { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -32.67) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -36.49) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -32.67) } }, { { SIMDE_FLOAT64_C( 74.68), SIMDE_FLOAT64_C( 88.10) }, { SIMDE_FLOAT64_C( 15.04), SIMDE_FLOAT64_C( 11.85) }, { SIMDE_FLOAT64_C(2447114.24), SIMDE_FLOAT64_C( 88.10) } }, { { SIMDE_FLOAT64_C( -68.62), SIMDE_FLOAT64_C( 24.41) }, { SIMDE_FLOAT64_C( 76.59), SIMDE_FLOAT64_C( 61.07) }, { SIMDE_FLOAT64_C(-5184780608872241216618496.00), SIMDE_FLOAT64_C( 24.41) } }, { { SIMDE_FLOAT64_C( -35.11), SIMDE_FLOAT64_C( 50.04) }, { SIMDE_FLOAT64_C( 67.17), SIMDE_FLOAT64_C( -63.07) }, { SIMDE_FLOAT64_C(-5181321475423538774016.00), SIMDE_FLOAT64_C( 50.04) } }, { { SIMDE_FLOAT64_C( 39.02), SIMDE_FLOAT64_C( -47.15) }, { SIMDE_FLOAT64_C( 76.34), SIMDE_FLOAT64_C( 7.26) }, { SIMDE_FLOAT64_C(2948267842585177136037888.00), SIMDE_FLOAT64_C( -47.15) } }, { { SIMDE_FLOAT64_C( 27.11), SIMDE_FLOAT64_C( 65.60) }, { SIMDE_FLOAT64_C( 84.64), SIMDE_FLOAT64_C( 93.98) }, { SIMDE_FLOAT64_C(524383663516041539825434624.00), SIMDE_FLOAT64_C( 65.60) } }, { { SIMDE_FLOAT64_C( 79.86), SIMDE_FLOAT64_C( 22.49) }, { SIMDE_FLOAT64_C( -72.03), SIMDE_FLOAT64_C( -51.51) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 22.49) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128d a = simde_mm_loadu_pd(test_vec[i].a); simde__m128d b = simde_mm_loadu_pd(test_vec[i].b); simde__m128d r = simde_mm_scalef_sd(a, b); simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x2_full(8, 2, values, -100.0, 100.0, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128d a = simde_test_x86_random_extract_f64x2(i, 2, 0, values); simde__m128d b = simde_test_x86_random_extract_f64x2(i, 2, 1, values); simde__m128d r = simde_mm_scalef_sd(a, b); simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_mask_scalef_sd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde_float64 src[2]; const simde__mmask8 k; const simde_float64 a[2]; const simde_float64 b[2]; const simde_float64 r[2]; } test_vec[] = { { { SIMDE_FLOAT64_C( -756.00), SIMDE_FLOAT64_C( 511.84) }, UINT8_C( 43), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 43.68) }, { SIMDE_FLOAT64_C( 61.65), SIMDE_MATH_NAN }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 43.68) } }, { { SIMDE_FLOAT64_C( -645.93), SIMDE_FLOAT64_C( -177.17) }, UINT8_C( 56), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 31.10) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 85.68) }, { SIMDE_FLOAT64_C( -645.93), SIMDE_FLOAT64_C( 31.10) } }, { { SIMDE_FLOAT64_C( -789.10), SIMDE_FLOAT64_C( -985.21) }, UINT8_C(154), { SIMDE_FLOAT64_C( 19.20), SIMDE_FLOAT64_C( 93.02) }, { SIMDE_FLOAT64_C( -2.47), SIMDE_FLOAT64_C( 50.57) }, { SIMDE_FLOAT64_C( -789.10), SIMDE_FLOAT64_C( 93.02) } }, { { SIMDE_FLOAT64_C( 186.22), SIMDE_FLOAT64_C( 520.54) }, UINT8_C(150), { SIMDE_FLOAT64_C( 17.42), SIMDE_FLOAT64_C( -25.88) }, { SIMDE_FLOAT64_C( 11.64), SIMDE_FLOAT64_C( 82.31) }, { SIMDE_FLOAT64_C( 186.22), SIMDE_FLOAT64_C( -25.88) } }, { { SIMDE_FLOAT64_C( 927.41), SIMDE_FLOAT64_C( -363.02) }, UINT8_C(111), { SIMDE_FLOAT64_C( -75.84), SIMDE_FLOAT64_C( -21.19) }, { SIMDE_FLOAT64_C( -80.76), SIMDE_FLOAT64_C( 63.18) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -21.19) } }, { { SIMDE_FLOAT64_C( -830.99), SIMDE_FLOAT64_C( 425.11) }, UINT8_C(181), { SIMDE_FLOAT64_C( 31.66), SIMDE_FLOAT64_C( 95.59) }, { SIMDE_FLOAT64_C( -29.56), SIMDE_FLOAT64_C( -41.23) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 95.59) } }, { { SIMDE_FLOAT64_C( 800.81), SIMDE_FLOAT64_C( -258.28) }, UINT8_C(152), { SIMDE_FLOAT64_C( 61.19), SIMDE_FLOAT64_C( -44.92) }, { SIMDE_FLOAT64_C( -47.25), SIMDE_FLOAT64_C( 41.05) }, { SIMDE_FLOAT64_C( 800.81), SIMDE_FLOAT64_C( -44.92) } }, { { SIMDE_FLOAT64_C( -494.75), SIMDE_FLOAT64_C( 329.42) }, UINT8_C( 55), { SIMDE_FLOAT64_C( 77.57), SIMDE_FLOAT64_C( -19.28) }, { SIMDE_FLOAT64_C( 89.53), SIMDE_FLOAT64_C( 92.79) }, { SIMDE_FLOAT64_C(48013504423683469739837882368.00), SIMDE_FLOAT64_C( -19.28) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128d src = simde_mm_loadu_pd(test_vec[i].src); simde__m128d a = simde_mm_loadu_pd(test_vec[i].a); simde__m128d b = simde_mm_loadu_pd(test_vec[i].b); simde__m128d r = simde_mm_mask_scalef_sd(src, test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x2_full(8, 2, values, -100.0, 100.0, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__m128d src = simde_test_x86_random_f64x2(SIMDE_FLOAT64_C(-1000.0), SIMDE_FLOAT64_C(1000.0)); simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128d a = simde_test_x86_random_extract_f64x2(i, 2, 0, values); simde__m128d b = simde_test_x86_random_extract_f64x2(i, 2, 1, values); simde__m128d r = simde_mm_mask_scalef_sd(src, k, a, b); simde_test_x86_write_f64x2(2, src, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } static int test_simde_mm_maskz_scalef_sd (SIMDE_MUNIT_TEST_ARGS) { #if 1 static const struct { const simde__mmask8 k; const simde_float64 a[2]; const simde_float64 b[2]; const simde_float64 r[2]; } test_vec[] = { { UINT8_C( 22), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( 85.69) }, { SIMDE_FLOAT64_C( -4.94), SIMDE_MATH_NAN }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( 85.69) } }, { UINT8_C(108), { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -15.41) }, { SIMDE_MATH_NAN, SIMDE_FLOAT64_C( -9.18) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -15.41) } }, { UINT8_C( 87), { SIMDE_FLOAT64_C( -64.22), SIMDE_FLOAT64_C( -16.77) }, { SIMDE_FLOAT64_C( 26.22), SIMDE_FLOAT64_C( 18.06) }, { SIMDE_FLOAT64_C(-4309731246.08), SIMDE_FLOAT64_C( -16.77) } }, { UINT8_C( 35), { SIMDE_FLOAT64_C( 68.46), SIMDE_FLOAT64_C( 47.31) }, { SIMDE_FLOAT64_C( 19.54), SIMDE_FLOAT64_C( -53.28) }, { SIMDE_FLOAT64_C(35892756.48), SIMDE_FLOAT64_C( 47.31) } }, { UINT8_C(199), { SIMDE_FLOAT64_C( -34.06), SIMDE_FLOAT64_C( -28.41) }, { SIMDE_FLOAT64_C( -57.61), SIMDE_FLOAT64_C( -41.32) }, { SIMDE_FLOAT64_C( -0.00), SIMDE_FLOAT64_C( -28.41) } }, { UINT8_C(204), { SIMDE_FLOAT64_C( 35.29), SIMDE_FLOAT64_C( -79.62) }, { SIMDE_FLOAT64_C( -24.42), SIMDE_FLOAT64_C( -22.20) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -79.62) } }, { UINT8_C(246), { SIMDE_FLOAT64_C( -82.38), SIMDE_FLOAT64_C( -44.34) }, { SIMDE_FLOAT64_C( 51.97), SIMDE_FLOAT64_C( -89.56) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -44.34) } }, { UINT8_C( 76), { SIMDE_FLOAT64_C( 6.18), SIMDE_FLOAT64_C( -15.08) }, { SIMDE_FLOAT64_C( 64.45), SIMDE_FLOAT64_C( -88.21) }, { SIMDE_FLOAT64_C( 0.00), SIMDE_FLOAT64_C( -15.08) } }, }; for (size_t i = 0 ; i < (sizeof(test_vec) / sizeof(test_vec[0])) ; i++) { simde__m128d a = simde_mm_loadu_pd(test_vec[i].a); simde__m128d b = simde_mm_loadu_pd(test_vec[i].b); simde__m128d r = simde_mm_maskz_scalef_sd(test_vec[i].k, a, b); simde_test_x86_assert_equal_f64x2(r, simde_mm_loadu_pd(test_vec[i].r), 1); } return 0; #else fputc('\n', stdout); simde_float64 values[8 * 2 * sizeof(simde__m128d)]; simde_test_x86_random_f64x2_full(8, 2, values, -100.0, 100.0, SIMDE_TEST_VEC_FLOAT_NAN); for (size_t i = 0 ; i < 8 ; i++) { simde__mmask8 k = simde_test_x86_random_mmask8(); simde__m128d a = simde_test_x86_random_extract_f64x2(i, 2, 0, values); simde__m128d b = simde_test_x86_random_extract_f64x2(i, 2, 1, values); simde__m128d r = simde_mm_maskz_scalef_sd(k, a, b); simde_test_x86_write_mmask8(2, k, SIMDE_TEST_VEC_POS_FIRST); simde_test_x86_write_f64x2(2, a, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, b, SIMDE_TEST_VEC_POS_MIDDLE); simde_test_x86_write_f64x2(2, r, SIMDE_TEST_VEC_POS_LAST); } return 1; #endif } SIMDE_TEST_FUNC_LIST_BEGIN SIMDE_TEST_FUNC_LIST_ENTRY(mm_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm256_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_scalef_ps) SIMDE_TEST_FUNC_LIST_ENTRY(mm_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm256_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm256_mask_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm256_maskz_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_mask_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm512_maskz_scalef_pd) SIMDE_TEST_FUNC_LIST_ENTRY(mm_scalef_ss) SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_scalef_ss) SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_scalef_ss) SIMDE_TEST_FUNC_LIST_ENTRY(mm_scalef_sd) SIMDE_TEST_FUNC_LIST_ENTRY(mm_mask_scalef_sd) SIMDE_TEST_FUNC_LIST_ENTRY(mm_maskz_scalef_sd) SIMDE_TEST_FUNC_LIST_END #include