[BACK]Return to p-itv.c CVS log [TXT][DIR] Up to [local] / OpenXM_contrib2 / asir2000 / engine

Diff for /OpenXM_contrib2/asir2000/engine/p-itv.c between version 1.1 and 1.7

version 1.1, 2000/12/22 10:03:28 version 1.7, 2009/03/27 14:42:29
Line 1 
Line 1 
 /*  /*
  * $OpenXM: $   * $OpenXM: OpenXM_contrib2/asir2000/engine/p-itv.c,v 1.6 2005/02/08 18:06:05 saito Exp $
 */  */
 #if defined(INTERVAL)  #if defined(INTERVAL)
 #include "ca.h"  #include "ca.h"
 #include "base.h"  #include "base.h"
 #if PARI  #if defined(PARI)
 #include "genpari.h"  #include "genpari.h"
 #endif  #endif
   
Line 50  void istoitv(Num inf, Num sup, Itv *rp)
Line 50  void istoitv(Num inf, Num sup, Itv *rp)
         } else {          } else {
                 i = inf;                  i = inf;
         }          }
         if ( type )          if ( type ) {
                 NEWItvF((ItvF)c);  //              NEWIntervalBigFloat((IntervalBigFloat)c);
         else                  c=MALLOC(sizeof(struct oIntervalBigFloat));
                   OID(c)=O_N;
                   NID(c)=N_IntervalBigFloat;
           } else
                 NEWItvP(c);                  NEWItvP(c);
   
         if ( compnum(0,i,s) >= 0 ) {          if ( compnum(0,i,s) >= 0 ) {
Line 82  void additvp(Itv a, Itv b, Itv *c)
Line 85  void additvp(Itv a, Itv b, Itv *c)
                 addnum(0,(Num)a,(Num)b,(Num *)c);                  addnum(0,(Num)a,(Num)b,(Num *)c);
         else if ( (NID(a) == N_IP) && (NID(b) == N_R )          else if ( (NID(a) == N_IP) && (NID(b) == N_R )
                 ||(NID(a) == N_R ) && (NID(b) == N_IP) )                  ||(NID(a) == N_R ) && (NID(b) == N_IP) )
                 additvd((Num)a,(Num)b,(ItvD *)c);                  additvd((Num)a,(Num)b,(IntervalDouble *)c);
         else {          else {
                 itvtois(a,&ai,&as);                  itvtois(a,&ai,&as);
                 itvtois(b,&bi,&bs);                  itvtois(b,&bi,&bs);
Line 105  void subitvp(Itv a, Itv b, Itv *c)
Line 108  void subitvp(Itv a, Itv b, Itv *c)
                 subnum(0,(Num)a,(Num)b,(Num *)c);                  subnum(0,(Num)a,(Num)b,(Num *)c);
         else if ( (NID(a) == N_IP) && (NID(b) == N_R )          else if ( (NID(a) == N_IP) && (NID(b) == N_R )
                 ||(NID(a) == N_R ) && (NID(b) == N_IP) )                  ||(NID(a) == N_R ) && (NID(b) == N_IP) )
                 subitvd((Num)a,(Num)b,(ItvD *)c);                  subitvd((Num)a,(Num)b,(IntervalDouble *)c);
         else {          else {
                 itvtois(a,&ai,&as);                  itvtois(a,&ai,&as);
                 itvtois(b,&bi,&bs);                  itvtois(b,&bi,&bs);
Line 126  void mulitvp(Itv a, Itv b, Itv *c)
Line 129  void mulitvp(Itv a, Itv b, Itv *c)
                 mulnum(0,(Num)a,(Num)b,(Num *)c);                  mulnum(0,(Num)a,(Num)b,(Num *)c);
         else if ( (NID(a) == N_IP) && (NID(b) == N_R )          else if ( (NID(a) == N_IP) && (NID(b) == N_R )
                 ||(NID(a) == N_R ) && (NID(b) == N_IP) )                  ||(NID(a) == N_R ) && (NID(b) == N_IP) )
                 mulitvd((Num)a,(Num)b,(ItvD *)c);                  mulitvd((Num)a,(Num)b,(IntervalDouble *)c);
         else {          else {
                 itvtois(a,&ai,&as);                  itvtois(a,&ai,&as);
                 itvtois(b,&bi,&bs);                  itvtois(b,&bi,&bs);
Line 208  void divitvp(Itv a, Itv b, Itv *c)
Line 211  void divitvp(Itv a, Itv b, Itv *c)
                 divnum(0,(Num)a,(Num)b,(Num *)c);                  divnum(0,(Num)a,(Num)b,(Num *)c);
         else if ( (NID(a) == N_IP) && (NID(b) == N_R )          else if ( (NID(a) == N_IP) && (NID(b) == N_R )
                 ||(NID(a) == N_R ) && (NID(b) == N_IP) )                  ||(NID(a) == N_R ) && (NID(b) == N_IP) )
                 divitvd((Num)a,(Num)b,(ItvD *)c);                  divitvd((Num)a,(Num)b,(IntervalDouble *)c);
         else {          else {
                 itvtois(a,&ai,&as);                  itvtois(a,&ai,&as);
                 itvtois(b,&bi,&bs);                  itvtois(b,&bi,&bs);
Line 259  void pwritvp(Itv a, Num e, Itv *c)
Line 262  void pwritvp(Itv a, Num e, Itv *c)
         else if ( NID(a) <= N_B )          else if ( NID(a) <= N_B )
                 pwrnum(0,(Num)a,(Num)e,(Num *)c);                  pwrnum(0,(Num)a,(Num)e,(Num *)c);
         else if ( !INT(e) ) {          else if ( !INT(e) ) {
 #if PARI && 0  #if defined(PARI) && 0
                 GEN pa,pe,z;                  gpui_ri((Obj)a,(Obj)c,(Obj *)c);
                 int ltop,lbot;  
   
                 ltop = avma; ritopa(a,&pa); ritopa(e,&pe); lbot = avma;  
                 z = gerepile(ltop,lbot,gpui(pa,pe,prec));  
                 patori(z,c); cgiv(z);  
 #else  #else
                 error("pwritv : can't calculate a fractional power");                  error("pwritv : can't calculate a fractional power");
 #endif  #endif
Line 339  int cmpitvp(Itv a, Itv b)
Line 337  int cmpitvp(Itv a, Itv b)
         int     s,t;          int     s,t;
   
         if ( !a ) {          if ( !a ) {
                 if ( !b || (NID(b)<=N_B) )                  if ( !b || (NID(b)<=N_B) ) {
                         return compnum(0,(Num)a,(Num)b);                          return compnum(0,(Num)a,(Num)b);
                 else                  } else {
                         return -1;                          itvtois(b,&bi,&bs);
                           if ( compnum(0,(Num)a,bs) > 0 ) return 1;
                           else if ( compnum(0,bi,(Num)a) > 0 ) return -1;
                           else  return 0;
                   }
         } else if ( !b ) {          } else if ( !b ) {
                 if ( !a || (NID(a)<=N_B) )                  if ( !a || (NID(a)<=N_B) ) {
                         return compnum(0,(Num)a,(Num)b);                          return compnum(0,(Num)a,(Num)b);
                 else                  } else {
                         return initvp((Num)b,a);                          itvtois(a,&ai,&as);
                           if ( compnum(0,ai,(Num)b) > 0 ) return 1;
                           else if ( compnum(0,(Num)b,as) > 0 ) return -1;
                           else  return 0;
                   }
         } else {          } else {
                 itvtois(a,&ai,&as);                  itvtois(a,&ai,&as);
                 itvtois(b,&bi,&bs);                  itvtois(b,&bi,&bs);
                 s = compnum(0,ai,bi) ;                  s = compnum(0,ai,bs) ;
                 t = compnum(0,as,bs) ;                  t = compnum(0,bi,as) ;
                 if ( !s && !t ) return 0;                  if ( s > 0 ) return 1;
                 else  return -1;                  else if ( t > 0 ) return -1;
                   else  return 0;
         }          }
 }  }
   
Line 362  void miditvp(Itv a, Num *b)
Line 369  void miditvp(Itv a, Num *b)
 {  {
         Num     ai,as;          Num     ai,as;
         Num     t;          Num     t;
         Q       TWO;  
   
         if ( ! a ) *b = 0;          if ( ! a ) *b = 0;
         else if ( (NID(a) <= N_B) )          else if ( (NID(a) <= N_B) )

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

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