Ignore:
Timestamp:
Nov 13, 2018, 1:15:30 PM (5 years ago)
Author:
Hans Schoenemann <hannes@…>
Branches:
(u'spielwiese', '2a584933abf2a2d3082034c7586d38bb6de1a30a')
Children:
21627ce8138b555fd3149fbe3683998b56b92633
Parents:
c6363181cd15d8f5d14b9a1cd20f08907c4c13b6
Message:
moved freeAlgebra construction to kernel (libpolys/polys/shiftop)
File:
1 edited

Legend:

Unmodified
Added
Removed
  • Singular/dyn_modules/freegb/freegb.cc

    rc636318 r4819c4  
    2020      return TRUE;
    2121    }
    22     ring R=rCopy0(r);
    23     int p;
    24     if((r->order[0]==ringorder_C)
    25     ||(r->order[0]==ringorder_c))
    26       p=1;
    27     else
    28       p=0;
    29     // create R->N
    30     R->N=r->N*d;
    31     R->isLPring=r->N;
    32     R->block1[p]=R->N; /* only dp,Dp,wp,Wp; will be discarded for lp*/
    33     // create R->order
    34     switch(r->order[p])
    35     {
    36       case ringorder_dp:
    37       case ringorder_Dp:
    38         break;
    39       case ringorder_wp:
    40       case ringorder_Wp:
    41       {
    42         omFree(R->wvhdl[p]);
    43         int *w=(int*)omAlloc(R->N*sizeof(int));
    44         for(int b=1;b<d;b++)
    45         {
    46           for(int i=r->N-1;i>=0;i--)
    47             w[b*r->N+i]=r->wvhdl[p][i];
    48         }
    49         R->wvhdl[p]=w;
    50         break;
    51       }
    52       case ringorder_lp:
    53       case ringorder_rp:
    54       {
    55         int ** wvhdl=(int**)omAlloc0((r->N+2)*sizeof(int*));
    56         rRingOrder_t* ord=(rRingOrder_t*)omAlloc0((r->N+2)*sizeof(rRingOrder_t));
    57         int* blk0=(int*)omAlloc0((r->N+2)*sizeof(int));
    58         int* blk1=(int*)omAlloc0((r->N+2)*sizeof(int));
    59         omFree(R->wvhdl);  R->wvhdl=wvhdl;
    60         omFree(R->order);  R->order=ord;
    61         omFree(R->block0); R->block0=blk0;
    62         omFree(R->block1); R->block1=blk1;
    63         for(int i=0;i<r->N;i++)
    64         {
    65           ord[i+p]=ringorder_a;
    66           blk0[i+p]=1;
    67           blk1[i+p]=R->N;
    68           wvhdl[i+p]=(int*)omAlloc0(R->N*sizeof(int));
    69           for(int j=0;j<d;j++)
    70           {
    71             assume(j*r->N+i<R->N);
    72             if (r->order[p]==ringorder_lp)
    73               wvhdl[i+p][j*r->N+i]=1;
    74             else
    75               wvhdl[i+p][(j+1)*r->N-i-1]=1;
    76           }
    77         }
    78         ord[r->N+p]=r->order[p]; /* lp or rp */
    79         blk0[r->N+p]=1;
    80         blk1[r->N+p]=R->N;
    81         // copy component order
    82         if (p==1) ord[0]=r->order[0];
    83         else /*p==0*/ ord[r->N+1]=r->order[1];
    84         break;
    85       }
    86       default: WerrorS("ordering not implemented for LP-rings");
    87         return TRUE;
    88     }
    89     // create R->names
    90     char **names=(char**)omAlloc(R->N*sizeof(char_ptr));
    91     for(int b=0;b<d;b++)
    92     {
    93       for(int i=r->N-1;i>=0;i--)
    94         names[b*r->N+i]=omStrDup(r->names[i]);
    95     }
    96     for(int i=r->N-1;i>=0;i--) omFree(R->names[i]);
    97     omFree(R->names);
    98     R->names=names;
    99 
    100     rComplete(R,TRUE);
     22    ring R=freeAlgebra(r,d);
    10123    res->rtyp=RING_CMD;
    10224    res->data=R;
    103     return FALSE;
     25    return R==NULL;
    10426  }
    10527  return TRUE;
Note: See TracChangeset for help on using the changeset viewer.