[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.14 and 1.18

version 1.14, 2015/08/04 10:19:31 version 1.18, 2015/08/13 00:13:03
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.13 2015/08/04 06:20:45 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/io/cio.c,v 1.17 2015/08/12 10:45:12 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "parse.h"  #include "parse.h"
 #include "ox.h"  #include "ox.h"
 #if !defined(VISUAL)  #if !defined(VISUAL) && !defined(__MINGW32__) && !defined(__MINGW64__)
 #include <ctype.h>  #include <ctype.h>
 #endif  #endif
   
Line 147  void write_cmo(FILE *s,Obj obj)
Line 147  void write_cmo(FILE *s,Obj obj)
       fnodetotree(BDY((QUOTE)obj),&l);        fnodetotree(BDY((QUOTE)obj),&l);
       write_cmo_tree(s,l);        write_cmo_tree(s,l);
       break;        break;
       case O_MAT:
         write_cmo_matrix_as_list(s,(MAT)obj);
         break;
     default:      default:
       sprintf(errmsg, "write_cmo : id=%d not implemented.",OID(obj));        sprintf(errmsg, "write_cmo : id=%d not implemented.",OID(obj));
       error(errmsg);        error(errmsg);
Line 247  void write_cmo_bf(FILE *s,BF bf)
Line 250  void write_cmo_bf(FILE *s,BF bf)
   
   r = CMO_BIGFLOAT; write_int(s,&r);    r = CMO_BIGFLOAT; write_int(s,&r);
   write_int(s,&MPFR_SIGN(bf->body));    write_int(s,&MPFR_SIGN(bf->body));
   write_int(s,&MPFR_PREC(bf->body));    write_int(s,(unsigned int *)&MPFR_PREC(bf->body));
   exp = MPFR_EXP(bf->body);    exp = MPFR_EXP(bf->body);
   write_int64(s,&exp);    write_int64(s,&exp);
   len = MPFR_LIMB_SIZE(bf->body);    len = MPFR_LIMB_SIZE(bf->body);
Line 255  void write_cmo_bf(FILE *s,BF bf)
Line 258  void write_cmo_bf(FILE *s,BF bf)
   write_int(s,&len);    write_int(s,&len);
   write_intarray(s,MPFR_MANT(bf->body),len);    write_intarray(s,MPFR_MANT(bf->body),len);
 #else /* SIZEOF_LONG == 8 */  #else /* SIZEOF_LONG == 8 */
   t = 2*len;    t = (MPFR_PREC(bf->body)+31)/32;
   write_int(s,&t);    write_int(s,&t);
   ptr = (UL *)MPFR_MANT(bf->body);    write_longarray(s,MPFR_MANT(bf->body),t);
   for ( i = 0; i < len; i++ ) {  
         u = ptr[i]>>32;  
         l = ptr[i]&0xffffffff;  
     write_int(s,&u);  
     write_int(s,&l);  
   }  
 #endif  #endif
 }  }
   
Line 460  void write_cmo_tree(FILE *s,LIST l)
Line 457  void write_cmo_tree(FILE *s,LIST l)
   }    }
 }  }
   
   void write_cmo_matrix_as_list(FILE *s,MAT a)
   {
     int i,j,r,row,col;
   
     /* CMO_LIST row (CMO_LIST col a[0][0] ... a[0][col-1]) ... (CMO_LIST col a[row-1][0] ... a[row-1][col-1] */
     row = a->row; col = a->col;
     r = CMO_LIST;
     write_int(s,&r);
     write_int(s,&row);
     for ( i = 0; i < row; i++ ) {
       write_int(s,&r);
       write_int(s,&col);
       for ( j = 0; j < col; j++ )
         write_cmo(s,a->body[i][j]);
     }
   }
   
 void read_cmo(FILE *s,Obj *rp)  void read_cmo(FILE *s,Obj *rp)
 {  {
   int id;    int id;
Line 640  void read_cmo_bf(FILE *s,BF *bf)
Line 654  void read_cmo_bf(FILE *s,BF *bf)
 #if SIZEOF_LONG == 4  #if SIZEOF_LONG == 4
   read_intarray(s,MPFR_MANT(r->body),len);    read_intarray(s,MPFR_MANT(r->body),len);
 #else /* SIZEOF_LONG == 8 */  #else /* SIZEOF_LONG == 8 */
   len >>= 1;    read_longarray(s,MPFR_MANT(r->body),len);
   ptr = (UL *)MPFR_MANT(r->body);  
   for ( i = 0; i < len; i++ ) {  
     read_int(s,&u);  
     read_int(s,&l);  
     ptr[i] = ((UL)u)<<32|((UL)l)&0xffffffff;  
   }  
 #endif  #endif
   *bf = r;    *bf = r;
 }  }

Legend:
Removed from v.1.14  
changed lines
  Added in v.1.18

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