aboutsummaryrefslogblamecommitdiff
path: root/test/test-fp_cases.c
blob: b0f792bc79fb8f2624ed72c4c7cf536f5eb58cc0 (plain) (tree)
1
2
3
4
5
6
7
8
9





                                                           


                   

                           
                        

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              






                    

                                                                              







                    

        






                    

         






                    

        






                    

          






                    

         






                    

           





                    
 
 
 
/* test cases for floating point comparison transformations
 * compile with -DFLOAT_TYPE=float
 *          or  -DFLOAT_TYPE=double
 *          or  -DFLOAT_TYPE="long double"
 */

#include <assert.h>

int main() {

  volatile FLOAT_TYPE a, b;
  /* different values */
  a = -2.1;
  b = -2;                             /* signs equal, exp equal, mantissa > */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = 1.8;
  b = 2.1;                           /* signs equal, exp differ, mantissa > */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = 2;
  b = 2.1;                            /* signs equal, exp equal, mantissa < */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = -2;
  b = -1.8;                          /* signs equal, exp differ, mantissa < */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = -1;
  b = 1;                         /* signs differ, exp equal, mantissa equal */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = -1;
  b = 0;                        /* signs differ, exp differ, mantissa equal */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = -2;
  b = 2.8;                           /* signs differ, exp equal, mantissa < */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = -2;
  b = 1.8;                          /* signs differ, exp differ, mantissa < */
  assert((a < b));
  assert((a <= b));
  assert(!(a > b));
  assert(!(a >= b));
  assert((a != b));
  assert(!(a == b));

  a = -2;
  b = -2.1;                           /* signs equal, exp equal, mantissa > */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = 2.1;
  b = 1.8;                           /* signs equal, exp differ, mantissa > */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = 2.1;
  b = 2;                              /* signs equal, exp equal, mantissa < */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = -1.8;
  b = -2;                            /* signs equal, exp differ, mantissa < */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = 1;
  b = -1;                        /* signs differ, exp equal, mantissa equal */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = 0;
  b = -1;                       /* signs differ, exp differ, mantissa equal */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = 2.8;
  b = -2;                            /* signs differ, exp equal, mantissa < */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  a = 1.8;
  b = -2;                           /* signs differ, exp differ, mantissa < */
  assert((a > b));
  assert((a >= b));
  assert(!(a < b));
  assert(!(a <= b));
  assert((a != b));
  assert(!(a == b));

  /* equal values */
  a = 0;
  b = 0;
  assert(!(a < b));
  assert((a <= b));
  assert(!(a > b));
  assert((a >= b));
  assert(!(a != b));
  assert((a == b));

  a = -0;
  b = 0;
  assert(!(a < b));
  assert((a <= b));
  assert(!(a > b));
  assert((a >= b));
  assert(!(a != b));
  assert((a == b));

  a = 1;
  b = 1;
  assert(!(a < b));
  assert((a <= b));
  assert(!(a > b));
  assert((a >= b));
  assert(!(a != b));
  assert((a == b));

  a = 0.5;
  b = 0.5;
  assert(!(a < b));
  assert((a <= b));
  assert(!(a > b));
  assert((a >= b));
  assert(!(a != b));
  assert((a == b));

  a = -1;
  b = -1;
  assert(!(a < b));
  assert((a <= b));
  assert(!(a > b));
  assert((a >= b));
  assert(!(a != b));
  assert((a == b));

  a = -0.5;
  b = -0.5;
  assert(!(a < b));
  assert((a <= b));
  assert(!(a > b));
  assert((a >= b));
  assert(!(a != b));
  assert((a == b));

}