=================================================================== RCS file: /home/cvs/OpenXM_contrib2/asir2000/engine/p-itv.c,v retrieving revision 1.3 retrieving revision 1.6 diff -u -p -r1.3 -r1.6 --- OpenXM_contrib2/asir2000/engine/p-itv.c 2003/02/14 22:29:09 1.3 +++ OpenXM_contrib2/asir2000/engine/p-itv.c 2005/02/08 18:06:05 1.6 @@ -1,5 +1,5 @@ /* - * $OpenXM: OpenXM_contrib2/asir2000/engine/p-itv.c,v 1.2 2002/01/08 04:14:37 kondoh Exp $ + * $OpenXM: OpenXM_contrib2/asir2000/engine/p-itv.c,v 1.5 2003/10/20 07:18:42 saito Exp $ */ #if defined(INTERVAL) #include "ca.h" @@ -50,9 +50,12 @@ void istoitv(Num inf, Num sup, Itv *rp) } else { i = inf; } - if ( type ) - NEWIntervalBigFloat((IntervalBigFloat)c); - else + if ( type ) { +// NEWIntervalBigFloat((IntervalBigFloat)c); + c=MALLOC(sizeof(struct oIntervalBigFloat)); + OID(c)=O_N; + NID(c)=N_IntervalBigFloat; + } else NEWItvP(c); if ( compnum(0,i,s) >= 0 ) { @@ -339,15 +342,23 @@ int cmpitvp(Itv a, Itv b) int s,t; if ( !a ) { - if ( !b || (NID(b)<=N_B) ) + if ( !b || (NID(b)<=N_B) ) { return compnum(0,(Num)a,(Num)b); - else - return -1; + } else { + 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 ) { - if ( !a || (NID(a)<=N_B) ) + if ( !a || (NID(a)<=N_B) ) { return compnum(0,(Num)a,(Num)b); - else - return initvp((Num)b,a); + } else { + 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 { itvtois(a,&ai,&as); itvtois(b,&bi,&bs); @@ -363,7 +374,6 @@ void miditvp(Itv a, Num *b) { Num ai,as; Num t; - Q TWO; if ( ! a ) *b = 0; else if ( (NID(a) <= N_B) )