home *** CD-ROM | disk | FTP | other *** search
/ GEMini Atari / GEMini_Atari_CD-ROM_Walnut_Creek_December_1993.iso / files / gnu / g__lib / tfix24.cc < prev    next >
Encoding:
C/C++ Source or Header  |  1993-07-23  |  2.1 KB  |  104 lines

  1. //
  2. // testFix24.cc : test Fix24/48 classes
  3. //
  4.  
  5. #include <Fix24.h>
  6.  
  7. #define check(x,y)    cout << x << " = " << (y) << "\n"
  8.  
  9. test24() {
  10.   cout << "Fix24: identities should be displayed\n";
  11.  
  12.   Fix24 a;        check("0",a);
  13.   Fix24 b = .5;        check(".5",b);
  14.   Fix24 c = -.5;    check("-.5",c);
  15.   Fix24 d = .1;        check(".1",d);
  16.   Fix24 e = b;        check(".5",e);
  17.  
  18.   check(".5",a = b);
  19.   check(".25",a = .25);
  20.   check("536870912",mantissa(a));
  21.   mantissa(a)=536870912;
  22.   check(".25",a);
  23.   check(".25",value(a));
  24.  
  25.   check(".25",+a);
  26.   check("-.25",-a);
  27.  
  28.   check(".1 + .5",d+b);
  29.   check(".1 - .5",d-b);
  30.   check(".1 * .5",d*b);
  31.   check(".1 *  3",d*3);
  32.   check(".1 * -3",d*-3);
  33.   check(".1 / .5",d/b);
  34.   check(".1 << 1",d<<1);
  35.   check("-.5 >> 2",c>>2);
  36.  
  37.   check(".1 == .5",d == b);
  38.   check(".1 != .5",d != b);
  39.   check(".1 > .5",d > b);
  40.   check(".5 <= -.5",b <= c);
  41.  
  42.   cout << "Fix24: range errors ignored and overflows saturated\n";
  43.   set_Fix24_overflow_handler(Fix24_overflow_saturate);
  44.   set_Fix24_range_error_handler(Fix24_ignore);
  45.  
  46.   Fix24 f = 1.1;    check("1.1",f);
  47.  
  48.   Fix24 g = .7;
  49.   check(".7 + .5",g+b);
  50.   check("-.5 - .7",c-g);
  51.   check(".5 / .1",b/d);
  52. }
  53.  
  54. test48() {
  55.   cout << "Fix48: identities should be displayed\n";
  56.  
  57.   Fix48 a;        check("0",a);
  58.   Fix48 b = .5;        check(".5",b);
  59.   Fix48 c = -.5;    check("-.5",c);
  60.   Fix48 d = .1;        check(".1",d);
  61.   Fix48 e = b;        check(".5",e);
  62.  
  63.   check(".5",a = b);
  64.   check(".25",a = .25);
  65.   twolongs t;
  66.   t = mantissa(a);
  67.   check("536870912",t.u);
  68.   check("0",t.l);
  69.   mantissa(a)=t;
  70.   check(".25",a);
  71.   check(".25",value(a));
  72.  
  73.   check(".25",+a);
  74.   check("-.25",-a);
  75.  
  76.   check(".1 + .5",d+b);
  77.   check(".1 - .5",d-b);
  78.   check(".1 *  3",d*3);
  79.   check(".1 * -3",d*-3);
  80.   check(".1 << 1",d<<1);
  81.   check("-.5 >> 2",c>>2);
  82.  
  83.   check(".1 == .5",d == b);
  84.   check(".1 != .5",d != b);
  85.   check(".1 > .5",d > b);
  86.   check(".5 <= -.5",b <= c);
  87.  
  88.   cout << "Fix48: range errors reported and overflows reported\n";
  89.   set_Fix48_overflow_handler(Fix48_warning);
  90.   set_Fix48_range_error_handler(Fix48_warning);
  91.  
  92.   Fix48 f = 1.1;    check("1.1",f);
  93.  
  94.   Fix48 g = .7;
  95.   check(".7 + .5",g+b);
  96.   check("-.5 - .7",c-g);
  97. }
  98.  
  99. main() {
  100.   test24();
  101.   test48();
  102. }
  103.  
  104.