[BACK]Return to round.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / builtin

Diff for /OpenXM_contrib2/asir2000/builtin/round.c between version 1.6 and 1.7

version 1.6, 2007/01/30 00:38:25 version 1.7, 2018/03/29 01:32:50
Line 1 
Line 1 
 /* $OpenXM$ */  /* $OpenXM: OpenXM_contrib2/asir2000/builtin/round.c,v 1.6 2007/01/30 00:38:25 noro Exp $ */
   
 #undef INTERVAL  #undef INTERVAL
 #define INTERVAL  #define INTERVAL
Line 12  void Pmul_pinf(),Pmul_minf();
Line 12  void Pmul_pinf(),Pmul_minf();
 void Pdiv_pinf(),Pdiv_minf();  void Pdiv_pinf(),Pdiv_minf();
   
 struct ftab round_tab[] = {  struct ftab round_tab[] = {
         {"add_pinf",Padd_pinf,2},    {"add_pinf",Padd_pinf,2},
         {"add_minf",Padd_minf,2},    {"add_minf",Padd_minf,2},
         {"sub_pinf",Psub_pinf,2},    {"sub_pinf",Psub_pinf,2},
         {"sub_minf",Psub_minf,2},    {"sub_minf",Psub_minf,2},
         {"mul_pinf",Pmul_pinf,2},    {"mul_pinf",Pmul_pinf,2},
         {"mul_minf",Pmul_minf,2},    {"mul_minf",Pmul_minf,2},
         {"div_pinf",Pdiv_pinf,2},    {"div_pinf",Pdiv_pinf,2},
         {"div_minf",Pdiv_minf,2},    {"div_minf",Pdiv_minf,2},
         {0,0,0},    {0,0,0},
 };  };
   
 void Padd_pinf(NODE arg,Real *rp)  void Padd_pinf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !a )    if ( !a )
                 *rp = b;      *rp = b;
         else if ( !b )    else if ( !b )
                 *rp = a;      *rp = a;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("add_pinf : invalid argument");      error("add_pinf : invalid argument");
         else {    else {
                 FPPLUSINF      FPPLUSINF
                 c = BDY(a)+BDY(b);      c = BDY(a)+BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Padd_minf(NODE arg,Real *rp)  void Padd_minf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !a )    if ( !a )
                 *rp = b;      *rp = b;
         else if ( !b )    else if ( !b )
                 *rp = a;      *rp = a;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("add_pinf : invalid argument");      error("add_pinf : invalid argument");
         else {    else {
                 FPMINUSINF      FPMINUSINF
                 c = BDY(a)+BDY(b);      c = BDY(a)+BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Psub_pinf(NODE arg,Real *rp)  void Psub_pinf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !a ) {    if ( !a ) {
                 if ( !b )      if ( !b )
                         *rp = 0;        *rp = 0;
                 else {      else {
                         c = -BDY(b);        c = -BDY(b);
                         MKReal(c,r);        MKReal(c,r);
                         *rp = r;        *rp = r;
                 }      }
         } else if ( !b )    } else if ( !b )
                 *rp = a;      *rp = a;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("sub_pinf : invalid argument");      error("sub_pinf : invalid argument");
         else {    else {
                 FPPLUSINF      FPPLUSINF
                 c = BDY(a)-BDY(b);      c = BDY(a)-BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Psub_minf(NODE arg,Real *rp)  void Psub_minf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !a ) {    if ( !a ) {
                 if ( !b )      if ( !b )
                         *rp = 0;        *rp = 0;
                 else {      else {
                         c = -BDY(b);        c = -BDY(b);
                         MKReal(c,r);        MKReal(c,r);
                         *rp = r;        *rp = r;
                 }      }
         } else if ( !b )    } else if ( !b )
                 *rp = a;      *rp = a;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("sub_minf : invalid argument");      error("sub_minf : invalid argument");
         else {    else {
                 FPMINUSINF      FPMINUSINF
                 c = BDY(a)-BDY(b);      c = BDY(a)-BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Pmul_pinf(NODE arg,Real *rp)  void Pmul_pinf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !a || !b )    if ( !a || !b )
                 *rp = 0;      *rp = 0;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("mul_pinf : invalid argument");      error("mul_pinf : invalid argument");
         else {    else {
                 FPPLUSINF      FPPLUSINF
                 c = BDY(a)*BDY(b);      c = BDY(a)*BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Pmul_minf(NODE arg,Real *rp)  void Pmul_minf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !a || !b )    if ( !a || !b )
                 *rp = 0;      *rp = 0;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("mul_minf : invalid argument");      error("mul_minf : invalid argument");
         else {    else {
                 FPMINUSINF      FPMINUSINF
                 c = BDY(a)*BDY(b);      c = BDY(a)*BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Pdiv_pinf(NODE arg,Real *rp)  void Pdiv_pinf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !b )    if ( !b )
                 error("div_pinf : division by 0");      error("div_pinf : division by 0");
         else if ( !a )    else if ( !a )
                 *rp = 0;      *rp = 0;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("div_pinf : invalid argument");      error("div_pinf : invalid argument");
         else {    else {
                 FPPLUSINF      FPPLUSINF
                 c = BDY(a)/BDY(b);      c = BDY(a)/BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }
   
 void Pdiv_minf(NODE arg,Real *rp)  void Pdiv_minf(NODE arg,Real *rp)
 {  {
         Real a,b,r;    Real a,b,r;
         double c;    double c;
   
         a = (Real)ARG0(arg);    a = (Real)ARG0(arg);
         b = (Real)ARG1(arg);    b = (Real)ARG1(arg);
         if ( !b )    if ( !b )
                 error("div_minf : division by 0");      error("div_minf : division by 0");
         else if ( !a )    else if ( !a )
                 *rp = 0;      *rp = 0;
         else if ( NID(a) != N_R || NID(b) != N_R )    else if ( NID(a) != N_R || NID(b) != N_R )
                 error("div_minf : invalid argument");      error("div_minf : invalid argument");
         else {    else {
                 FPMINUSINF      FPMINUSINF
                 c = BDY(a)/BDY(b);      c = BDY(a)/BDY(b);
                 FPNEAREST      FPNEAREST
                 MKReal(c,r);      MKReal(c,r);
                 *rp = r;      *rp = r;
         }    }
 }  }

Legend:
Removed from v.1.6  
changed lines
  Added in v.1.7

FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>