File tree Expand file tree Collapse file tree 1 file changed +33
-4
lines changed
src/main/java/net/siisise/math Expand file tree Collapse file tree 1 file changed +33
-4
lines changed Original file line number Diff line number Diff line change @@ -45,6 +45,7 @@ public class GFRev {
45
45
public GFRev (long [] l ) {
46
46
47
47
long [] n = l .clone ();
48
+ shL = new long [l .length * 64 ][];
48
49
for (int i = 0 ; i < l .length * 64 ; i ++) {
49
50
shL [i ] = n ;
50
51
n = x (n );
@@ -76,9 +77,10 @@ public long[] mul(long[] a) {
76
77
for ( int j = 0 ; j < 64 ; j ++ ) {
77
78
if ( c << j < 0 ) {
78
79
int k = i * 64 + j ;
79
- for (int l = 0 ; l < a .length ; l ++) {
80
- v [l ] ^= shL [k ][l ];
81
- }
80
+ Bin .xorl (v , shL [k ]);
81
+ //for (int l = 0; l < a.length; l++) {
82
+ // v[l] ^= shL[k][l];
83
+ //}
82
84
}
83
85
}
84
86
}
@@ -113,14 +115,20 @@ public long[] mul(long[] a, long[] b) {
113
115
public long [] inv (long [] a ) {
114
116
return pow (a , INV_POW );
115
117
}
116
-
118
+
119
+ public long [] inv () {
120
+ return pow (INV_POW );
121
+ }
122
+
117
123
/**
118
124
* 累乗.
119
125
* @param a 底
120
126
* @param p exponent 1以上
121
127
* @return
122
128
*/
123
129
public long [] pow (long [] a , BigInteger p ) {
130
+ return new GFRev (a ).pow (p );
131
+ /*
124
132
if ( p.equals(BigInteger.ONE)) {
125
133
return a;
126
134
} else {
@@ -136,6 +144,27 @@ public long[] pow(long[] a, BigInteger p) {
136
144
}
137
145
return n;
138
146
}
147
+ */
148
+ }
149
+
150
+ public long [] pow (BigInteger p ) {
151
+ long [] a = shL [0 ];
152
+ if ( p .equals (BigInteger .ONE )) {
153
+ return a ;
154
+ } else {
155
+ long [] n ;
156
+ if ( p .mod (THREE ).equals (BigInteger .ZERO )) {
157
+ n = pow (p .divide (THREE ));
158
+ GFRev gfn = new GFRev (n );
159
+ return gfn .mul (gfn .mul (n ));
160
+ }
161
+ n = pow ( p .divide (TWO ));
162
+ n = mul (n ,n );
163
+ if ( !p .mod (TWO ).equals (BigInteger .ZERO )) {
164
+ n = mul (n );
165
+ }
166
+ return n ;
167
+ }
139
168
}
140
169
141
170
}
You can’t perform that action at this time.
0 commit comments