fieker-DuValspielwiese
Last change
on this file since 287cc8 was
287cc8,
checked in by Hans Schönemann <hannes@…>, 14 years ago
|
ntl 5.5.2
git-svn-id: file:///usr/local/Singular/svn/trunk@12402 2c84dea3-7e68-4137-9b89-c4e89433aadc
|
-
Property mode set to
100644
|
File size:
1.4 KB
|
Rev | Line | |
---|
[2cfffe] | 1 | |
---|
| 2 | #include <NTL/GF2XVec.h> |
---|
| 3 | |
---|
| 4 | #include <NTL/new.h> |
---|
| 5 | |
---|
| 6 | NTL_START_IMPL |
---|
| 7 | |
---|
| 8 | |
---|
| 9 | void GF2XVec::SetSize(long n, long d) |
---|
| 10 | { |
---|
| 11 | if (n < 0 || d <= 0) Error("bad args to GF2XVec::SetSize()"); |
---|
| 12 | |
---|
[09da99] | 13 | if (v) |
---|
| 14 | Error("illegal GF2XVec initialization"); |
---|
[2cfffe] | 15 | |
---|
[09da99] | 16 | len = n; |
---|
| 17 | bsize = d; |
---|
[2cfffe] | 18 | |
---|
| 19 | if (n == 0) return; |
---|
| 20 | |
---|
[09da99] | 21 | v = (GF2X*) NTL_MALLOC(n, sizeof(GF2X), 0); |
---|
[2cfffe] | 22 | if (!v) Error("out of memory in GF2XVec::SetSize()"); |
---|
| 23 | |
---|
| 24 | long i = 0; |
---|
| 25 | long m; |
---|
| 26 | long j; |
---|
| 27 | |
---|
| 28 | while (i < n) { |
---|
[09da99] | 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; |
---|
[2cfffe] | 33 | } |
---|
| 34 | } |
---|
| 35 | |
---|
[09da99] | 36 | |
---|
[2cfffe] | 37 | void GF2XVec::kill() |
---|
| 38 | { |
---|
| 39 | long n = len; |
---|
| 40 | |
---|
[09da99] | 41 | len = 0; bsize = 0; |
---|
| 42 | |
---|
| 43 | if (n == 0) return; |
---|
[2cfffe] | 44 | |
---|
| 45 | long i = 0; |
---|
| 46 | long m; |
---|
| 47 | |
---|
| 48 | while (i < n) { |
---|
[09da99] | 49 | m = WV_BlockDestroy(v[i].xrep); |
---|
[2cfffe] | 50 | i += m; |
---|
| 51 | } |
---|
| 52 | |
---|
| 53 | free(v); |
---|
[287cc8] | 54 | v = 0; |
---|
[2cfffe] | 55 | } |
---|
| 56 | |
---|
| 57 | |
---|
[287cc8] | 58 | GF2XVec& GF2XVec::operator=(const GF2XVec& a) |
---|
[2cfffe] | 59 | { |
---|
| 60 | if (this == &a) |
---|
| 61 | return *this; |
---|
| 62 | |
---|
| 63 | kill(); |
---|
| 64 | SetSize(a.len, a.bsize); |
---|
| 65 | |
---|
| 66 | long i; |
---|
| 67 | for (i = 0; i < a.len; i++) |
---|
| 68 | v[i] = (a.v)[i]; |
---|
| 69 | |
---|
| 70 | return *this; |
---|
| 71 | } |
---|
[287cc8] | 72 | |
---|
[2cfffe] | 73 | GF2XVec::GF2XVec(const GF2XVec& a) |
---|
| 74 | { |
---|
| 75 | v = 0; len = 0; bsize = 0; |
---|
| 76 | |
---|
| 77 | SetSize(a.len, a.bsize); |
---|
| 78 | |
---|
| 79 | long i; |
---|
| 80 | for (i = 0; i < a.len; i++) |
---|
| 81 | v[i] = (a.v)[i]; |
---|
| 82 | } |
---|
| 83 | |
---|
| 84 | void GF2XVec::swap_impl(GF2XVec& x, GF2XVec& y) |
---|
| 85 | { |
---|
| 86 | GF2X* t1; |
---|
| 87 | long t2; |
---|
| 88 | |
---|
| 89 | t1 = x.v; |
---|
| 90 | x.v = y.v; |
---|
| 91 | y.v = t1; |
---|
| 92 | |
---|
| 93 | t2 = x.len; |
---|
| 94 | x.len = y.len; |
---|
| 95 | y.len = t2; |
---|
| 96 | |
---|
| 97 | t2 = x.bsize; |
---|
| 98 | x.bsize = y.bsize; |
---|
| 99 | y.bsize = t2; |
---|
| 100 | } |
---|
| 101 | |
---|
| 102 | NTL_END_IMPL |
---|
Note: See
TracBrowser
for help on using the repository browser.