Changeset 09da99 in git for ntl/src/GF2XVec.c


Ignore:
Timestamp:
Nov 3, 2003, 6:33:49 PM (21 years ago)
Author:
Hans Schönemann <hannes@…>
Branches:
(u'fieker-DuVal', '117eb8c30fc9e991c4decca4832b1d19036c4c65')(u'spielwiese', 'c5facdfddea2addfd91babd8b9019161dea4b695')
Children:
70fea801cbe08a22d1b0e9d8d1d410144e0e91f6
Parents:
be2bb37dcbd03b120f14559d378b21b104d907c4
Message:
*hannes: NTL- 5.3.1


git-svn-id: file:///usr/local/Singular/svn/trunk@6910 2c84dea3-7e68-4137-9b89-c4e89433aadc
File:
1 edited

Legend:

Unmodified
Added
Removed
  • ntl/src/GF2XVec.c

    rbe2bb3 r09da99  
    66NTL_START_IMPL
    77
    8 const long MaxAllocBlock = 10000;
    9 
    108
    119void GF2XVec::SetSize(long n, long d)
    1210{
    1311   if (n < 0 || d <= 0) Error("bad args to GF2XVec::SetSize()");
     12
    1413   if (v)
    15       Error("GF2XVec initialized more than once");
     14      Error("illegal GF2XVec initialization");
    1615
    17    if (d >= (1L << (NTL_BITS_PER_LONG-4))/NTL_BITS_PER_LONG)
    18       Error("size too big in GF2XVec::SetSize");
    19 
    20    if (n >= long((1L << (NTL_BITS_PER_LONG-4))/sizeof(GF2X)))
    21       Error("length too big in GF2XVec::SetSize");
     16   len = n;
     17   bsize = d;
    2218
    2319   if (n == 0) return;
    2420
    25    long size = (d+2);
    26    long AllocAmt = MaxAllocBlock / size;
    27    if (AllocAmt == 0) AllocAmt = 1;
    28 
    29    v = (GF2X*) malloc(n * (sizeof (GF2X)));
     21   v = (GF2X*) NTL_MALLOC(n, sizeof(GF2X), 0);
    3022   if (!v) Error("out of memory in GF2XVec::SetSize()");
    3123
    3224   long i = 0;
    3325   long m;
    34    _ntl_ulong *p, *q;
    3526   long j;
    3627
    3728   while (i < n) {
    38       m = min((n-i), AllocAmt);
    39       p = (_ntl_ulong *) malloc(m*size*(sizeof (_ntl_ulong)));
    40       if (!p) Error("out of memory in GF2XVec::SetSize()");
    41       for (j = 0, q = p+2; j < m; j++, i++, q += size) {
    42          q[-2] = (d << 1) | 1;
    43          q[-1] = 0;
    44          v[i].xrep.rep = q;
    45       }
     29      m = WV_BlockConstructAlloc(v[i].xrep, d, n-i);
     30      for (j = 1; j < m; j++)
     31         WV_BlockConstructSet(v[i].xrep, v[i+j].xrep, j);
     32      i += m;
    4633   }
     34}
    4735
    48    len = n;
    49    bsize = d;
    50 }
    5136
    5237void GF2XVec::kill()
    5338{
    5439   long n = len;
    55    long d = bsize;
     40
     41   len = 0; bsize = 0;
     42
    5643   if (n == 0) return;
    57 
    58    long size = (d+2);
    59    long AllocAmt = MaxAllocBlock / size;
    60    if (AllocAmt == 0) AllocAmt = 1;
    6144
    6245   long i = 0;
     
    6447
    6548   while (i < n) {
    66       m = min((n-i), AllocAmt);
    67       free(v[i].xrep.rep-2);
     49      m = WV_BlockDestroy(v[i].xrep);
    6850      i += m;
    6951   }
    7052
    7153   free(v);
    72 
    73    v = 0; len = 0; bsize = 0;
     54   v = 0;
    7455}
    7556
Note: See TracChangeset for help on using the changeset viewer.