no commit message
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
package com.hurlant.math
|
||||
{
|
||||
use namespace bi_internal;
|
||||
|
||||
/**
|
||||
* Modular reduction using "classic" algorithm
|
||||
*/
|
||||
internal class ClassicReduction implements IReduction
|
||||
{
|
||||
private var m:BigInteger;
|
||||
public function ClassicReduction(m:BigInteger) {
|
||||
this.m = m;
|
||||
}
|
||||
public function convert(x:BigInteger):BigInteger {
|
||||
if (x.s<0 || x.compareTo(m)>=0) {
|
||||
return x.mod(m);
|
||||
}
|
||||
return x;
|
||||
}
|
||||
public function revert(x:BigInteger):BigInteger {
|
||||
return x;
|
||||
}
|
||||
public function reduce(x:BigInteger):void {
|
||||
x.divRemTo(m, null,x);
|
||||
}
|
||||
public function mulTo(x:BigInteger, y:BigInteger, r:BigInteger):void {
|
||||
x.multiplyTo(y,r);
|
||||
reduce(r);
|
||||
}
|
||||
public function sqrTo(x:BigInteger, r:BigInteger):void {
|
||||
x.squareTo(r);
|
||||
reduce(r);
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user