Пример #1
0
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();

}
Пример #2
0
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();

}
Пример #3
0
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();
}
Пример #4
0
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();

}
Пример #5
0
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();
}
Пример #6
0
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();

}
Пример #7
0
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();
}