- unsigned result = 0;
- numeric calc_rem, calc_quo;
- numeric a, b;
-
- // check if irem(a, b) and irem(a, b, q) really behave like Maple's
- // irem(a, b) and irem(a, b, 'q') as advertised in our documentation.
- // These overloaded routines indeed need to be checked separately since
- // internally they might be doing something completely different:
- a = 23; b = 4; calc_rem = irem(a, b);
- if (calc_rem != 3) {
- clog << "irem(" << a << "," << b << ") erroneously returned "
- << calc_rem << endl;
- ++result;
- }
- a = 23; b = -4; calc_rem = irem(a, b);
- if (calc_rem != 3) {
- clog << "irem(" << a << "," << b << ") erroneously returned "
- << calc_rem << endl;
- ++result;
- }
- a = -23; b = 4; calc_rem = irem(a, b);
- if (calc_rem != -3) {
- clog << "irem(" << a << "," << b << ") erroneously returned "
- << calc_rem << endl;
- ++result;
- }
- a = -23; b = -4; calc_rem = irem(a, b);
- if (calc_rem != -3) {
- clog << "irem(" << a << "," << b << ") erroneously returned "
- << calc_rem << endl;
- ++result;
- }
- // and now the overloaded irem(a,b,q):
- a = 23; b = 4; calc_rem = irem(a, b, calc_quo);
- if (calc_rem != 3 || calc_quo != 5) {
- clog << "irem(" << a << "," << b << ",q) erroneously returned "
- << calc_rem << " with q=" << calc_quo << endl;
- ++result;
- }
- a = 23; b = -4; calc_rem = irem(a, b, calc_quo);
- if (calc_rem != 3 || calc_quo != -5) {
- clog << "irem(" << a << "," << b << ",q) erroneously returned "
- << calc_rem << " with q=" << calc_quo << endl;
- ++result;
- }
- a = -23; b = 4; calc_rem = irem(a, b, calc_quo);
- if (calc_rem != -3 || calc_quo != -5) {
- clog << "irem(" << a << "," << b << ",q) erroneously returned "
- << calc_rem << " with q=" << calc_quo << endl;
- ++result;
- }
- a = -23; b = -4; calc_rem = irem(a, b, calc_quo);
- if (calc_rem != -3 || calc_quo != 5) {
- clog << "irem(" << a << "," << b << ",q) erroneously returned "
- << calc_rem << " with q=" << calc_quo << endl;
- ++result;
- }
- // check if iquo(a, b) and iquo(a, b, r) really behave like Maple's
- // iquo(a, b) and iquo(a, b, 'r') as advertised in our documentation.
- // These overloaded routines indeed need to be checked separately since
- // internally they might be doing something completely different:
- a = 23; b = 4; calc_quo = iquo(a, b);
- if (calc_quo != 5) {
- clog << "iquo(" << a << "," << b << ") erroneously returned "
- << calc_quo << endl;
- ++result;
- }
- a = 23; b = -4; calc_quo = iquo(a, b);
- if (calc_quo != -5) {
- clog << "iquo(" << a << "," << b << ") erroneously returned "
- << calc_quo << endl;
- ++result;
- }
- a = -23; b = 4; calc_quo = iquo(a, b);
- if (calc_quo != -5) {
- clog << "iquo(" << a << "," << b << ") erroneously returned "
- << calc_quo << endl;
- ++result;
- }
- a = -23; b = -4; calc_quo = iquo(a, b);
- if (calc_quo != 5) {
- clog << "iquo(" << a << "," << b << ") erroneously returned "
- << calc_quo << endl;
- ++result;
- }
- // and now the overloaded iquo(a,b,r):
- a = 23; b = 4; calc_quo = iquo(a, b, calc_rem);
- if (calc_quo != 5 || calc_rem != 3) {
- clog << "iquo(" << a << "," << b << ",r) erroneously returned "
- << calc_quo << " with r=" << calc_rem << endl;
- ++result;
- }
- a = 23; b = -4; calc_quo = iquo(a, b, calc_rem);
- if (calc_quo != -5 || calc_rem != 3) {
- clog << "iquo(" << a << "," << b << ",r) erroneously returned "
- << calc_quo << " with r=" << calc_rem << endl;
- ++result;
- }
- a = -23; b = 4; calc_quo = iquo(a, b, calc_rem);
- if (calc_quo != -5 || calc_rem != -3) {
- clog << "iquo(" << a << "," << b << ",r) erroneously returned "
- << calc_quo << " with r=" << calc_rem << endl;
- ++result;
- }
- a = -23; b = -4; calc_quo = iquo(a, b, calc_rem);
- if (calc_quo != 5 || calc_rem != -3) {
- clog << "iquo(" << a << "," << b << ",r) erroneously returned "
- << calc_quo << " with r=" << calc_rem << endl;
- ++result;
- }
-
- return result;
+ unsigned result = 0;
+ numeric calc_rem, calc_quo;
+ numeric a, b;
+
+ // check if irem(a, b) and irem(a, b, q) really behave like Maple's
+ // irem(a, b) and irem(a, b, 'q') as advertised in our documentation.
+ // These overloaded routines indeed need to be checked separately since
+ // internally they might be doing something completely different:
+ a = 23; b = 4; calc_rem = irem(a, b);
+ if (calc_rem != 3) {
+ clog << "irem(" << a << "," << b << ") erroneously returned "
+ << calc_rem << endl;
+ ++result;
+ }
+ a = 23; b = -4; calc_rem = irem(a, b);
+ if (calc_rem != 3) {
+ clog << "irem(" << a << "," << b << ") erroneously returned "
+ << calc_rem << endl;
+ ++result;
+ }
+ a = -23; b = 4; calc_rem = irem(a, b);
+ if (calc_rem != -3) {
+ clog << "irem(" << a << "," << b << ") erroneously returned "
+ << calc_rem << endl;
+ ++result;
+ }
+ a = -23; b = -4; calc_rem = irem(a, b);
+ if (calc_rem != -3) {
+ clog << "irem(" << a << "," << b << ") erroneously returned "
+ << calc_rem << endl;
+ ++result;
+ }
+ // and now the overloaded irem(a,b,q):
+ a = 23; b = 4; calc_rem = irem(a, b, calc_quo);
+ if (calc_rem != 3 || calc_quo != 5) {
+ clog << "irem(" << a << "," << b << ",q) erroneously returned "
+ << calc_rem << " with q=" << calc_quo << endl;
+ ++result;
+ }
+ a = 23; b = -4; calc_rem = irem(a, b, calc_quo);
+ if (calc_rem != 3 || calc_quo != -5) {
+ clog << "irem(" << a << "," << b << ",q) erroneously returned "
+ << calc_rem << " with q=" << calc_quo << endl;
+ ++result;
+ }
+ a = -23; b = 4; calc_rem = irem(a, b, calc_quo);
+ if (calc_rem != -3 || calc_quo != -5) {
+ clog << "irem(" << a << "," << b << ",q) erroneously returned "
+ << calc_rem << " with q=" << calc_quo << endl;
+ ++result;
+ }
+ a = -23; b = -4; calc_rem = irem(a, b, calc_quo);
+ if (calc_rem != -3 || calc_quo != 5) {
+ clog << "irem(" << a << "," << b << ",q) erroneously returned "
+ << calc_rem << " with q=" << calc_quo << endl;
+ ++result;
+ }
+ // check if iquo(a, b) and iquo(a, b, r) really behave like Maple's
+ // iquo(a, b) and iquo(a, b, 'r') as advertised in our documentation.
+ // These overloaded routines indeed need to be checked separately since
+ // internally they might be doing something completely different:
+ a = 23; b = 4; calc_quo = iquo(a, b);
+ if (calc_quo != 5) {
+ clog << "iquo(" << a << "," << b << ") erroneously returned "
+ << calc_quo << endl;
+ ++result;
+ }
+ a = 23; b = -4; calc_quo = iquo(a, b);
+ if (calc_quo != -5) {
+ clog << "iquo(" << a << "," << b << ") erroneously returned "
+ << calc_quo << endl;
+ ++result;
+ }
+ a = -23; b = 4; calc_quo = iquo(a, b);
+ if (calc_quo != -5) {
+ clog << "iquo(" << a << "," << b << ") erroneously returned "
+ << calc_quo << endl;
+ ++result;
+ }
+ a = -23; b = -4; calc_quo = iquo(a, b);
+ if (calc_quo != 5) {
+ clog << "iquo(" << a << "," << b << ") erroneously returned "
+ << calc_quo << endl;
+ ++result;
+ }
+ // and now the overloaded iquo(a,b,r):
+ a = 23; b = 4; calc_quo = iquo(a, b, calc_rem);
+ if (calc_quo != 5 || calc_rem != 3) {
+ clog << "iquo(" << a << "," << b << ",r) erroneously returned "
+ << calc_quo << " with r=" << calc_rem << endl;
+ ++result;
+ }
+ a = 23; b = -4; calc_quo = iquo(a, b, calc_rem);
+ if (calc_quo != -5 || calc_rem != 3) {
+ clog << "iquo(" << a << "," << b << ",r) erroneously returned "
+ << calc_quo << " with r=" << calc_rem << endl;
+ ++result;
+ }
+ a = -23; b = 4; calc_quo = iquo(a, b, calc_rem);
+ if (calc_quo != -5 || calc_rem != -3) {
+ clog << "iquo(" << a << "," << b << ",r) erroneously returned "
+ << calc_quo << " with r=" << calc_rem << endl;
+ ++result;
+ }
+ a = -23; b = -4; calc_quo = iquo(a, b, calc_rem);
+ if (calc_quo != 5 || calc_rem != -3) {
+ clog << "iquo(" << a << "," << b << ",r) erroneously returned "
+ << calc_quo << " with r=" << calc_rem << endl;
+ ++result;
+ }
+
+ return result;