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

  1. //
  2. // testFix16.cc : test Fix16/32 classes
  3. //
  4.  
  5. #include <Fix16.h>
  6.  
  7. #define check(x,y)    cout << x << " = " << (y) << "\n"
  8.  
  9. test16() {
  10.   cout << "Fix16: identities should be displayed\n";
  11.  
  12.   Fix16 a;        check("0",a);
  13.   Fix16 b = .5;        check(".5",b);
  14.   Fix16 c = -.5;    check("-.5",c);
  15.   Fix16 d = .1;        check(".1",d);
  16.   Fix16 e = b;        check(".5",e);
  17.  
  18.   check(".5",a = b);
  19.   check(".25",a = .25);
  20.   check("8192",mantissa(a));
  21.   mantissa(a)=8192;
  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 << "Fix16: range errors ignored and overflows saturated\n";
  43.   set_Fix16_overflow_handler(Fix16_overflow_saturate);
  44.   set_Fix16_range_error_handler(Fix16_ignore);
  45.  
  46.   Fix16 f = 1.1;    check("1.1",f);
  47.  
  48.   Fix16 g = .7;
  49.   check(".7 + .5",g+b);
  50.   check("-.5 - .7",c-g);
  51.   check(".5 / .1",b/d);
  52. }
  53.  
  54. test32() {
  55.   cout << "Fix32: identities should be displayed\n";
  56.  
  57.   Fix32 a;        check("0",a);
  58.   Fix32 b = .5;        check(".5",b);
  59.   Fix32 c = -.5;    check("-.5",c);
  60.   Fix32 d = .1;        check(".1",d);
  61.   Fix32 e = b;        check(".5",e);
  62.  
  63.   check(".5",a = b);
  64.   check(".25",a = .25);
  65.   check("536870912",mantissa(a));
  66.   mantissa(a)=536870912;
  67.   check(".25",a);
  68.   check(".25",value(a));
  69.  
  70.   check(".25",+a);
  71.   check("-.25",-a);
  72.  
  73.   check(".1 + .5",d+b);
  74.   check(".1 - .5",d-b);
  75.   check(".1 * .5",d*b);
  76.   check(".1 *  3",d*3);
  77.   check(".1 * -3",d*-3);
  78.   check(".1 / .5",d/b);
  79.   check(".1 << 1",d<<1);
  80.   check("-.5 >> 2",c>>2);
  81.  
  82.   check(".1 == .5",d == b);
  83.   check(".1 != .5",d != b);
  84.   check(".1 > .5",d > b);
  85.   check(".5 <= -.5",b <= c);
  86.  
  87.   cout << "Fix32: range errors reported and overflows reported\n";
  88.   set_Fix32_overflow_handler(Fix32_warning);
  89.   set_Fix32_range_error_handler(Fix32_warning);
  90.  
  91.   Fix32 f = 1.1;    check("1.1",f);
  92.  
  93.   Fix32 g = .7;
  94.   check(".7 + .5",g+b);
  95.   check("-.5 - .7",c-g);
  96.   check(".5 / .1",b/d);
  97. }
  98.  
  99. main() {
  100.   test16();
  101.   test32();
  102. }
  103.  
  104.