dotgnu-pnet-commits
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dotgnu-pnet-commits] libjit ChangeLog dpas/dpas-parser.y tests/cond.pas


From: Klaus Treichel
Subject: [dotgnu-pnet-commits] libjit ChangeLog dpas/dpas-parser.y tests/cond.pas
Date: Sat, 19 Jul 2008 10:20:52 +0000

CVSROOT:        /cvsroot/dotgnu-pnet
Module name:    libjit
Changes by:     Klaus Treichel <ktreichel>      08/07/19 10:20:52

Modified files:
        .              : ChangeLog 
        dpas           : dpas-parser.y 
        tests          : cond.pas 

Log message:
        Fix a bug in dpas with binary functions returning a boolean result 
where the
        result type was not recorded correctly.
        Add tests for float comparisions where nan values are involved and add 
tests
        for the *_inv opcodes (not (f1 op f2)).

CVSWeb URLs:
http://cvs.savannah.gnu.org/viewcvs/libjit/ChangeLog?cvsroot=dotgnu-pnet&r1=1.384&r2=1.385
http://cvs.savannah.gnu.org/viewcvs/libjit/dpas/dpas-parser.y?cvsroot=dotgnu-pnet&r1=1.17&r2=1.18
http://cvs.savannah.gnu.org/viewcvs/libjit/tests/cond.pas?cvsroot=dotgnu-pnet&r1=1.1&r2=1.2

Patches:
Index: ChangeLog
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/ChangeLog,v
retrieving revision 1.384
retrieving revision 1.385
diff -u -b -r1.384 -r1.385
--- ChangeLog   6 Jul 2008 14:00:42 -0000       1.384
+++ ChangeLog   19 Jul 2008 10:20:51 -0000      1.385
@@ -1,3 +1,14 @@
+2008-07-19  Klaus Treichel  <address@hidden>
+
+       * dpas/spas-parser.y (handle_boolean_binary): Add macro for binary
+       operators returning a boolean value.
+       (handle_compare_binary): Use handle_boolean_binary instead of
+       handle_binary for non pointer compares. Set the result type to
+       dpas_type_boolean instead of the common type for pointer compares.
+
+       * tests/cond.pas: Add float compare tests where nan values are
+       involved. Add compare tests for the *_inv opcodes.
+
 2008-07-06  Klaus Treichel  <address@hidden>
 
        * jit/jit-rules-x86-64.ins: Replace the check if an immediate value

Index: dpas/dpas-parser.y
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/dpas/dpas-parser.y,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -b -r1.17 -r1.18
--- dpas/dpas-parser.y  27 Feb 2008 08:53:41 -0000      1.17
+++ dpas/dpas-parser.y  19 Jul 2008 10:20:51 -0000      1.18
@@ -680,6 +680,34 @@
                } while (0)
 
 /*
+ * Handle a boolean binary operator.
+ */
+#define        handle_boolean_binary(name,func,arg1,arg2)      \
+               do { \
+                       if(!dpas_sem_is_rvalue(arg1) || \
+                          !dpas_type_is_numeric(dpas_sem_get_type(arg2)) || \
+                          !dpas_sem_is_rvalue(arg1) || \
+                          !dpas_type_is_numeric(dpas_sem_get_type(arg2))) \
+                       { \
+                               if(!dpas_sem_is_error(arg1) && 
!dpas_sem_is_error(arg2)) \
+                               { \
+                                       dpas_error("invalid operands to binary 
`" name "'"); \
+                               } \
+                               dpas_sem_set_error(yyval.semvalue); \
+                       } \
+                       else \
+                       { \
+                               jit_value_t value; \
+                               value = func \
+                                       (dpas_current_function(), \
+                                        
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg1)), \
+                                        
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg2))); \
+                               dpas_sem_set_rvalue \
+                                       (yyval.semvalue, dpas_type_boolean, 
value); \
+                       } \
+               } while (0)
+
+/*
  * Handle a comparison binary operator.
  */
 #define        handle_compare_binary(name,func,arg1,arg2)      \
@@ -695,11 +723,11 @@
                                         
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg1)), \
                                         
dpas_sem_get_value(dpas_lvalue_to_rvalue(arg2))); \
                                dpas_sem_set_rvalue \
-                                       (yyval.semvalue, 
jit_value_get_type(value), value); \
+                                       (yyval.semvalue, dpas_type_boolean, 
value); \
                        } \
                        else \
                        { \
-                               handle_binary(name, func, arg1, arg2); \
+                               handle_boolean_binary(name, func, arg1, arg2); \
                        } \
                } while (0)
 

Index: tests/cond.pas
===================================================================
RCS file: /cvsroot/dotgnu-pnet/libjit/tests/cond.pas,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -b -r1.1 -r1.2
--- tests/cond.pas      20 Apr 2008 10:44:02 -0000      1.1
+++ tests/cond.pas      19 Jul 2008 10:20:51 -0000      1.2
@@ -446,26 +446,114 @@
        shortreal_lt := (f1 < f2);
 end;
 
+function shortreal_neq(f1, f2: ShortReal): Boolean;
+begin
+       shortreal_neq := not (f1 = f2);
+end;
+
+function shortreal_nne(f1, f2: ShortReal): Boolean;
+begin
+       shortreal_nne := not (f1 <> f2);
+end;
+
+function shortreal_nge(f1, f2: ShortReal): Boolean;
+begin
+       shortreal_nge := not (f1 >= f2);
+end;
+
+function shortreal_ngt(f1, f2: ShortReal): Boolean;
+begin
+       shortreal_ngt := not (f1 > f2);
+end;
+
+function shortreal_nle(f1, f2: ShortReal): Boolean;
+begin
+       shortreal_nle := not (f1 <= f2);
+end;
+
+function shortreal_nlt(f1, f2: ShortReal): Boolean;
+begin
+       shortreal_nlt := not (f1 < f2);
+end;
+
 procedure shortreal_tests;
+var
+       fnan :ShortReal;
 begin
+       fnan := sqrt(ShortReal(-1));
+
+       runcheck("cond_f_eq_nan_0.0", shortreal_eq(fnan, 0.0), False);
+       runcheck("cond_f_eq_0.0_nan", shortreal_eq(0.0, fnan), False);
+       runcheck("cond_f_eq_nan_nan", shortreal_eq(fnan, fnan), False);
        runcheck("cond_f_eq_0.0_0.0", shortreal_eq(0.0, 0.0), True);
        runcheck("cond_f_eq_1.0_0.0", shortreal_eq(1.0, 0.0), False);
        runcheck("cond_f_eq_0.0_1.0", shortreal_eq(0.0, 1.0), False);
+       runcheck("cond_f_neq_nan_0.0", shortreal_neq(fnan, 0.0), True);
+       runcheck("cond_f_neq_0.0_nan", shortreal_neq(0.0, fnan), True);
+       runcheck("cond_f_neq_nan_nan", shortreal_neq(fnan, fnan), True);
+       runcheck("cond_f_neq_0.0_0.0", shortreal_neq(0.0, 0.0), False);
+       runcheck("cond_f_neq_1.0_0.0", shortreal_neq(1.0, 0.0), True);
+       runcheck("cond_f_neq_0.0_1.0", shortreal_neq(0.0, 1.0), True);
+       runcheck("cond_f_ne_nan_0.0", shortreal_ne(fnan, 0.0), True);
+       runcheck("cond_f_ne_0.0_nan", shortreal_ne(0.0, fnan), True);
+       runcheck("cond_f_ne_nan_nan", shortreal_ne(fnan, fnan), True);
        runcheck("cond_f_ne_0.0_0.0", shortreal_ne(0.0, 0.0), False);
        runcheck("cond_f_ne_1.0_0.0", shortreal_ne(1.0, 0.0), True);
        runcheck("cond_f_ne_0.0_1.0", shortreal_ne(0.0, 1.0), True);
+       runcheck("cond_f_nne_nan_0.0", shortreal_nne(fnan, 0.0), False);
+       runcheck("cond_f_nne_0.0_nan", shortreal_nne(0.0, fnan), False);
+       runcheck("cond_f_nne_nan_nan", shortreal_nne(fnan, fnan), False);
+       runcheck("cond_f_nne_0.0_0.0", shortreal_nne(0.0, 0.0), True);
+       runcheck("cond_f_nne_1.0_0.0", shortreal_nne(1.0, 0.0), False);
+       runcheck("cond_f_nne_0.0_1.0", shortreal_nne(0.0, 1.0), False);
+       runcheck("cond_f_gt_nan_0.0", shortreal_gt(fnan, 0.0), False);
+       runcheck("cond_f_gt_0.0_nan", shortreal_gt(0.0, fnan), False);
+       runcheck("cond_f_gt_nan_nan", shortreal_gt(fnan, fnan), False);
        runcheck("cond_f_gt_0.0_0.0", shortreal_gt(0.0, 0.0), False);
        runcheck("cond_f_gt_1.0_0.0", shortreal_gt(1.0, 0.0), True);
        runcheck("cond_f_gt_0.0_1.0", shortreal_gt(0.0, 1.0), False);
-       runcheck("cond_f_ge_0.0_0.0", shortreal_ge(0.0, 0.0), true);
+       runcheck("cond_f_ngt_nan_0.0", shortreal_ngt(fnan, 0.0), True);
+       runcheck("cond_f_ngt_0.0_nan", shortreal_ngt(0.0, fnan), True);
+       runcheck("cond_f_ngt_nan_nan", shortreal_ngt(fnan, fnan), True);
+       runcheck("cond_f_ngt_0.0_0.0", shortreal_ngt(0.0, 0.0), True);
+       runcheck("cond_f_ngt_1.0_0.0", shortreal_ngt(1.0, 0.0), False);
+       runcheck("cond_f_ngt_0.0_1.0", shortreal_ngt(0.0, 1.0), True);
+       runcheck("cond_f_ge_nan_0.0", shortreal_ge(fnan, 0.0), False);
+       runcheck("cond_f_ge_0.0_nan", shortreal_ge(0.0, fnan), False);
+       runcheck("cond_f_ge_nan_nan", shortreal_ge(fnan, fnan), False);
+       runcheck("cond_f_ge_0.0_0.0", shortreal_ge(0.0, 0.0), True);
        runcheck("cond_f_ge_1.0_0.0", shortreal_ge(1.0, 0.0), True);
        runcheck("cond_f_ge_0.0_1.0", shortreal_ge(0.0, 1.0), False);
+       runcheck("cond_f_nge_nan_0.0", shortreal_nge(fnan, 0.0), True);
+       runcheck("cond_f_nge_0.0_nan", shortreal_nge(0.0, fnan), True);
+       runcheck("cond_f_nge_nan_nan", shortreal_nge(fnan, fnan), True);
+       runcheck("cond_f_nge_0.0_0.0", shortreal_nge(0.0, 0.0), False);
+       runcheck("cond_f_nge_1.0_0.0", shortreal_nge(1.0, 0.0), False);
+       runcheck("cond_f_nge_0.0_1.0", shortreal_nge(0.0, 1.0), True);
+       runcheck("cond_f_lt_nan_0.0", shortreal_lt(fnan, 0.0), False);
+       runcheck("cond_f_lt_0.0_nan", shortreal_lt(0.0, fnan), False);
+       runcheck("cond_f_lt_nan_nan", shortreal_lt(fnan, fnan), False);
        runcheck("cond_f_lt_0.0_0.0", shortreal_lt(0.0, 0.0), False);
        runcheck("cond_f_lt_1.0_0.0", shortreal_lt(1.0, 0.0), False);
        runcheck("cond_f_lt_0.0_1.0", shortreal_lt(0.0, 1.0), True);
+       runcheck("cond_f_nlt_nan_0.0", shortreal_nlt(fnan, 0.0), True);
+       runcheck("cond_f_nlt_0.0_nan", shortreal_nlt(0.0, fnan), True);
+       runcheck("cond_f_nlt_nan_nan", shortreal_nlt(fnan, fnan), True);
+       runcheck("cond_f_nlt_0.0_0.0", shortreal_nlt(0.0, 0.0), True);
+       runcheck("cond_f_nlt_1.0_0.0", shortreal_nlt(1.0, 0.0), True);
+       runcheck("cond_f_nlt_0.0_1.0", shortreal_nlt(0.0, 1.0), False);
+       runcheck("cond_f_le_nan_0.0", shortreal_le(fnan, 0.0), False);
+       runcheck("cond_f_le_0.0_nan", shortreal_le(0.0, fnan), False);
+       runcheck("cond_f_le_nan_nan", shortreal_le(fnan, fnan), False);
        runcheck("cond_f_le_0.0_0.0", shortreal_le(0.0, 0.0), True);
        runcheck("cond_f_le_1.0_0.0", shortreal_le(1.0, 0.0), False);
        runcheck("cond_f_le_0.0_1.0", shortreal_le(0.0, 1.0), True);
+       runcheck("cond_f_nle_nan_0.0", shortreal_nle(fnan, 0.0), True);
+       runcheck("cond_f_nle_0.0_nan", shortreal_nle(0.0, fnan), True);
+       runcheck("cond_f_nle_nan_nan", shortreal_nle(fnan, fnan), True);
+       runcheck("cond_f_nle_0.0_0.0", shortreal_nle(0.0, 0.0), False);
+       runcheck("cond_f_nle_1.0_0.0", shortreal_nle(1.0, 0.0), True);
+       runcheck("cond_f_nle_0.0_1.0", shortreal_nle(0.0, 1.0), False);
 end;
 
 function real_eq(f1, f2: Real): Boolean;
@@ -498,26 +586,115 @@
        real_lt := (f1 < f2);
 end;
 
+function real_neq(f1, f2: Real): Boolean;
+begin
+       real_neq := not (f1 = f2);
+end;
+
+function real_nne(f1, f2: Real): Boolean;
+begin
+       real_nne := not (f1 <> f2);
+end;
+
+function real_nge(f1, f2: Real): Boolean;
+begin
+       real_nge := not (f1 >= f2);
+end;
+
+function real_ngt(f1, f2: Real): Boolean;
+begin
+       real_ngt := not (f1 > f2);
+end;
+
+function real_nle(f1, f2: Real): Boolean;
+begin
+       real_nle := not (f1 <= f2);
+end;
+
+function real_nlt(f1, f2: Real): Boolean;
+begin
+       real_nlt := not (f1 < f2);
+end;
+
 procedure real_tests;
+var
+       dnan :Real;
 begin
+       dnan := sqrt(Real(-1));
+
+       runcheck("cond_d_eq_nan_0.0", real_eq(dnan, 0.0), False);
+       runcheck("cond_d_eq_0.0_nan", real_eq(0.0, dnan), False);
+       runcheck("cond_d_eq_nan_nan", real_eq(dnan, dnan), False);
        runcheck("cond_d_eq_0.0_0.0", real_eq(0.0, 0.0), True);
        runcheck("cond_d_eq_1.0_0.0", real_eq(1.0, 0.0), False);
        runcheck("cond_d_eq_0.0_1.0", real_eq(0.0, 1.0), False);
+       runcheck("cond_d_neq_nan_0.0", real_neq(dnan, 0.0), True);
+       runcheck("cond_d_neq_0.0_nan", real_neq(0.0, dnan), True);
+       runcheck("cond_d_neq_nan_nan", real_neq(dnan, dnan), True);
+       runcheck("cond_d_neq_0.0_0.0", real_neq(0.0, 0.0), False);
+       runcheck("cond_d_neq_1.0_0.0", real_neq(1.0, 0.0), True);
+       runcheck("cond_d_neq_0.0_1.0", real_neq(0.0, 1.0), True);
+       runcheck("cond_d_ne_nan_0.0", real_ne(dnan, 0.0), True);
+       runcheck("cond_d_ne_0.0_nan", real_ne(0.0, dnan), True);
+       runcheck("cond_d_ne_nan_nan", real_ne(dnan, dnan), True);
        runcheck("cond_d_ne_0.0_0.0", real_ne(0.0, 0.0), False);
        runcheck("cond_d_ne_1.0_0.0", real_ne(1.0, 0.0), True);
        runcheck("cond_d_ne_0.0_1.0", real_ne(0.0, 1.0), True);
+       runcheck("cond_d_nne_nan_0.0", real_nne(dnan, 0.0), False);
+       runcheck("cond_d_nne_0.0_nan", real_nne(0.0, dnan), False);
+       runcheck("cond_d_nne_nan_nan", real_nne(dnan, dnan), False);
+       runcheck("cond_d_nne_0.0_0.0", real_nne(0.0, 0.0), True);
+       runcheck("cond_d_nne_1.0_0.0", real_nne(1.0, 0.0), False);
+       runcheck("cond_d_nne_0.0_1.0", real_nne(0.0, 1.0), False);
+       runcheck("cond_d_gt_nan_0.0", real_gt(dnan, 0.0), False);
+       runcheck("cond_d_gt_0.0_nan", real_gt(0.0, dnan), False);
+       runcheck("cond_d_gt_nan_nan", real_gt(dnan, dnan), False);
        runcheck("cond_d_gt_0.0_0.0", real_gt(0.0, 0.0), False);
        runcheck("cond_d_gt_1.0_0.0", real_gt(1.0, 0.0), True);
        runcheck("cond_d_gt_0.0_1.0", real_gt(0.0, 1.0), False);
-       runcheck("cond_d_ge_0.0_0.0", real_ge(0.0, 0.0), true);
+       runcheck("cond_d_ngt_nan_0.0", real_ngt(dnan, 0.0), True);
+       runcheck("cond_d_ngt_0.0_nan", real_ngt(0.0, dnan), True);
+       runcheck("cond_d_ngt_nan_nan", real_ngt(dnan, dnan), True);
+       runcheck("cond_d_ngt_0.0_0.0", real_ngt(0.0, 0.0), True);
+       runcheck("cond_d_ngt_1.0_0.0", real_ngt(1.0, 0.0), False);
+       runcheck("cond_d_ngt_0.0_1.0", real_ngt(0.0, 1.0), True);
+       runcheck("cond_d_ge_nan_0.0", real_ge(dnan, 0.0), False);
+       runcheck("cond_d_ge_0.0_nan", real_ge(0.0, dnan), False);
+       runcheck("cond_d_ge_nan_nan", real_ge(dnan, dnan), False);
+       runcheck("cond_d_ge_0.0_0.0", real_ge(0.0, 0.0), True);
        runcheck("cond_d_ge_1.0_0.0", real_ge(1.0, 0.0), True);
        runcheck("cond_d_ge_0.0_1.0", real_ge(0.0, 1.0), False);
+       runcheck("cond_d_nge_nan_0.0", real_nge(dnan, 0.0), True);
+       runcheck("cond_d_nge_0.0_nan", real_nge(0.0, dnan), True);
+       runcheck("cond_d_nge_nan_nan", real_nge(dnan, dnan), True);
+       runcheck("cond_d_nge_0.0_0.0", real_nge(0.0, 0.0), False);
+       runcheck("cond_d_nge_1.0_0.0", real_nge(1.0, 0.0), False);
+       runcheck("cond_d_nge_0.0_1.0", real_nge(0.0, 1.0), True);
+       runcheck("cond_d_lt_nan_0.0", real_lt(dnan, 0.0), False);
+       runcheck("cond_d_lt_0.0_nan", real_lt(0.0, dnan), False);
+       runcheck("cond_d_lt_nan_nan", real_lt(dnan, dnan), False);
        runcheck("cond_d_lt_0.0_0.0", real_lt(0.0, 0.0), False);
        runcheck("cond_d_lt_1.0_0.0", real_lt(1.0, 0.0), False);
        runcheck("cond_d_lt_0.0_1.0", real_lt(0.0, 1.0), True);
+       runcheck("cond_d_nlt_nan_0.0", real_nlt(dnan, 0.0), True);
+       runcheck("cond_d_nlt_0.0_nan", real_nlt(0.0, dnan), True);
+       runcheck("cond_d_nlt_nan_nan", real_nlt(dnan, dnan), True);
+       runcheck("cond_d_nlt_0.0_0.0", real_nlt(0.0, 0.0), True);
+       runcheck("cond_d_nlt_1.0_0.0", real_nlt(1.0, 0.0), True);
+       runcheck("cond_d_nlt_0.0_1.0", real_nlt(0.0, 1.0), False);
+       runcheck("cond_d_le_nan_0.0", real_le(dnan, 0.0), False);
+       runcheck("cond_d_le_0.0_nan", real_le(0.0, dnan), False);
+       runcheck("cond_d_le_nan_nan", real_le(dnan, dnan), False);
        runcheck("cond_d_le_0.0_0.0", real_le(0.0, 0.0), True);
        runcheck("cond_d_le_1.0_0.0", real_le(1.0, 0.0), False);
        runcheck("cond_d_le_0.0_1.0", real_le(0.0, 1.0), True);
+       runcheck("cond_d_nle_nan_0.0", real_nle(dnan, 0.0), True);
+       runcheck("cond_d_nle_0.0_nan", real_nle(0.0, dnan), True);
+       runcheck("cond_d_nle_nan_nan", real_nle(dnan, dnan), True);
+       runcheck("cond_d_nle_0.0_0.0", real_nle(0.0, 0.0), False);
+       runcheck("cond_d_nle_1.0_0.0", real_nle(1.0, 0.0), True);
+       runcheck("cond_d_nle_0.0_1.0", real_nle(0.0, 1.0), False);
+
 end;
 
 function longreal_eq(f1, f2: LongReal): Boolean;
@@ -550,26 +727,114 @@
        longreal_lt := (f1 < f2);
 end;
 
+function longreal_neq(f1, f2: LongReal): Boolean;
+begin
+       longreal_neq := not (f1 = f2);
+end;
+
+function longreal_nne(f1, f2: LongReal): Boolean;
+begin
+       longreal_nne := not (f1 <> f2);
+end;
+
+function longreal_nge(f1, f2: LongReal): Boolean;
+begin
+       longreal_nge := not (f1 >= f2);
+end;
+
+function longreal_ngt(f1, f2: LongReal): Boolean;
+begin
+       longreal_ngt := not (f1 > f2);
+end;
+
+function longreal_nle(f1, f2: LongReal): Boolean;
+begin
+       longreal_nle := not (f1 <= f2);
+end;
+
+function longreal_nlt(f1, f2: LongReal): Boolean;
+begin
+       longreal_nlt := not (f1 < f2);
+end;
+
 procedure longreal_tests;
+var
+       nnan :LongReal;
 begin
+       nnan := sqrt(LongReal(-1));
+
+       runcheck("cond_n_eq_nan_0.0", longreal_eq(nnan, 0.0), False);
+       runcheck("cond_n_eq_0.0_nan", longreal_eq(0.0, nnan), False);
+       runcheck("cond_n_eq_nan_nan", longreal_eq(nnan, nnan), False);
        runcheck("cond_n_eq_0.0_0.0", longreal_eq(0.0, 0.0), True);
        runcheck("cond_n_eq_1.0_0.0", longreal_eq(1.0, 0.0), False);
        runcheck("cond_n_eq_0.0_1.0", longreal_eq(0.0, 1.0), False);
+       runcheck("cond_n_neq_nan_0.0", longreal_neq(nnan, 0.0), True);
+       runcheck("cond_n_neq_0.0_nan", longreal_neq(0.0, nnan), True);
+       runcheck("cond_n_neq_nan_nan", longreal_neq(nnan, nnan), True);
+       runcheck("cond_n_neq_0.0_0.0", longreal_neq(0.0, 0.0), False);
+       runcheck("cond_n_neq_1.0_0.0", longreal_neq(1.0, 0.0), True);
+       runcheck("cond_n_neq_0.0_1.0", longreal_neq(0.0, 1.0), True);
+       runcheck("cond_n_ne_nan_0.0", longreal_ne(nnan, 0.0), True);
+       runcheck("cond_n_ne_0.0_nan", longreal_ne(0.0, nnan), True);
+       runcheck("cond_n_ne_nan_nan", longreal_ne(nnan, nnan), True);
        runcheck("cond_n_ne_0.0_0.0", longreal_ne(0.0, 0.0), False);
        runcheck("cond_n_ne_1.0_0.0", longreal_ne(1.0, 0.0), True);
        runcheck("cond_n_ne_0.0_1.0", longreal_ne(0.0, 1.0), True);
+       runcheck("cond_n_nne_nan_0.0", longreal_nne(nnan, 0.0), False);
+       runcheck("cond_n_nne_0.0_nan", longreal_nne(0.0, nnan), False);
+       runcheck("cond_n_nne_nan_nan", longreal_nne(nnan, nnan), False);
+       runcheck("cond_n_nne_0.0_0.0", longreal_nne(0.0, 0.0), True);
+       runcheck("cond_n_nne_1.0_0.0", longreal_nne(1.0, 0.0), False);
+       runcheck("cond_n_nne_0.0_1.0", longreal_nne(0.0, 1.0), False);
+       runcheck("cond_n_gt_nan_0.0", longreal_gt(nnan, 0.0), False);
+       runcheck("cond_n_gt_0.0_nan", longreal_gt(0.0, nnan), False);
+       runcheck("cond_n_gt_nan_nan", longreal_gt(nnan, nnan), False);
        runcheck("cond_n_gt_0.0_0.0", longreal_gt(0.0, 0.0), False);
        runcheck("cond_n_gt_1.0_0.0", longreal_gt(1.0, 0.0), True);
        runcheck("cond_n_gt_0.0_1.0", longreal_gt(0.0, 1.0), False);
-       runcheck("cond_n_ge_0.0_0.0", longreal_ge(0.0, 0.0), true);
+       runcheck("cond_n_ngt_nan_0.0", longreal_ngt(nnan, 0.0), True);
+       runcheck("cond_n_ngt_0.0_nan", longreal_ngt(0.0, nnan), True);
+       runcheck("cond_n_ngt_nan_nan", longreal_ngt(nnan, nnan), True);
+       runcheck("cond_n_ngt_0.0_0.0", longreal_ngt(0.0, 0.0), True);
+       runcheck("cond_n_ngt_1.0_0.0", longreal_ngt(1.0, 0.0), False);
+       runcheck("cond_n_ngt_0.0_1.0", longreal_ngt(0.0, 1.0), True);
+       runcheck("cond_n_ge_nan_0.0", longreal_ge(nnan, 0.0), False);
+       runcheck("cond_n_ge_0.0_nan", longreal_ge(0.0, nnan), False);
+       runcheck("cond_n_ge_nan_nan", longreal_ge(nnan, nnan), False);
+       runcheck("cond_n_ge_0.0_0.0", longreal_ge(0.0, 0.0), True);
        runcheck("cond_n_ge_1.0_0.0", longreal_ge(1.0, 0.0), True);
        runcheck("cond_n_ge_0.0_1.0", longreal_ge(0.0, 1.0), False);
+       runcheck("cond_n_nge_nan_0.0", longreal_nge(nnan, 0.0), True);
+       runcheck("cond_n_nge_0.0_nan", longreal_nge(0.0, nnan), True);
+       runcheck("cond_n_nge_nan_nan", longreal_nge(nnan, nnan), True);
+       runcheck("cond_n_nge_0.0_0.0", longreal_nge(0.0, 0.0), False);
+       runcheck("cond_n_nge_1.0_0.0", longreal_nge(1.0, 0.0), False);
+       runcheck("cond_n_nge_0.0_1.0", longreal_nge(0.0, 1.0), True);
+       runcheck("cond_n_lt_nan_0.0", longreal_lt(nnan, 0.0), False);
+       runcheck("cond_n_lt_0.0_nan", longreal_lt(0.0, nnan), False);
+       runcheck("cond_n_lt_nan_nan", longreal_lt(nnan, nnan), False);
        runcheck("cond_n_lt_0.0_0.0", longreal_lt(0.0, 0.0), False);
        runcheck("cond_n_lt_1.0_0.0", longreal_lt(1.0, 0.0), False);
        runcheck("cond_n_lt_0.0_1.0", longreal_lt(0.0, 1.0), True);
+       runcheck("cond_n_nlt_nan_0.0", longreal_nlt(nnan, 0.0), True);
+       runcheck("cond_n_nlt_0.0_nan", longreal_nlt(0.0, nnan), True);
+       runcheck("cond_n_nlt_nan_nan", longreal_nlt(nnan, nnan), True);
+       runcheck("cond_n_nlt_0.0_0.0", longreal_nlt(0.0, 0.0), True);
+       runcheck("cond_n_nlt_1.0_0.0", longreal_nlt(1.0, 0.0), True);
+       runcheck("cond_n_nlt_0.0_1.0", longreal_nlt(0.0, 1.0), False);
+       runcheck("cond_n_le_nan_0.0", longreal_le(nnan, 0.0), False);
+       runcheck("cond_n_le_0.0_nan", longreal_le(0.0, nnan), False);
+       runcheck("cond_n_le_nan_nan", longreal_le(nnan, nnan), False);
        runcheck("cond_n_le_0.0_0.0", longreal_le(0.0, 0.0), True);
        runcheck("cond_n_le_1.0_0.0", longreal_le(1.0, 0.0), False);
        runcheck("cond_n_le_0.0_1.0", longreal_le(0.0, 1.0), True);
+       runcheck("cond_n_nle_nan_0.0", longreal_nle(nnan, 0.0), True);
+       runcheck("cond_n_nle_0.0_nan", longreal_nle(0.0, nnan), True);
+       runcheck("cond_n_nle_nan_nan", longreal_nle(nnan, nnan), True);
+       runcheck("cond_n_nle_0.0_0.0", longreal_nle(0.0, 0.0), False);
+       runcheck("cond_n_nle_1.0_0.0", longreal_nle(1.0, 0.0), True);
+       runcheck("cond_n_nle_0.0_1.0", longreal_nle(0.0, 1.0), False);
 end;
 
 procedure run_tests;




reply via email to

[Prev in Thread] Current Thread [Next in Thread]