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

Diff for /OpenXM_contrib2/asir2000/engine/dist.c between version 1.43 and 1.46

version 1.43, 2007/09/17 12:47:45 version 1.46, 2013/11/05 02:55:03
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/asir2000/engine/dist.c,v 1.42 2006/08/27 22:17:27 noro Exp $   * $OpenXM: OpenXM_contrib2/asir2000/engine/dist.c,v 1.45 2012/12/17 07:20:44 noro Exp $
 */  */
 #include "ca.h"  #include "ca.h"
   
Line 524  NODE symb_mul_merge(NODE m1,DL dl,DP f,int n)
Line 524  NODE symb_mul_merge(NODE m1,DL dl,DP f,int n)
                                         if ( !cur ) {                                          if ( !cur ) {
                                                 MKDP(n,m,g);                                                  MKDP(n,m,g);
                                                 NEXT(prev) = mul_dllist(dl,g);                                                  NEXT(prev) = mul_dllist(dl,g);
                                                 return;                                                  return top;
                                         }                                          }
                                         m = NEXT(m);                                          m = NEXT(m);
                                         if ( m ) _adddl(n,m->dl,dl,t);                                          if ( m ) _adddl(n,m->dl,dl,t);
Line 534  NODE symb_mul_merge(NODE m1,DL dl,DP f,int n)
Line 534  NODE symb_mul_merge(NODE m1,DL dl,DP f,int n)
                                         if ( !cur ) {                                          if ( !cur ) {
                                                 MKDP(n,m,g);                                                  MKDP(n,m,g);
                                                 NEXT(prev) = mul_dllist(dl,g);                                                  NEXT(prev) = mul_dllist(dl,g);
                                                 return;                                                  return top;
                                         }                                          }
                                         break;                                          break;
                                 case -1:                                  case -1:
Line 657  void comm_muld(VL vl,DP p1,DP p2,DP *pr)
Line 657  void comm_muld(VL vl,DP p1,DP p2,DP *pr)
                         l = l1;                          l = l1;
                 }                  }
                 if ( l > wlen ) {                  if ( l > wlen ) {
                         if ( w ) GC_free(w);                          if ( w ) GCFREE(w);
                         w = (MP *)MALLOC(l*sizeof(MP));                          w = (MP *)MALLOC(l*sizeof(MP));
                         wlen = l;                          wlen = l;
                 }                  }
Line 695  void comm_muld_trunc(VL vl,DP p1,DP p2,DL dl,DP *pr)
Line 695  void comm_muld_trunc(VL vl,DP p1,DP p2,DL dl,DP *pr)
                         l = l1;                          l = l1;
                 }                  }
                 if ( l > wlen ) {                  if ( l > wlen ) {
                         if ( w ) GC_free(w);                          if ( w ) GCFREE(w);
                         w = (MP *)MALLOC(l*sizeof(MP));                          w = (MP *)MALLOC(l*sizeof(MP));
                         wlen = l;                          wlen = l;
                 }                  }
Line 829  void weyl_muld(VL vl,DP p1,DP p2,DP *pr)
Line 829  void weyl_muld(VL vl,DP p1,DP p2,DP *pr)
         else {          else {
                 for ( m = BDY(p1), l = 0; m; m = NEXT(m), l++ );                  for ( m = BDY(p1), l = 0; m; m = NEXT(m), l++ );
                 if ( l > wlen ) {                  if ( l > wlen ) {
                         if ( w ) GC_free(w);                          if ( w ) GCFREE(w);
                         w = (MP *)MALLOC(l*sizeof(MP));                          w = (MP *)MALLOC(l*sizeof(MP));
                         wlen = l;                          wlen = l;
                 }                  }
Line 861  void weyl_muldm(VL vl,MP m0,DP p,DP *pr)
Line 861  void weyl_muldm(VL vl,MP m0,DP p,DP *pr)
         else {          else {
                 for ( m = BDY(p), l = 0; m; m = NEXT(m), l++ );                  for ( m = BDY(p), l = 0; m; m = NEXT(m), l++ );
                 if ( l > wlen ) {                  if ( l > wlen ) {
                         if ( w ) GC_free(w);                          if ( w ) GCFREE(w);
                         w = (MP *)MALLOC(l*sizeof(MP));                          w = (MP *)MALLOC(l*sizeof(MP));
                         wlen = l;                          wlen = l;
                 }                  }
Line 873  void weyl_muldm(VL vl,MP m0,DP p,DP *pr)
Line 873  void weyl_muldm(VL vl,MP m0,DP p,DP *pr)
                 for ( i = 0, tlen = 1; i < n2; i++ )                  for ( i = 0, tlen = 1; i < n2; i++ )
                         tlen *= d0->d[n2+i]+1;                          tlen *= d0->d[n2+i]+1;
                 if ( tlen > rtlen ) {                  if ( tlen > rtlen ) {
                         if ( tab ) GC_free(tab);                          if ( tab ) GCFREE(tab);
                         if ( psum ) GC_free(psum);                          if ( psum ) GCFREE(psum);
                         rtlen = tlen;                          rtlen = tlen;
                         tab = (struct cdl *)MALLOC(rtlen*sizeof(struct cdl));                          tab = (struct cdl *)MALLOC(rtlen*sizeof(struct cdl));
                         psum = (MP *)MALLOC(rtlen*sizeof(MP));                          psum = (MP *)MALLOC(rtlen*sizeof(MP));
Line 936  void weyl_mulmm(VL vl,MP m0,MP m1,int n,struct cdl *rt
Line 936  void weyl_mulmm(VL vl,MP m0,MP m1,int n,struct cdl *rt
         rtab[0].d = d;          rtab[0].d = d;
   
         if ( rtablen > tmptablen ) {          if ( rtablen > tmptablen ) {
                 if ( tmptab ) GC_free(tmptab);                  if ( tmptab ) GCFREE(tmptab);
                 tmptab = (struct cdl *)MALLOC(rtablen*sizeof(struct cdl));                  tmptab = (struct cdl *)MALLOC(rtablen*sizeof(struct cdl));
                 tmptablen = rtablen;                  tmptablen = rtablen;
         }          }
Line 962  void weyl_mulmm(VL vl,MP m0,MP m1,int n,struct cdl *rt
Line 962  void weyl_mulmm(VL vl,MP m0,MP m1,int n,struct cdl *rt
                         continue;                          continue;
                 }                  }
                 if ( k+1 > tablen ) {                  if ( k+1 > tablen ) {
                         if ( tab ) GC_free(tab);                          if ( tab ) GCFREE(tab);
                         if ( ctab ) GC_free(ctab);                          if ( ctab ) GCFREE(ctab);
                         tablen = k+1;                          tablen = k+1;
                         tab = (struct cdl *)MALLOC(tablen*sizeof(struct cdl));                          tab = (struct cdl *)MALLOC(tablen*sizeof(struct cdl));
                         ctab = (Q *)MALLOC(tablen*sizeof(Q));                          ctab = (Q *)MALLOC(tablen*sizeof(Q));
Line 1104  void adddl(int n,DL d1,DL d2,DL *dr)
Line 1104  void adddl(int n,DL d1,DL d2,DL *dr)
         DL dt;          DL dt;
         int i;          int i;
   
         if ( !d1->td )          *dr = dt = (DL)MALLOC_ATOMIC((n+1)*sizeof(int));
                 *dr = d2;          dt->td = d1->td + d2->td;
         else if ( !d2->td )          for ( i = 0; i < n; i++ )
                 *dr = d1;                  dt->d[i] = d1->d[i]+d2->d[i];
         else {  
                 *dr = dt = (DL)MALLOC_ATOMIC((n+1)*sizeof(int));  
                 dt->td = d1->td + d2->td;  
                 for ( i = 0; i < n; i++ )  
                         dt->d[i] = d1->d[i]+d2->d[i];  
         }  
 }  }
   
 /* d1 += d2 */  /* d1 += d2 */

Legend:
Removed from v.1.43  
changed lines
  Added in v.1.46

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