int main() { TEST_SET_START("20060831134500NM","NM", "llabsi2"); vec_llong2 x0_v = ((vec_llong2){ 0, 0}); vec_llong2 r0_v = ((vec_llong2){ 0, 0}); vec_llong2 x1_v = ((vec_llong2){-1, 1}); vec_llong2 r1_v = ((vec_llong2){ 1, 1}); vec_llong2 x2_v = ((vec_llong2){ 1,-1}); vec_llong2 r2_v = ((vec_llong2){ 1, 1}); // 0x7FFFFFFFFFFFFFFF vec_llong2 x3_v = ((vec_llong2){ 9223372036854775807LL,-9223372036854775807LL}); vec_llong2 r3_v = ((vec_llong2){ 9223372036854775807LL, 9223372036854775807LL}); // 0x8000000000000000 vec_llong2 x4_v = ((vec_llong2){0x8000000000000000LL,0x8000000000000000LL}); vec_llong2 r4_v = ((vec_llong2){0x8000000000000000LL,0x8000000000000000LL}); vec_llong2 res_v; TEST_START("llabsi2"); res_v = llabsi2 (x0_v); TEST_CHECK("20060831134501NM", allequal_llong2( res_v, r0_v ), 0); res_v = llabsi2 (x1_v); TEST_CHECK("20060831134502NM", allequal_llong2( res_v, r1_v ), 0); res_v = llabsi2 (x2_v); TEST_CHECK("20060831134503NM", allequal_llong2( res_v, r2_v ), 0); res_v = llabsi2 (x3_v); TEST_CHECK("20060831134504NM", allequal_llong2( res_v, r3_v ), 0); res_v = llabsi2 (x4_v); TEST_CHECK("20060831134505NM", allequal_llong2( res_v, r4_v ), 0); TEST_SET_DONE(); TEST_EXIT(); }
int main() { TestVec64_Ldexp test_a[] = { { // zero {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000400ULL,0xFFFFFFFFFFFFFC00ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL} },{ // MIN , MAX {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0x0000000000000001ULL,0x0000000000000001ULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL} },{ // Inf , -Inf {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x0000000000000001ULL,0x0000000000000001ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL} },{ #ifdef LDEXPD2_ROUND // denotmalized {0x8000000000000003ULL,0x0000000000000003ULL}, {0xFFFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x8000000000000002ULL,0x0000000000000001ULL}, {0x8000000000000001ULL,0x0000000000000002ULL}, {0x8000000000000001ULL,0x0000000000000001ULL}, {0x8000000000000002ULL,0x0000000000000002ULL} },{ // denotmalized -54 {0x0010000000000001ULL,0x8010000000000001ULL}, {0xFFFFFFFFFFFFFFCAULL,0xFFFFFFFFFFFFFFCAULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000001ULL,0x8000000000000001ULL}, {0x0000000000000000ULL,0x8000000000000000ULL} },{ // max -> ! {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0xFFFFFFFFFFFFF7CEULL,0xFFFFFFFFFFFFF7CEULL}, {0x0000000000000001ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000001ULL,0x8000000000000001ULL}, {0x0000000000000000ULL,0x8000000000000001ULL} },{ // max -> ! {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0xFFFFFFFFFFFFF7CDULL,0xFFFFFFFFFFFFF7CDULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000001ULL,0x8000000000000001ULL}, {0x0000000000000000ULL,0x8000000000000000ULL} },{ #else // LDEXPD2_ROUND // denotmalized {0x8000000000000003ULL,0x0000000000000003ULL}, {0xFFFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x8000000000000001ULL,0x0000000000000001ULL}, {0x8000000000000001ULL,0x0000000000000001ULL}, {0x8000000000000001ULL,0x0000000000000001ULL}, {0x8000000000000001ULL,0x0000000000000001ULL} },{ #endif // LDEXPD2_ROUND // denotmalized {0x0010000000000000ULL,0x8010000000000000ULL}, {0xFFFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x0008000000000000ULL,0x8008000000000000ULL}, {0x0008000000000000ULL,0x8008000000000000ULL}, {0x0008000000000000ULL,0x8008000000000000ULL}, {0x0008000000000000ULL,0x8008000000000000ULL} },{ // denotmalized {0x0008000000000000ULL,0x8008000000000000ULL}, {0x0000000000000001ULL,0x0000000000000001ULL}, {0x0010000000000000ULL,0x8010000000000000ULL}, {0x0010000000000000ULL,0x8010000000000000ULL}, {0x0010000000000000ULL,0x8010000000000000ULL}, {0x0010000000000000ULL,0x8010000000000000ULL} },{ // 1.0 {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x00000000000003ffULL,0x00000000000003ffULL}, {0x7FE0000000000000ULL,0xFFE0000000000000ULL}, {0x7FE0000000000000ULL,0xFFE0000000000000ULL}, {0x7FE0000000000000ULL,0xFFE0000000000000ULL}, {0x7FE0000000000000ULL,0xFFE0000000000000ULL} },{ // 1.0 -> max {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x0000000000000400ULL,0x0000000000000400ULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL} },{ // max -> ! {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0xFFFFFFFF00000000ULL,0xFFFFFFFF00000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL} },{ // min-> {0x0000000000000001ULL,0x8000000000000001ULL}, {0x0FFFFFFFFFFFFFFFULL,0x0FFFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL} },{ // NaN , -NaN {0x7FFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x0000000000000001ULL,0x0000000000000001ULL}, {0x7FFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x7FFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x7FFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL}, {0x7FFFFFFFFFFFFFFFULL,0xFFFFFFFFFFFFFFFFULL} },{ {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL} } }; int ii, test_ctr = 1; char msg[80]; vec_double2 res_v; TEST_SET_START("20060905160000NM","NM", "ldexpd2"); TEST_START("ldexpd2"); for (ii=0; ; ii++) { if ( (test_a[ii].xxx[0] == 0) && (test_a[ii].xxx[1] == 0) ) break; // set Floating point round mode spu_mtfpscr(((vec_uint4){0x0100,0,0,0})); res_v = ldexpd2 (*((vec_double2 *)&test_a[ii].xxx[0]), *((vec_llong2 *)&test_a[ii].exp[0])); sprintf(msg,"2006090516%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans0[0])), 0); #ifdef LDEXPD2_ROUND spu_mtfpscr(((vec_uint4){0x0600,0,0,0})); res_v = ldexpd2 (*((vec_double2 *)&test_a[ii].xxx[0]), *((vec_llong2 *)&test_a[ii].exp[0])); sprintf(msg,"2006090516%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans1[0])), 0); spu_mtfpscr(((vec_uint4){0x0b00,0,0,0})); res_v = ldexpd2 (*((vec_double2 *)&test_a[ii].xxx[0]), *((vec_llong2 *)&test_a[ii].exp[0])); sprintf(msg,"2006090516%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans2[0])), 0); spu_mtfpscr(((vec_uint4){0x0c00,0,0,0})); res_v = ldexpd2 (*((vec_double2 *)&test_a[ii].xxx[0]), *((vec_llong2 *)&test_a[ii].exp[0])); sprintf(msg,"2006090516%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans3[0])), 0); #endif // LDEXPD2_ROUND } TEST_SET_DONE(); TEST_EXIT(); }
int main() { TestVec64_RemqD test_a[] = { { // normal 2.5/1.5 29/3 {0x4004000000000000ULL,0x403d000000000000ULL}, {0x3ff8000000000000ULL,0x4008000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0xbfe0000000000000ULL,0xbff0000000000000ULL}, {0x0000000000000002ULL,0x0000000000000002ULL} },{ // normal {0x09d0000000000006ULL,0x1000000000000000ULL}, {0x8010000000000005ULL,0x0010000000000007ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0x800000000000007dULL,0x80037ffffffff1a5ULL}, {0xFFFFFFFFFFFFFFFFULL,0x0000000000000003ULL} },{ // denorm {0x0000000000000001ULL,0x800ffffffffffff3ULL}, {0x8000000000000001ULL,0x8000000000000005ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0x0000000000000000ULL,0x0000000000000002ULL}, {0xFFFFFFFFFFFFFFFFULL,0x0000000000000001ULL} },{ // divide by inf {0xFFEFFFFFFFFFFFFFULL,0x0001000000000000ULL}, {0x7FF0000000000000ULL,0x7FF0000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0xFFEFFFFFFFFFFFFFULL,0x0001000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL} },{ {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL} } }; TestVec64_RemqD test_b[] = { { // divide by zero -> nan {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0x7ff8000000000000ULL,0x7ff8000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL} },{ // Inf , -Inf {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0x7ff8000000000000ULL,0x7ff8000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL} },{ // border {0xFFE0000000000000ULL,0x7FEFFFFFFFFFFFFFULL}, {0x0008000000000000ULL,0x0010000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL}, {0x8000000000000000ULL,0x0000000000000000ULL}, {0x0000000000000000ULL,0x0000000000000000ULL} },{ {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL} } }; int ii, test_ctr = 1; char msg[80]; vec_double2 res_v; TEST_SET_START("20060919210000NM","NM", "remquod2"); TEST_START("remquod2"); for (ii=0; ; ii++) { if ( (test_a[ii].xxx[0] == 0) && (test_a[ii].xxx[1] == 0) ) break; // set Floating point round mode res_v = remquod2 (*((vec_double2 *)&test_a[ii].xxx[0]), *((vec_double2 *)&test_a[ii].yyy[0]), ((vec_llong2 *)&test_a[ii].quo[0])); sprintf(msg,"2006091921%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].a_res[0])), 0); sprintf(msg,"2006091922%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( *((vec_llong2 *)&test_a[ii].quo[0]), *((vec_llong2 *)&test_a[ii].a_quo[0])), 0); } for (ii=0; ; ii++) { if ( (test_b[ii].xxx[0] == 0) && (test_b[ii].xxx[1] == 0) ) break; // set Floating point round mode res_v = remquod2 (*((vec_double2 *)&test_b[ii].xxx[0]), *((vec_double2 *)&test_b[ii].yyy[0]), ((vec_llong2 *)&test_b[ii].quo[0])); sprintf(msg,"2006091923%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_b[ii].a_res[0])), 0); } TEST_SET_DONE(); TEST_EXIT(); }
int main() { TestVec64_NexA test_a[] = { { // -1 -> -0 , 0 -> -1 {0x8000000000000001ULL,0x0000000000000000ULL}, {0x8000000000000000ULL,0x8000000000000001ULL}, {0x8000000000000000ULL,0x8000000000000001ULL} },{ // -1 -> -0 , 0 -> -1 {0x8000000000000001ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000001ULL}, {0x8000000000000000ULL,0x8000000000000001ULL} },{ // 0 -> -0 , -0 -> 0 {0x0000000000000000ULL,0x8000000000000000ULL}, {0x8000000000000000ULL,0x0000000000000000ULL}, {0x8000000000000000ULL,0x0000000000000000ULL} },{ // -Inf -> MIN , Inf -> MAX {0xFFF0000000000000ULL,0x7FF0000000000000ULL}, {0x0010000000000000ULL,0x0000000000000000ULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL} },{ // MAX -> Inf , MIN -> -Inf {0x7FEFFFFFFFFFFFFFULL,0xFFEFFFFFFFFFFFFFULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL} },{ // Denormalize -> Denormalize {0x0000000000000001ULL,0x8000000000000010ULL}, {0x0000000000000003ULL,0x8000000000000020ULL}, {0x0000000000000002ULL,0x8000000000000011ULL} },{ // Denormalize -> Normalize {0x000FFFFFFFFFFFFFULL,0x800FFFFFFFFFFFFFULL}, {0x0020000000000000ULL,0x8020000000000000ULL}, {0x0010000000000000ULL,0x8010000000000000ULL} },{ // Normalize -> Denormalize {0x0010000000000000ULL,0x8010000000000000ULL}, {0x8010000000000000ULL,0x0020000000000000ULL}, {0x000FFFFFFFFFFFFFULL,0x800FFFFFFFFFFFFFULL} },{ // equal {0x8FFFFFFFFFFFFFFFULL,0x0FFFFFFFFFFFFFFFULL}, {0x8FFFFFFFFFFFFFFFULL,0x0FFFFFFFFFFFFFFFULL}, {0x8FFFFFFFFFFFFFFFULL,0x0FFFFFFFFFFFFFFFULL} },{ // {0x8FFFFFFFFFFFFFFFULL,0x0FFFFFFFFFFFFFFFULL}, {0x9FFFFFFFFFFFFFFFULL,0x1FFFFFFFFFFFFFFFULL}, {0x9000000000000000ULL,0x1000000000000000ULL} },{ // {0x7000000000000000ULL,0xF000000000000000ULL}, {0x0000000000000001ULL,0x8000000000000001ULL}, {0x6FFFFFFFFFFFFFFFULL,0xEFFFFFFFFFFFFFFFULL} },{ // Nan {0x7000000000000000ULL,0xF000000000000000ULL}, {0xFFF0000000000001ULL,0x7FF0000000000001ULL}, {0xFFF0000000000001ULL,0x7FF0000000000001ULL} },{ {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL} } }; int ii, test_ctr = 1; char msg[80]; vec_double2 res_v; TEST_SET_START("20060828130000NM","NM", "nextafterd2"); TEST_START("nextafterd2"); for (ii=0; ; ii++) { if ( (test_a[ii].xxx[0] == 0) && (test_a[ii].xxx[1] == 0) ) break; res_v = nextafterd2 (*((vec_double2 *)&test_a[ii].xxx[0]), *((vec_double2 *)&test_a[ii].yyy[0])); sprintf(msg,"2006082813%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans[0])), 0); } TEST_SET_DONE(); TEST_EXIT(); }
int main() { TEST_SET_START("20060731203500MH","MH", "negatell2"); vec_llong2 x0n_v = spu_splats(0LL); vec_llong2 x0p_v = spu_splats(0LL); vec_llong2 x1n_v = spu_splats(-83582LL); vec_llong2 x1p_v = spu_splats(83582LL); vec_llong2 x2n_v = spu_splats(-13152LL); vec_llong2 x2p_v = spu_splats(13152LL); vec_llong2 x3n_v = spu_splats(-1LL); vec_llong2 x3p_v = spu_splats(1LL); vec_llong2 x4n_v = spu_splats((long long)0x8000000000000001ULL); vec_llong2 x4p_v = spu_splats(0x7fffffffffffffffLL); vec_llong2 x5n_v = spu_splats((long long)0x8000000100000000ULL); vec_llong2 x5p_v = spu_splats(0x7fffffff00000000LL); vec_llong2 res_v; TEST_START("negatell2"); res_v = negatell2(x0n_v); TEST_CHECK("20060731203501MH", allequal_llong2( res_v, x0p_v ), 0); res_v = negatell2(x0p_v); TEST_CHECK("20060731203502MH", allequal_llong2( res_v, x0n_v ), 0); res_v = negatell2(x1n_v); TEST_CHECK("20060731203503MH", allequal_llong2( res_v, x1p_v ), 0); res_v = negatell2(x1p_v); TEST_CHECK("20060731203504MH", allequal_llong2( res_v, x1n_v ), 0); res_v = negatell2(x2n_v); TEST_CHECK("20060731203505MH", allequal_llong2( res_v, x2p_v ), 0); res_v = negatell2(x2p_v); TEST_CHECK("20060731203506MH", allequal_llong2( res_v, x2n_v ), 0); res_v = negatell2(x3n_v); TEST_CHECK("20060731203507MH", allequal_llong2( res_v, x3p_v ), 0); res_v = negatell2(x3p_v); TEST_CHECK("20060731203508MH", allequal_llong2( res_v, x3n_v ), 0); res_v = negatell2(x4n_v); TEST_CHECK("20060731203509MH", allequal_llong2( res_v, x4p_v ), 0); res_v = negatell2(x4p_v); TEST_CHECK("20060731203510MH", allequal_llong2( res_v, x4n_v ), 0); res_v = negatell2(x5n_v); TEST_CHECK("20060731203511MH", allequal_llong2( res_v, x5p_v ), 0); res_v = negatell2(x5p_v); TEST_CHECK("20060731203512MH", allequal_llong2( res_v, x5n_v ), 0); TEST_SET_DONE(); TEST_EXIT(); }
int main() { TestVec64_NerI test_a[] = { { // zero {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL} },{ // border {0xc330000000000000ULL,0x4330000000000000ULL}, {0xc330000000000000ULL,0x4330000000000000ULL}, {0xc330000000000000ULL,0x4330000000000000ULL}, {0xc330000000000000ULL,0x4330000000000000ULL}, {0xc330000000000000ULL,0x4330000000000000ULL} },{ // MIN , MAX {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL}, {0xFFEFFFFFFFFFFFFFULL,0x7FEFFFFFFFFFFFFFULL} },{ // Inf , -Inf {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL}, {0x7FF0000000000000ULL,0xFFF0000000000000ULL} },{ // denotmalized {0x8000000000000001ULL,0x0000000000000001ULL}, {0x8000000000000000ULL,0x0000000000000000ULL}, {0x8000000000000000ULL,0x0000000000000000ULL}, {0x8000000000000000ULL,0x3ff0000000000000ULL}, {0xbff0000000000000ULL,0x0000000000000000ULL} },{ // denotmalized {0x0008000000000000ULL,0x8008000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0x8000000000000000ULL}, {0x3ff0000000000000ULL,0x8000000000000000ULL}, {0x0000000000000000ULL,0xbff0000000000000ULL} },{ // 1.0 {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x3ff0000000000000ULL,0xbff0000000000000ULL} },{ // 1.5 {0x3ff8000000000000ULL,0xbff8000000000000ULL}, {0x4000000000000000ULL,0xc000000000000000ULL}, {0x3ff0000000000000ULL,0xbff0000000000000ULL}, {0x4000000000000000ULL,0xbff0000000000000ULL}, {0x3ff0000000000000ULL,0xc000000000000000ULL} },{ // 2.5 {0x4004000000000000ULL,0xc004000000000000ULL}, {0x4000000000000000ULL,0xc000000000000000ULL}, {0x4000000000000000ULL,0xc000000000000000ULL}, {0x4008000000000000ULL,0xc000000000000000ULL}, {0x4000000000000000ULL,0xc008000000000000ULL} },{ {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL}, {0ULL,0ULL} } }; int ii, test_ctr = 1; char msg[80]; vec_double2 res_v; TEST_SET_START("20060831210000NM","NM", "rintd2"); TEST_START("rintd2"); for (ii=0; ; ii++) { if ( (test_a[ii].xxx[0] == 0) && (test_a[ii].xxx[1] == 0) ) break; // set Floating point round mode spu_mtfpscr(((vec_uint4) { 0x0000,0,0,0 })); res_v = rintd2 (*((vec_double2 *)&test_a[ii].xxx[0])); sprintf(msg,"2006083121%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans0[0])), 0); spu_mtfpscr(((vec_uint4) { 0x0500,0,0,0 })); res_v = rintd2 (*((vec_double2 *)&test_a[ii].xxx[0])); sprintf(msg,"2006083121%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans1[0])), 0); spu_mtfpscr(((vec_uint4) { 0x0a00,0,0,0 })); res_v = rintd2 (*((vec_double2 *)&test_a[ii].xxx[0])); sprintf(msg,"2006083121%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans2[0])), 0); spu_mtfpscr(((vec_uint4) { 0x0f00,0,0,0 })); res_v = rintd2 (*((vec_double2 *)&test_a[ii].xxx[0])); sprintf(msg,"2006083121%04dNM", test_ctr++); TEST_CHECK(msg, allequal_llong2( (vec_llong2)res_v, *((vec_llong2 *)&test_a[ii].ans3[0])), 0); } TEST_SET_DONE(); TEST_EXIT(); }
int main() { TEST_SET_START("20060904000000AAN","AAN", "ilogbd2"); // -Nan double x0 = hide_double(-nan("")); long long r0 = (long long)FP_ILOGBNAN; // -Inf double x1 = hide_double(-HUGE_VAL); long long r1 = (long long)FP_ILOGB0; // -Dmax double x2 = hide_double(-DBL_MAX); long long r2 = 1023ll; // -Norm double x3 = hide_double(-824842.58421394); long long r3 = 19ll; // -Dmin double x4 = hide_double(-DBL_MIN); long long r4 = -1022ll; // -Denorm double x5 = hide_double(-2.40e-310); long long r5 = -1029ll; // -Unf double x6 = hide_double(-1.0e-999); long long r6 = (long long)FP_ILOGB0; // -0 double x7 = hide_double(-0.0); long long r7 = (long long)FP_ILOGB0; // 0 double x8 = hide_double( 0.0); long long r8 = (long long)FP_ILOGB0; // +Unf double x9 = hide_double( 1.0e-999); long long r9 = (long long)FP_ILOGB0; // +Denorm double x10 = hide_double( 2.40e-310); long long r10 = -1029ll; // +Dmin double x11 = hide_double( DBL_MIN); long long r11 = -1022ll; // +Norm double x12 = hide_double(3.14152634); long long r12 = 1ll; // +Norm double x13 = hide_double(7.0673903e149); long long r13 = 497ll; // +Norm double x14 = hide_double(2.4673e304); long long r14 = 1011ll; // +Norm double x15 = hide_double(7.235672e-25); long long r15 = -81ll; // +Denorm double x16 = hide_double(9.452854e-312); long long r16 = -1034ll; // +Demorm double x17 = hide_double(3.045784e-320); long long r17 = -1062ll; // -Norm double x18 = hide_double(-6.459273e7); long long r18 = 25ll; // -Norm double x19 = hide_double(-2.493472e-99); long long r19 = -328ll; // -Norm double x20 = hide_double(-1.4824543e128); long long r20 = 425ll; // -Denorm double x21 = hide_double(-5.53856231e-315); long long r21 = -1044ll; // -Demorm double x22 = hide_double(-2.5684367e-312); long long r22 = -1036ll; // +Dmax double x23 = hide_double(DBL_MAX); long long r23 = 1023ll; // +Inf double x24 = hide_double(HUGE_VAL); long long r24 = (long long)FP_ILOGB0; //+Nan double x25 = hide_double( nan("")); long long r25 = (long long)FP_ILOGBNAN; // Compound vec_double2 x26_v = (vec_double2) { -2.561286432e-317, -1.0e-999 }; vec_llong2 r26_v = (vec_llong2) { -1052ll, FP_ILOGB0 }; // Compound vec_double2 x27_v = (vec_double2) { 345.27533, -8.673e-310 }; vec_llong2 r27_v = (vec_llong2) { 8ll, -1027ll }; // Compound vec_double2 x28_v = (vec_double2) { nan(""), -3678342.8765343 }; vec_llong2 r28_v = (vec_llong2) { FP_ILOGBNAN, 21ll }; // Compound vec_double2 x29_v = (vec_double2) { HUGE_VAL, -nan("") }; vec_llong2 r29_v = (vec_llong2) { FP_ILOGB0, FP_ILOGBNAN }; // Compound vec_double2 x30_v = (vec_double2) { -1.2e-99, -HUGE_VAL } ; vec_llong2 r30_v = (vec_llong2) { -329ll, FP_ILOGB0 }; vec_double2 x0_v = spu_splats(x0); vec_llong2 r0_v = spu_splats(r0); vec_double2 x1_v = spu_splats(x1); vec_llong2 r1_v = spu_splats(r1); vec_double2 x2_v = spu_splats(x2); vec_llong2 r2_v = spu_splats(r2); vec_double2 x3_v = spu_splats(x3); vec_llong2 r3_v = spu_splats(r3); vec_double2 x4_v = spu_splats(x4); vec_llong2 r4_v = spu_splats(r4); vec_double2 x5_v = spu_splats(x5); vec_llong2 r5_v = spu_splats(r5); vec_double2 x6_v = spu_splats(x6); vec_llong2 r6_v = spu_splats(r6); vec_double2 x7_v = spu_splats(x7); vec_llong2 r7_v = spu_splats(r7); vec_double2 x8_v = spu_splats(x8); vec_llong2 r8_v = spu_splats(r8); vec_double2 x9_v = spu_splats(x9); vec_llong2 r9_v = spu_splats(r9); vec_double2 x10_v = spu_splats(x10); vec_llong2 r10_v = spu_splats(r10); vec_double2 x11_v = spu_splats(x11); vec_llong2 r11_v = spu_splats(r11); vec_double2 x12_v = spu_splats(x12); vec_llong2 r12_v = spu_splats(r12); vec_double2 x13_v = spu_splats(x13); vec_llong2 r13_v = spu_splats(r13); vec_double2 x14_v = spu_splats(x14); vec_llong2 r14_v = spu_splats(r14); vec_double2 x15_v = spu_splats(x15); vec_llong2 r15_v = spu_splats(r15); vec_double2 x16_v = spu_splats(x16); vec_llong2 r16_v = spu_splats(r16); vec_double2 x17_v = spu_splats(x17); vec_llong2 r17_v = spu_splats(r17); vec_double2 x18_v = spu_splats(x18); vec_llong2 r18_v = spu_splats(r18); vec_double2 x19_v = spu_splats(x19); vec_llong2 r19_v = spu_splats(r19); vec_double2 x20_v = spu_splats(x20); vec_llong2 r20_v = spu_splats(r20); vec_double2 x21_v = spu_splats(x21); vec_llong2 r21_v = spu_splats(r21); vec_double2 x22_v = spu_splats(x22); vec_llong2 r22_v = spu_splats(r22); vec_double2 x23_v = spu_splats(x23); vec_llong2 r23_v = spu_splats(r23); vec_double2 x24_v = spu_splats(x24); vec_llong2 r24_v = spu_splats(r24); vec_double2 x25_v = spu_splats(x25); vec_llong2 r25_v = spu_splats(r25); vec_llong2 res_v; TEST_START("ilogbd2"); res_v = (vec_llong2)ilogbd2(x0_v); TEST_CHECK("20060904000000AAN", allequal_llong2( res_v, r0_v ), 0); res_v = (vec_llong2)ilogbd2(x1_v); TEST_CHECK("20060904000001AAN", allequal_llong2( res_v, r1_v ), 0); res_v = (vec_llong2)ilogbd2(x2_v); TEST_CHECK("20060904000002AAN", allequal_llong2( res_v, r2_v ), 0); res_v = (vec_llong2)ilogbd2(x3_v); TEST_CHECK("20060904000003AAN", allequal_llong2( res_v, r3_v ), 0); res_v = (vec_llong2)ilogbd2(x4_v); TEST_CHECK("20060904000004AAN", allequal_llong2( res_v, r4_v ), 0); res_v = (vec_llong2)ilogbd2(x5_v); TEST_CHECK("20060904000005AAN", allequal_llong2( res_v, r5_v ), 0); res_v = (vec_llong2)ilogbd2(x6_v); TEST_CHECK("20060904000006AAN", allequal_llong2( res_v, r6_v ), 0); res_v = (vec_llong2)ilogbd2(x7_v); TEST_CHECK("20060904000007AAN", allequal_llong2( res_v, r7_v ), 0); res_v = (vec_llong2)ilogbd2(x8_v); TEST_CHECK("20060904000008AAN", allequal_llong2( res_v, r8_v ), 0); res_v = (vec_llong2)ilogbd2(x9_v); TEST_CHECK("20060904000009AAN", allequal_llong2( res_v, r9_v ), 0); res_v = (vec_llong2)ilogbd2(x10_v); TEST_CHECK("20060904000010AAN", allequal_llong2( res_v, r10_v ), 0); res_v = (vec_llong2)ilogbd2(x11_v); TEST_CHECK("20060904000011AAN", allequal_llong2( res_v, r11_v ), 0); res_v = (vec_llong2)ilogbd2(x12_v); TEST_CHECK("20060904000012AAN", allequal_llong2( res_v, r12_v ), 0); res_v = (vec_llong2)ilogbd2(x13_v); TEST_CHECK("20060904000013AAN", allequal_llong2( res_v, r13_v ), 0); res_v = (vec_llong2)ilogbd2(x14_v); TEST_CHECK("20060904000014AAN", allequal_llong2( res_v, r14_v ), 0); res_v = (vec_llong2)ilogbd2(x15_v); TEST_CHECK("20060904000015AAN", allequal_llong2( res_v, r15_v ), 0); res_v = (vec_llong2)ilogbd2(x16_v); TEST_CHECK("20060904000016AAN", allequal_llong2( res_v, r16_v ), 0); res_v = (vec_llong2)ilogbd2(x17_v); TEST_CHECK("20060904000017AAN", allequal_llong2( res_v, r17_v ), 0); res_v = (vec_llong2)ilogbd2(x18_v); TEST_CHECK("20060904000018AAN", allequal_llong2( res_v, r18_v ), 0); res_v = (vec_llong2)ilogbd2(x19_v); TEST_CHECK("20060904000019AAN", allequal_llong2( res_v, r19_v ), 0); res_v = (vec_llong2)ilogbd2(x20_v); TEST_CHECK("20060904000020AAN", allequal_llong2( res_v, r20_v ), 0); res_v = (vec_llong2)ilogbd2(x21_v); TEST_CHECK("20060904000021AAN", allequal_llong2( res_v, r21_v ), 0); res_v = (vec_llong2)ilogbd2(x22_v); TEST_CHECK("20060904000022AAN", allequal_llong2( res_v, r22_v ), 0); res_v = (vec_llong2)ilogbd2(x23_v); TEST_CHECK("20060904000023AAN", allequal_llong2( res_v, r23_v ), 0); res_v = (vec_llong2)ilogbd2(x24_v); TEST_CHECK("20060904000024AAN", allequal_llong2( res_v, r24_v ), 0); res_v = (vec_llong2)ilogbd2(x25_v); TEST_CHECK("20060904000025AAN", allequal_llong2( res_v, r25_v ), 0); res_v = (vec_llong2)ilogbd2(x26_v); TEST_CHECK("20060904000026AAN", allequal_llong2( res_v, r26_v ), 0); res_v = (vec_llong2)ilogbd2(x27_v); TEST_CHECK("20060904000027AAN", allequal_llong2( res_v, r27_v ), 0); res_v = (vec_llong2)ilogbd2(x28_v); TEST_CHECK("20060904000028AAN", allequal_llong2( res_v, r28_v ), 0); res_v = (vec_llong2)ilogbd2(x29_v); TEST_CHECK("20060904000029AAN", allequal_llong2( res_v, r29_v ), 0); res_v = (vec_llong2)ilogbd2(x30_v); TEST_CHECK("20060904000030AAN", allequal_llong2( res_v, r30_v ), 0); TEST_SET_DONE(); TEST_EXIT(); }