=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/builtin/round.c,v retrieving revision 1.1 retrieving revision 1.6 diff -u -p -r1.1 -r1.6 --- OpenXM_contrib2/asir2000/builtin/round.c 2003/12/02 03:24:24 1.1 +++ OpenXM_contrib2/asir2000/builtin/round.c 2007/01/30 00:38:25 1.6 @@ -1,3 +1,6 @@ +/* $OpenXM$ */ + +#undef INTERVAL #define INTERVAL #include "ca.h" #include "parse.h" @@ -31,6 +34,8 @@ void Padd_pinf(NODE arg,Real *rp) *rp = b; else if ( !b ) *rp = a; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("add_pinf : invalid argument"); else { FPPLUSINF c = BDY(a)+BDY(b); @@ -51,6 +56,8 @@ void Padd_minf(NODE arg,Real *rp) *rp = b; else if ( !b ) *rp = a; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("add_pinf : invalid argument"); else { FPMINUSINF c = BDY(a)+BDY(b); @@ -77,6 +84,8 @@ void Psub_pinf(NODE arg,Real *rp) } } else if ( !b ) *rp = a; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("sub_pinf : invalid argument"); else { FPPLUSINF c = BDY(a)-BDY(b); @@ -103,6 +112,8 @@ void Psub_minf(NODE arg,Real *rp) } } else if ( !b ) *rp = a; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("sub_minf : invalid argument"); else { FPMINUSINF c = BDY(a)-BDY(b); @@ -121,6 +132,8 @@ void Pmul_pinf(NODE arg,Real *rp) b = (Real)ARG1(arg); if ( !a || !b ) *rp = 0; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("mul_pinf : invalid argument"); else { FPPLUSINF c = BDY(a)*BDY(b); @@ -139,6 +152,8 @@ void Pmul_minf(NODE arg,Real *rp) b = (Real)ARG1(arg); if ( !a || !b ) *rp = 0; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("mul_minf : invalid argument"); else { FPMINUSINF c = BDY(a)*BDY(b); @@ -159,6 +174,8 @@ void Pdiv_pinf(NODE arg,Real *rp) error("div_pinf : division by 0"); else if ( !a ) *rp = 0; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("div_pinf : invalid argument"); else { FPPLUSINF c = BDY(a)/BDY(b); @@ -176,9 +193,11 @@ void Pdiv_minf(NODE arg,Real *rp) a = (Real)ARG0(arg); b = (Real)ARG1(arg); if ( !b ) - error("div_pinf : division by 0"); + error("div_minf : division by 0"); else if ( !a ) *rp = 0; + else if ( NID(a) != N_R || NID(b) != N_R ) + error("div_minf : invalid argument"); else { FPMINUSINF c = BDY(a)/BDY(b);