43 namespace Test {
namespace Int {
46 namespace Arithmetic {
59 :
Test(
"Arithmetic::Mult::XYZ::"+
str(icl)+
"::"+s,3,d,false,icl) {}
62 double d0 =
static_cast<double>(x[0]);
63 double d1 =
static_cast<double>(x[1]);
64 double d2 =
static_cast<double>(x[2]);
79 :
Test(
"Arithmetic::Mult::XXY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
82 double d0 =
static_cast<double>(x[0]);
83 double d1 =
static_cast<double>(x[0]);
84 double d2 =
static_cast<double>(x[1]);
99 :
Test(
"Arithmetic::Mult::XYX::"+
str(icl)+
"::"+s,2,d,false,icl) {}
102 double d0 =
static_cast<double>(x[0]);
103 double d1 =
static_cast<double>(x[1]);
104 double d2 =
static_cast<double>(x[0]);
119 :
Test(
"Arithmetic::Mult::XYY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
122 double d0 =
static_cast<double>(x[0]);
123 double d1 =
static_cast<double>(x[1]);
124 double d2 =
static_cast<double>(x[1]);
139 :
Test(
"Arithmetic::Mult::XXX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
142 double d0 =
static_cast<double>(x[0]);
143 double d1 =
static_cast<double>(x[0]);
144 double d2 =
static_cast<double>(x[0]);
159 :
Test(
"Arithmetic::Sqr::XY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
162 double d0 =
static_cast<double>(x[0]);
163 double d1 =
static_cast<double>(x[1]);
178 :
Test(
"Arithmetic::Sqr::XX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
181 double d0 =
static_cast<double>(x[0]);
196 :
Test(
"Arithmetic::Sqrt::XY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
199 double d0 =
static_cast<double>(x[0]);
200 double d1 =
static_cast<double>(x[1]);
201 return (d0 >= 0) && (d0 >= d1*
d1) && (d0 < (d1+1)*(d1+1));
215 :
Test(
"Arithmetic::Sqrt::XX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
218 double d0 =
static_cast<double>(x[0]);
219 return (d0 >= 0) && (d0 >= d0*d0) && (d0 < (d0+1)*(d0+1));
230 static int abs(
int a) {
return a<0 ? -a:
a; }
231 static int sgn(
int a) {
return a<0 ? -1:1; }
235 :
Test(
"Arithmetic::DivMod::"+s,4,d,false,
icl) {}
238 return x[0] == x[1]*x[2]+x[3] &&
239 abs(x[3]) < abs(x[1]) &&
240 (x[3] == 0 || sgn(x[3]) == sgn(x[0]));
253 :
Test(
"Arithmetic::Div::"+s,3,d,false,
icl) {}
258 int divsign = (x[0] / x[1] < 0) ? -1 : 1;
261 static_cast<int>(floor(static_cast<double>(
std::abs(x[0]))/
262 static_cast<double>(
std::abs(x[1]))));
263 return x[2] == divresult;
276 :
Test(
"Arithmetic::Mod::"+s,3,d,false,
icl) {}
281 int divsign = (x[0] / x[1] < 0) ? -1 : 1;
284 static_cast<int>(floor(static_cast<double>(
std::abs(x[0]))/
285 static_cast<double>(
std::abs(x[1]))));
286 return x[0] == x[1]*divresult+x[2];
300 :
Test(
"Arithmetic::Abs::XY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
303 double d0 =
static_cast<double>(x[0]);
304 double d1 =
static_cast<double>(x[1]);
305 return (d0<0 ? -d0 : d0) ==
d1;
319 :
Test(
"Arithmetic::Abs::XX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
322 double d0 =
static_cast<double>(x[0]);
323 double d1 =
static_cast<double>(x[0]);
324 return (d0<0 ? -d0 : d0) ==
d1;
338 :
Test(
"Arithmetic::Min::Bin::XYZ::"+
str(icl)+
"::"+s,3,d,false,icl) {}
355 :
Test(
"Arithmetic::Min::Bin::XYX::"+
str(icl)+
"::"+s,2,d) {}
372 :
Test(
"Arithmetic::Min::Bin::XYX::"+
str(icl)+
"::"+s,2,d) {}
389 :
Test(
"Arithmetic::Min::Bin::XYY::"+
str(icl)+
"::"+s,2,d) {}
406 :
Test(
"Arithmetic::Min::Bin::XXX::"+
str(icl)+
"::"+s,1,d) {}
423 :
Test(
"Arithmetic::Max::Bin::XYZ::"+
str(icl)+
"::"+s,3,d) {
442 :
Test(
"Arithmetic::Max::Bin::XXY::"+
str(icl)+
"::"+s,2,d) {}
459 :
Test(
"Arithmetic::Max::Bin::XYX::"+
str(icl)+
"::"+s,2,d) {}
476 :
Test(
"Arithmetic::Max::Bin::XYY::"+
str(icl)+
"::"+s,2,d) {}
493 :
Test(
"Arithmetic::Max::Bin::XXX::"+
str(icl)+
"::"+s,1,d) {}
509 :
Test(
"Arithmetic::Min::Nary::"+
str(icl),4,-4,4,false,icl) {}
517 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
527 :
Test(
"Arithmetic::Min::Nary::Shared::"+
str(icl),3,-4,4,false,icl) {}
535 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
545 :
Test(
"Arithmetic::Max::Nary::"+
str(icl),4,-4,4,false,icl) {}
553 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
563 :
Test(
"Arithmetic::Max::Nary::Shared::"+
str(icl),3,-4,4,false,icl) {}
571 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
584 static_cast<int>(-
sqrt(static_cast<double>
587 static_cast<int>(
sqrt(static_cast<double>