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

Diff for /OpenXM_contrib2/asir2018/builtin/array.c between version 1.9 and 1.10

version 1.9, 2021/03/26 09:05:41 version 1.10, 2022/01/13 08:15:02
Line 45 
Line 45 
  * 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/asir2018/builtin/array.c,v 1.8 2020/10/06 06:31:19 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2018/builtin/array.c,v 1.9 2021/03/26 09:05:41 ohara Exp $
 */  */
 #include "ca.h"  #include "ca.h"
 #include "base.h"  #include "base.h"
Line 1250  void Pgeneric_gauss_elim_mod64(NODE arg,LIST *rp)
Line 1250  void Pgeneric_gauss_elim_mod64(NODE arg,LIST *rp)
   Z q;    Z q;
   mp_limb_t md;    mp_limb_t md;
   int i,j,k,l,row,col,t,rank;    int i,j,k,l,row,col,t,rank;
     Obj val;
     int asis = 0;
   
   asir_assert(ARG0(arg),O_MAT,"generic_gauss_elim_mod64");    asir_assert(ARG0(arg),O_MAT,"generic_gauss_elim_mod64");
   asir_assert(ARG1(arg),O_N,"generic_gauss_elim_mod64");    asir_assert(ARG1(arg),O_N,"generic_gauss_elim_mod64");
     if ( get_opt("asis",&val) && val ) asis = 1;
   m = (MAT)ARG0(arg); md = ZTOS((Z)ARG1(arg));    m = (MAT)ARG0(arg); md = ZTOS((Z)ARG1(arg));
   row = m->row; col = m->col; tmat = (Z **)m->body;    row = m->row; col = m->col; tmat = (Z **)m->body;
   wmat = (mp_limb_t **)almat64(row,col);    wmat = (mp_limb_t **)almat64(row,col);
Line 1265  void Pgeneric_gauss_elim_mod64(NODE arg,LIST *rp)
Line 1268  void Pgeneric_gauss_elim_mod64(NODE arg,LIST *rp)
     for ( j = 0; j < col; j++ )      for ( j = 0; j < col; j++ )
       wmat[i][j] = remqi64((Q)tmat[i][j],md);        wmat[i][j] = remqi64((Q)tmat[i][j],md);
   rank = generic_gauss_elim_mod64(wmat,row,col,md,colstat);    rank = generic_gauss_elim_mod64(wmat,row,col,md,colstat);
     if ( asis ) {
       MKMAT(mat,row,col);
       tmat = (Z **)mat->body;
       for ( i = 0; i < rank; i++ )
         for ( j = 0; j < col; j++ ) {
           UTOZ(wmat[i][j],tmat[i][j]);
         }
       *rp = (LIST)mat;
       return;
     }
   
   MKVECT(rnum,rank);    MKVECT(rnum,rank);
   rnb = (Z *)rnum->body;    rnb = (Z *)rnum->body;
Line 1307  void Pgeneric_gauss_elim_mod(NODE arg,LIST *rp)
Line 1320  void Pgeneric_gauss_elim_mod(NODE arg,LIST *rp)
   Z q;    Z q;
   long mdl;    long mdl;
   int md,i,j,k,l,row,col,t,rank;    int md,i,j,k,l,row,col,t,rank;
     Obj val;
     int asis = 0;
   
   asir_assert(ARG0(arg),O_MAT,"generic_gauss_elim_mod");    asir_assert(ARG0(arg),O_MAT,"generic_gauss_elim_mod");
   asir_assert(ARG1(arg),O_N,"generic_gauss_elim_mod");    asir_assert(ARG1(arg),O_N,"generic_gauss_elim_mod");
     if ( get_opt("asis",&val) && val ) asis = 1;
 #if SIZEOF_LONG==8  #if SIZEOF_LONG==8
   mdl = ZTOS((Z)ARG1(arg));    mdl = ZTOS((Z)ARG1(arg));
   if ( mdl >= ((mp_limb_t)1)<<32 ) {    if ( mdl >= ((mp_limb_t)1)<<32 ) {
Line 1330  void Pgeneric_gauss_elim_mod(NODE arg,LIST *rp)
Line 1346  void Pgeneric_gauss_elim_mod(NODE arg,LIST *rp)
     for ( j = 0; j < col; j++ )      for ( j = 0; j < col; j++ )
       wmat[i][j] = remqi((Q)tmat[i][j],md);        wmat[i][j] = remqi((Q)tmat[i][j],md);
   rank = generic_gauss_elim_mod(wmat,row,col,md,colstat);    rank = generic_gauss_elim_mod(wmat,row,col,md,colstat);
     if ( asis ) {
       MKMAT(mat,row,col);
       tmat = (Z **)mat->body;
       for ( i = 0; i < rank; i++ )
         for ( j = 0; j < col; j++ ) {
           UTOZ(wmat[i][j],tmat[i][j]);
         }
       *rp = (LIST)mat;
       return;
     }
   
   MKVECT(rnum,rank);    MKVECT(rnum,rank);
   rnb = (Z *)rnum->body;    rnb = (Z *)rnum->body;

Legend:
Removed from v.1.9  
changed lines
  Added in v.1.10

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