1  /* Copyright (C) 2002 Free Software Foundation.
       2  
       3     Test for correctness of composite comparisons.
       4  
       5     Written by Roger Sayle, 3rd June 2002.  */
       6  
       7  extern void abort (void);
       8  
       9  int ieq (int x, int y, int ok)
      10  {
      11    if ((x<=y) && (x>=y))
      12      {
      13        if (!ok) abort ();
      14      }
      15    else
      16      if (ok) abort ();
      17  
      18    if ((x<=y) && (x==y))
      19      {
      20        if (!ok) abort ();
      21      }
      22    else
      23      if (ok) abort ();
      24  
      25    if ((x<=y) && (y<=x))
      26      {
      27        if (!ok) abort ();
      28      }
      29    else
      30      if (ok) abort ();
      31  
      32    if ((y==x) && (x<=y))
      33      {
      34        if (!ok) abort ();
      35      }
      36    else
      37      if (ok) abort ();
      38  }
      39  
      40  int ine (int x, int y, int ok)
      41  {
      42    if ((x<y) || (x>y))
      43      {
      44        if (!ok) abort ();
      45      }
      46    else
      47      if (ok) abort ();
      48  }
      49  
      50  int ilt (int x, int y, int ok)
      51  {
      52    if ((x<y) && (x!=y))
      53      {
      54        if (!ok) abort ();
      55      }
      56    else
      57      if (ok) abort ();
      58  }
      59  
      60  int ile (int x, int y, int ok)
      61  {
      62    if ((x<y) || (x==y))
      63      {
      64        if (!ok) abort ();
      65      }
      66    else
      67      if (ok) abort ();
      68  }
      69  
      70  int igt (int x, int y, int ok)
      71  {
      72    if ((x>y) && (x!=y))
      73      {
      74        if (!ok) abort ();
      75      }
      76    else
      77      if (ok) abort ();
      78  }
      79  
      80  int ige (int x, int y, int ok)
      81  {
      82    if ((x>y) || (x==y))
      83      {
      84        if (!ok) abort ();
      85      }
      86    else
      87      if (ok) abort ();
      88  }
      89  
      90  int
      91  main ()
      92  {
      93    ieq (1, 4, 0);
      94    ieq (3, 3, 1);
      95    ieq (5, 2, 0);
      96  
      97    ine (1, 4, 1);
      98    ine (3, 3, 0);
      99    ine (5, 2, 1);
     100  
     101    ilt (1, 4, 1);
     102    ilt (3, 3, 0);
     103    ilt (5, 2, 0);
     104  
     105    ile (1, 4, 1);
     106    ile (3, 3, 1);
     107    ile (5, 2, 0);
     108  
     109    igt (1, 4, 0);
     110    igt (3, 3, 0);
     111    igt (5, 2, 1);
     112  
     113    ige (1, 4, 0);
     114    ige (3, 3, 1);
     115    ige (5, 2, 1);
     116  
     117    return 0;
     118  }
     119