45 namespace Test {
namespace Int {
48 namespace Arithmetic {
61 :
Test(
"Arithmetic::Mult::XYZ::"+
str(icl)+
"::"+s,3,d,false,icl) {}
64 double d0 =
static_cast<double>(x[0]);
65 double d1 =
static_cast<double>(x[1]);
66 double d2 =
static_cast<double>(x[2]);
81 :
Test(
"Arithmetic::Mult::XXY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
84 double d0 =
static_cast<double>(x[0]);
85 double d1 =
static_cast<double>(x[0]);
86 double d2 =
static_cast<double>(x[1]);
101 :
Test(
"Arithmetic::Mult::XYX::"+
str(icl)+
"::"+s,2,d,false,icl) {}
104 double d0 =
static_cast<double>(x[0]);
105 double d1 =
static_cast<double>(x[1]);
106 double d2 =
static_cast<double>(x[0]);
121 :
Test(
"Arithmetic::Mult::XYY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
124 double d0 =
static_cast<double>(x[0]);
125 double d1 =
static_cast<double>(x[1]);
126 double d2 =
static_cast<double>(x[1]);
141 :
Test(
"Arithmetic::Mult::XXX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
144 double d0 =
static_cast<double>(x[0]);
145 double d1 =
static_cast<double>(x[0]);
146 double d2 =
static_cast<double>(x[0]);
161 :
Test(
"Arithmetic::Sqr::XY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
164 double d0 =
static_cast<double>(x[0]);
165 double d1 =
static_cast<double>(x[1]);
180 :
Test(
"Arithmetic::Sqr::XX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
183 double d0 =
static_cast<double>(x[0]);
198 :
Test(
"Arithmetic::Sqrt::XY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
201 double d0 =
static_cast<double>(x[0]);
202 double d1 =
static_cast<double>(x[1]);
203 return (d0 >= 0) && (d0 >= d1*
d1) && (d0 < (d1+1)*(d1+1));
217 :
Test(
"Arithmetic::Sqrt::XX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
220 double d0 =
static_cast<double>(x[0]);
221 return (d0 >= 0) && (d0 >= d0*d0) && (d0 < (d0+1)*(d0+1));
238 :
Test(
"Arithmetic::Pow::XY::"+
str(n0)+
"::"+
str(icl)+
"::"+s,
239 2,d,false,icl),
n(n0) {}
243 for (
int i=0;
i<
n;
i++) {
253 using namespace Gecode;
270 :
Test(
"Arithmetic::Pow::XX::"+
str(n0)+
"::"+
str(icl)+
"::"+s,
271 1,d,false,icl),
n(n0) {}
275 for (
int i=0;
i<
n;
i++) {
310 long long int m = (l +
u) >> 1;
311 if (
powgr(n,m,x)) u=m;
else l=m;
313 return static_cast<int>(
l);
338 long long int m = (l +
u) >> 1;
339 if (
powle(n,m,x)) l=m;
else u=m;
341 return static_cast<int>(
u);
354 :
Test(
"Arithmetic::Nroot::XY::"+
str(n0)+
"::"+
str(icl)+
"::"+s,
355 2,d,false,icl),
n(n0) {}
360 if ((
n % 2 == 0) && ((x[0] < 0) || (x[1] < 0)))
367 using namespace Gecode;
384 :
Test(
"Arithmetic::Nroot::XX::"+
str(n0)+
"::"+
str(icl)+
"::"+s,
385 1,d,false,icl),
n(n0) {}
391 return (x[0] >= 0) && (x[0] <= 1);
393 return (x[0] >= -2) && (x[0] <= 1);
406 static int abs(
int a) {
return a<0 ? -a:
a; }
408 static int sgn(
int a) {
return a<0 ? -1:1; }
412 :
Test(
"Arithmetic::DivMod::"+s,4,d) {}
415 return x[0] == x[1]*x[2]+x[3] &&
417 (x[3] == 0 || sgn(x[3]) == sgn(x[0]));
430 :
Test(
"Arithmetic::Div::"+s,3,d) {}
435 int divsign = (x[0] / x[1] < 0) ? -1 : 1;
438 static_cast<int>(floor(static_cast<double>(
std::abs(x[0]))/
439 static_cast<double>(
std::abs(x[1]))));
440 return x[2] == divresult;
453 :
Test(
"Arithmetic::Mod::"+s,3,d) {}
458 int divsign = (x[0] / x[1] < 0) ? -1 : 1;
461 static_cast<int>(floor(static_cast<double>(
std::abs(x[0]))/
462 static_cast<double>(
std::abs(x[1]))));
463 return x[0] == x[1]*divresult+x[2];
477 :
Test(
"Arithmetic::Abs::XY::"+
str(icl)+
"::"+s,2,d,false,icl) {}
480 double d0 =
static_cast<double>(x[0]);
481 double d1 =
static_cast<double>(x[1]);
482 return (d0<0 ? -d0 : d0) ==
d1;
496 :
Test(
"Arithmetic::Abs::XX::"+
str(icl)+
"::"+s,1,d,false,icl) {}
499 double d0 =
static_cast<double>(x[0]);
500 double d1 =
static_cast<double>(x[0]);
501 return (d0<0 ? -d0 : d0) ==
d1;
515 :
Test(
"Arithmetic::Min::Bin::XYZ::"+
str(icl)+
"::"+s,3,d,false,icl) {}
532 :
Test(
"Arithmetic::Min::Bin::XYX::"+
str(icl)+
"::"+s,2,d) {}
549 :
Test(
"Arithmetic::Min::Bin::XYX::"+
str(icl)+
"::"+s,2,d) {}
566 :
Test(
"Arithmetic::Min::Bin::XYY::"+
str(icl)+
"::"+s,2,d) {}
583 :
Test(
"Arithmetic::Min::Bin::XXX::"+
str(icl)+
"::"+s,1,d) {}
600 :
Test(
"Arithmetic::Max::Bin::XYZ::"+
str(icl)+
"::"+s,3,d) {
619 :
Test(
"Arithmetic::Max::Bin::XXY::"+
str(icl)+
"::"+s,2,d) {}
636 :
Test(
"Arithmetic::Max::Bin::XYX::"+
str(icl)+
"::"+s,2,d) {}
653 :
Test(
"Arithmetic::Max::Bin::XYY::"+
str(icl)+
"::"+s,2,d) {}
670 :
Test(
"Arithmetic::Max::Bin::XXX::"+
str(icl)+
"::"+s,1,d) {}
686 :
Test(
"Arithmetic::Min::Nary::"+
str(icl),4,-4,4,false,icl) {}
694 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
704 :
Test(
"Arithmetic::Min::Nary::Shared::"+
str(icl),3,-4,4,false,icl) {}
712 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
722 :
Test(
"Arithmetic::Max::Nary::"+
str(icl),4,-4,4,false,icl) {}
730 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
740 :
Test(
"Arithmetic::Max::Nary::Shared::"+
str(icl),3,-4,4,false,icl) {}
748 m[0]=x[0]; m[1]=x[1]; m[2]=x[2];
766 static_cast<int>(-
sqrt(static_cast<double>
769 static_cast<int>(
sqrt(static_cast<double>
782 (void)
new Div(
"A",a);
783 (void)
new Div(
"B",b);
784 (void)
new Div(
"C",c);
786 (void)
new Mod(
"A",a);
787 (void)
new Mod(
"B",b);
788 (void)
new Mod(
"C",c);
793 (void)
new MultXYZ(
"A",a,icls.icl());
794 (void)
new MultXYZ(
"B",b,icls.icl());
795 (void)
new MultXYZ(
"C",c,icls.icl());
797 (void)
new MultXXY(
"A",a,icls.icl());
798 (void)
new MultXXY(
"B",b,icls.icl());
799 (void)
new MultXXY(
"C",c,icls.icl());
801 (void)
new MultXYX(
"A",a,icls.icl());
802 (void)
new MultXYX(
"B",b,icls.icl());
803 (void)
new MultXYX(
"C",c,icls.icl());
805 (void)
new MultXYY(
"A",a,icls.icl());
806 (void)
new MultXYY(
"B",b,icls.icl());
807 (void)
new MultXYY(
"C",c,icls.icl());
809 (void)
new MultXXX(
"A",a,icls.icl());
810 (void)
new MultXXX(
"B",b,icls.icl());
811 (void)
new MultXXX(
"C",c,icls.icl());
813 (void)
new SqrXY(
"A",a,icls.icl());
814 (void)
new SqrXY(
"B",b,icls.icl());
815 (void)
new SqrXY(
"C",c,icls.icl());
817 (void)
new SqrXX(
"A",a,icls.icl());
818 (void)
new SqrXX(
"B",b,icls.icl());
819 (void)
new SqrXX(
"C",c,icls.icl());
821 for (
int n=0;
n<=6;
n++) {
822 (void)
new PowXY(
"A",
n,a,icls.icl());
823 (void)
new PowXY(
"B",
n,b,icls.icl());
824 (void)
new PowXY(
"C",
n,c,icls.icl());
825 (void)
new PowXY(
"D",
n,d,icls.icl());
827 (void)
new PowXX(
"A",
n,a,icls.icl());
828 (void)
new PowXX(
"B",
n,b,icls.icl());
829 (void)
new PowXX(
"C",
n,c,icls.icl());
830 (void)
new PowXX(
"D",
n,d,icls.icl());
833 for (
int n=1;
n<=6;
n++) {
834 (void)
new NrootXY(
"A",
n,a,icls.icl());
835 (void)
new NrootXY(
"B",
n,b,icls.icl());
836 (void)
new NrootXY(
"C",
n,c,icls.icl());
837 (void)
new NrootXY(
"D",
n,d,icls.icl());
839 (void)
new NrootXX(
"A",
n,a,icls.icl());
840 (void)
new NrootXX(
"B",
n,b,icls.icl());
841 (void)
new NrootXX(
"C",
n,c,icls.icl());
842 (void)
new NrootXX(
"D",
n,d,icls.icl());
845 for (
int n=30;
n<=34;
n++) {
846 (void)
new PowXY(
"C",
n,c,icls.icl());
847 (void)
new PowXX(
"C",
n,c,icls.icl());
848 (void)
new NrootXY(
"C",
n,c,icls.icl());
849 (void)
new NrootXX(
"C",
n,c,icls.icl());
852 (void)
new SqrtXY(
"A",a,icls.icl());
853 (void)
new SqrtXY(
"B",b,icls.icl());
854 (void)
new SqrtXY(
"C",c,icls.icl());
856 (void)
new SqrtXX(
"A",a,icls.icl());
857 (void)
new SqrtXX(
"B",b,icls.icl());
858 (void)
new SqrtXX(
"C",c,icls.icl());
860 (void)
new AbsXY(
"A",a,icls.icl());
861 (void)
new AbsXY(
"B",b,icls.icl());
862 (void)
new AbsXY(
"C",c,icls.icl());
864 (void)
new AbsXX(
"A",a,icls.icl());
865 (void)
new AbsXX(
"B",b,icls.icl());
866 (void)
new AbsXX(
"C",c,icls.icl());
868 (void)
new MinXYZ(
"A",a,icls.icl());
869 (void)
new MinXYZ(
"B",b,icls.icl());
870 (void)
new MinXYZ(
"C",c,icls.icl());
872 (void)
new MinXXY(
"A",a,icls.icl());
873 (void)
new MinXXY(
"B",b,icls.icl());
874 (void)
new MinXXY(
"C",c,icls.icl());
876 (void)
new MinXYX(
"A",a,icls.icl());
877 (void)
new MinXYX(
"B",b,icls.icl());
878 (void)
new MinXYX(
"C",c,icls.icl());
880 (void)
new MinXYY(
"A",a,icls.icl());
881 (void)
new MinXYY(
"B",b,icls.icl());
882 (void)
new MinXYY(
"C",c,icls.icl());
884 (void)
new MinXXX(
"A",a,icls.icl());
885 (void)
new MinXXX(
"B",b,icls.icl());
886 (void)
new MinXXX(
"C",c,icls.icl());
888 (void)
new MaxXYZ(
"A",a,icls.icl());
889 (void)
new MaxXYZ(
"B",b,icls.icl());
890 (void)
new MaxXYZ(
"C",c,icls.icl());
892 (void)
new MaxXXY(
"A",a,icls.icl());
893 (void)
new MaxXXY(
"B",b,icls.icl());
894 (void)
new MaxXXY(
"C",c,icls.icl());
896 (void)
new MaxXYX(
"A",a,icls.icl());
897 (void)
new MaxXYX(
"B",b,icls.icl());
898 (void)
new MaxXYX(
"C",c,icls.icl());
900 (void)
new MaxXYY(
"A",a,icls.icl());
901 (void)
new MaxXYY(
"B",b,icls.icl());
902 (void)
new MaxXYY(
"C",c,icls.icl());
904 (void)
new MaxXXX(
"A",a,icls.icl());
905 (void)
new MaxXXX(
"B",b,icls.icl());
906 (void)
new MaxXXX(
"C",c,icls.icl());
908 (void)
new MinNary(icls.icl());
910 (void)
new MaxNary(icls.icl());