diff -r 436a31d11f1d -r 70c9688a1486 tweetcast/client/lib/websocket-js/flash-src/third-party/com/hurlant/math/ClassicReduction.as --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/tweetcast/client/lib/websocket-js/flash-src/third-party/com/hurlant/math/ClassicReduction.as Thu Oct 06 12:39:29 2011 +0200 @@ -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); + } + } +} \ No newline at end of file