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

Diff for /OpenXM_contrib2/asir2000/io/cio.c between version 1.12 and 1.13

version 1.12, 2003/04/08 22:29:00 version 1.13, 2015/08/04 06:20:45
Line 44 
Line 44 
  * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY   * OF THE SOFTWARE HAS BEEN DEVELOPED BY A THIRD PARTY, THE THIRD PARTY
  * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,   * DEVELOPER SHALL HAVE NO LIABILITY IN CONNECTION WITH THE USE,
  * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.   * PERFORMANCE OR NON-PERFORMANCE OF THE SOFTWARE.
  * $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.11 2001/10/09 01:36:20 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.12 2003/04/08 22:29:00 ohara Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
Line 58 
Line 58 
 int valid_as_cmo(Obj obj)  int valid_as_cmo(Obj obj)
 {  {
         NODE m;          NODE m;
     int nid;
   
         if ( !obj )          if ( !obj )
                 return 1;                  return 1;
Line 66  int valid_as_cmo(Obj obj)
Line 67  int valid_as_cmo(Obj obj)
                 case O_ERR: case O_USINT: case O_BYTEARRAY: case O_VOID:                  case O_ERR: case O_USINT: case O_BYTEARRAY: case O_VOID:
                         return 1;                          return 1;
                 case O_N:                  case O_N:
                         if ( NID((Num)obj) == N_Q || NID((Num)obj) == N_R )        nid = NID((Num)obj);
                           if ( nid == N_Q || nid == N_R || nid == N_B )
                                 return 1;                                  return 1;
                         else                          else
                                 return 0;                                  return 0;
Line 101  void write_cmo(FILE *s,Obj obj)
Line 103  void write_cmo(FILE *s,Obj obj)
                                 case N_R:                                  case N_R:
                                         write_cmo_real(s,(Real)obj);                                          write_cmo_real(s,(Real)obj);
                                         break;                                          break;
           case N_B:
                                           write_cmo_bf(s,(BF)obj);
                                           break;
                                 default:                                  default:
                                         sprintf(errmsg, "write_cmo : number id=%d not implemented.",                                          sprintf(errmsg, "write_cmo : number id=%d not implemented.",
                                                 NID((Num)obj));                                                  NID((Num)obj));
Line 164  int cmo_tag(Obj obj,int *tag)
Line 169  int cmo_tag(Obj obj,int *tag)
                                         *tag = DN((Q)obj) ? CMO_QQ : CMO_ZZ; break;                                          *tag = DN((Q)obj) ? CMO_QQ : CMO_ZZ; break;
                                 case N_R:                                  case N_R:
                                         *tag = CMO_IEEE_DOUBLE_FLOAT; break;                                          *tag = CMO_IEEE_DOUBLE_FLOAT; break;
           case N_B:
                                           *tag = CMO_BIGFLOAT; break;
                                 default:                                  default:
                                         return 0;                                          return 0;
                         }                          }
Line 231  void write_cmo_real(FILE *s,Real real)
Line 238  void write_cmo_real(FILE *s,Real real)
         dbl = real->body; write_double(s,&dbl);          dbl = real->body; write_double(s,&dbl);
 }  }
   
   void write_cmo_bf(FILE *s,BF bf)
   {
           unsigned int r;
     int len,t;
     L exp;
   
           r = CMO_BIGFLOAT; write_int(s,&r);
     write_int(s,&MPFR_SIGN(bf->body));
     write_int(s,&MPFR_PREC(bf->body));
     exp = MPFR_EXP(bf->body);
     write_int64(s,&exp);
           len = MPFR_LIMB_SIZE(bf->body);
     write_int(s,&len);
   #if SIZEOF_LONG == 4
           write_intarray(s,MPFR_MANT(bf->body),len);
   #else /* SIZEOF_LONG == 8 */
           t = 2*len;
           write_int(s,&t);
           write_longarray(s,MPFR_MANT(bf->body),len);
   #endif
   }
   
 void write_cmo_zz(FILE *s,int sgn,N n)  void write_cmo_zz(FILE *s,int sgn,N n)
 {  {
         int l,bytes;          int l,bytes;
Line 438  void read_cmo(FILE *s,Obj *rp)
Line 467  void read_cmo(FILE *s,Obj *rp)
         DP dp;          DP dp;
         Obj obj;          Obj obj;
         ERR e;          ERR e;
     BF bf;
         MATHCAP mc;          MATHCAP mc;
         BYTEARRAY array;          BYTEARRAY array;
         LIST list;          LIST list;
Line 486  void read_cmo(FILE *s,Obj *rp)
Line 516  void read_cmo(FILE *s,Obj *rp)
                 case CMO_IEEE_DOUBLE_FLOAT:                  case CMO_IEEE_DOUBLE_FLOAT:
                         read_double(s,&dbl); MKReal(dbl,real); *rp = (Obj)real;                          read_double(s,&dbl); MKReal(dbl,real); *rp = (Obj)real;
                         break;                          break;
                   case CMO_BIGFLOAT:
                           read_cmo_bf(s,&bf); *rp = (Obj)bf;
                           break;
                 case CMO_DISTRIBUTED_POLYNOMIAL:                  case CMO_DISTRIBUTED_POLYNOMIAL:
                         read_cmo_dp(s,&dp); *rp = (Obj)dp;                          read_cmo_dp(s,&dp); *rp = (Obj)dp;
                         break;                          break;
Line 579  void read_cmo_zz(FILE *s,int *sgn,N *rp)
Line 612  void read_cmo_zz(FILE *s,int *sgn,N *rp)
                 b[i] = h;                  b[i] = h;
         }          }
 #endif  #endif
   }
   
   void read_cmo_bf(FILE *s,BF *bf)
   {
           BF r;
     int sgn,prec,len;
     L exp;
   
     NEWBF(r);
     read_int(s,&sgn);
     read_int(s,&prec);
     read_int64(s,&exp);
     read_int(s,&len);
     mpfr_init2(r->body,prec);
     MPFR_SIGN(r->body) = sgn;
     MPFR_EXP(r->body) = exp;
   #if SIZEOF_LONG == 4
           read_intarray(s,MPFR_MANT(r->body),len);
   #else /* SIZEOF_LONG == 8 */
           read_longarray(s,MPFR_MANT(r->body),len>>1);
   #endif
     *bf = r;
 }  }
   
 void read_cmo_list(FILE *s,Obj *rp)  void read_cmo_list(FILE *s,Obj *rp)

Legend:
Removed from v.1.12  
changed lines
  Added in v.1.13

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