12345678 |
- /*
- Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved.
- Available via Academic Free License >= 2.1 OR the modified BSD license.
- see: http://dojotoolkit.org/license for details
- */
- if(!dojo._hasResource["dojox.math.BigInteger"]){dojo._hasResource["dojox.math.BigInteger"]=true;dojo.provide("dojox.math.BigInteger");dojo.experimental("dojox.math.BigInteger");(function(){var _1;var _2=244837814094590;var _3=((_2&16777215)==15715070);function _4(a,b,c){if(a!=null){if("number"==typeof a){this._fromNumber(a,b,c);}else{if(!b&&"string"!=typeof a){this._fromString(a,256);}else{this._fromString(a,b);}}}};function _5(){return new _4(null);};function _6(i,x,w,j,c,n){while(--n>=0){var v=x*this[i++]+w[j]+c;c=Math.floor(v/67108864);w[j++]=v&67108863;}return c;};function _7(i,x,w,j,c,n){var xl=x&32767,xh=x>>15;while(--n>=0){var l=this[i]&32767;var h=this[i++]>>15;var m=xh*l+h*xl;l=xl*l+((m&32767)<<15)+w[j]+(c&1073741823);c=(l>>>30)+(m>>>15)+xh*h+(c>>>30);w[j++]=l&1073741823;}return c;};function _8(i,x,w,j,c,n){var xl=x&16383,xh=x>>14;while(--n>=0){var l=this[i]&16383;var h=this[i++]>>14;var m=xh*l+h*xl;l=xl*l+((m&16383)<<14)+w[j]+c;c=(l>>28)+(m>>14)+xh*h;w[j++]=l&268435455;}return c;};if(_3&&(navigator.appName=="Microsoft Internet Explorer")){_4.prototype.am=_7;_1=30;}else{if(_3&&(navigator.appName!="Netscape")){_4.prototype.am=_6;_1=26;}else{_4.prototype.am=_8;_1=28;}}var _9=52;var _a="0123456789abcdefghijklmnopqrstuvwxyz";var _b=[];var rr,vv;rr="0".charCodeAt(0);for(vv=0;vv<=9;++vv){_b[rr++]=vv;}rr="a".charCodeAt(0);for(vv=10;vv<36;++vv){_b[rr++]=vv;}rr="A".charCodeAt(0);for(vv=10;vv<36;++vv){_b[rr++]=vv;}function _c(n){return _a.charAt(n);};function _d(s,i){var c=_b[s.charCodeAt(i)];return (c==null)?-1:c;};function _e(r){for(var i=this.t-1;i>=0;--i){r[i]=this[i];}r.t=this.t;r.s=this.s;};function _f(x){this.t=1;this.s=(x<0)?-1:0;if(x>0){this[0]=x;}else{if(x<-1){this[0]=x+_DV;}else{this.t=0;}}};function nbv(i){var r=_5();r._fromInt(i);return r;};function _10(s,b){var k;if(b==16){k=4;}else{if(b==8){k=3;}else{if(b==256){k=8;}else{if(b==2){k=1;}else{if(b==32){k=5;}else{if(b==4){k=2;}else{this.fromRadix(s,b);return;}}}}}}this.t=0;this.s=0;var i=s.length,mi=false,sh=0;while(--i>=0){var x=(k==8)?s[i]&255:_d(s,i);if(x<0){if(s.charAt(i)=="-"){mi=true;}continue;}mi=false;if(sh==0){this[this.t++]=x;}else{if(sh+k>this._DB){this[this.t-1]|=(x&((1<<(this._DB-sh))-1))<<sh;this[this.t++]=(x>>(this._DB-sh));}else{this[this.t-1]|=x<<sh;}}sh+=k;if(sh>=this._DB){sh-=this._DB;}}if(k==8&&(s[0]&128)!=0){this.s=-1;if(sh>0){this[this.t-1]|=((1<<(this._DB-sh))-1)<<sh;}}this._clamp();if(mi){_4.ZERO._subTo(this,this);}};function _11(){var c=this.s&this._DM;while(this.t>0&&this[this.t-1]==c){--this.t;}};function _12(b){if(this.s<0){return "-"+this.negate().toString(b);}var k;if(b==16){k=4;}else{if(b==8){k=3;}else{if(b==2){k=1;}else{if(b==32){k=5;}else{if(b==4){k=2;}else{return this._toRadix(b);}}}}}var km=(1<<k)-1,d,m=false,r="",i=this.t;var p=this._DB-(i*this._DB)%k;if(i-->0){if(p<this._DB&&(d=this[i]>>p)>0){m=true;r=_c(d);}while(i>=0){if(p<k){d=(this[i]&((1<<p)-1))<<(k-p);d|=this[--i]>>(p+=this._DB-k);}else{d=(this[i]>>(p-=k))&km;if(p<=0){p+=this._DB;--i;}}if(d>0){m=true;}if(m){r+=_c(d);}}}return m?r:"0";};function _13(){var r=_5();_4.ZERO._subTo(this,r);return r;};function _14(){return (this.s<0)?this.negate():this;};function _15(a){var r=this.s-a.s;if(r){return r;}var i=this.t;r=i-a.t;if(r){return r;}while(--i>=0){if((r=this[i]-a[i])){return r;}}return 0;};function _16(x){var r=1,t;if((t=x>>>16)){x=t;r+=16;}if((t=x>>8)){x=t;r+=8;}if((t=x>>4)){x=t;r+=4;}if((t=x>>2)){x=t;r+=2;}if((t=x>>1)){x=t;r+=1;}return r;};function _17(){if(this.t<=0){return 0;}return this._DB*(this.t-1)+_16(this[this.t-1]^(this.s&this._DM));};function _18(n,r){var i;for(i=this.t-1;i>=0;--i){r[i+n]=this[i];}for(i=n-1;i>=0;--i){r[i]=0;}r.t=this.t+n;r.s=this.s;};function _19(n,r){for(var i=n;i<this.t;++i){r[i-n]=this[i];}r.t=Math.max(this.t-n,0);r.s=this.s;};function _1a(n,r){var bs=n%this._DB;var cbs=this._DB-bs;var bm=(1<<cbs)-1;var ds=Math.floor(n/this._DB),c=(this.s<<bs)&this._DM,i;for(i=this.t-1;i>=0;--i){r[i+ds+1]=(this[i]>>cbs)|c;c=(this[i]&bm)<<bs;}for(i=ds-1;i>=0;--i){r[i]=0;}r[ds]=c;r.t=this.t+ds+1;r.s=this.s;r._clamp();};function _1b(n,r){r.s=this.s;var ds=Math.floor(n/this._DB);if(ds>=this.t){r.t=0;return;}var bs=n%this._DB;var cbs=this._DB-bs;var bm=(1<<bs)-1;r[0]=this[ds]>>bs;for(var i=ds+1;i<this.t;++i){r[i-ds-1]|=(this[i]&bm)<<cbs;r[i-ds]=this[i]>>bs;}if(bs>0){r[this.t-ds-1]|=(this.s&bm)<<cbs;}r.t=this.t-ds;r._clamp();};function _1c(a,r){var i=0,c=0,m=Math.min(a.t,this.t);while(i<m){c+=this[i]-a[i];r[i++]=c&this._DM;c>>=this._DB;}if(a.t<this.t){c-=a.s;while(i<this.t){c+=this[i];r[i++]=c&this._DM;c>>=this._DB;}c+=this.s;}else{c+=this.s;while(i<a.t){c-=a[i];r[i++]=c&this._DM;c>>=this._DB;}c-=a.s;}r.s=(c<0)?-1:0;if(c<-1){r[i++]=this._DV+c;}else{if(c>0){r[i++]=c;}}r.t=i;r._clamp();};function _1d(a,r){var x=this.abs(),y=a.abs();var i=x.t;r.t=i+y.t;while(--i>=0){r[i]=0;}for(i=0;i<y.t;++i){r[i+x.t]=x.am(0,y[i],r,i,0,x.t);}r.s=0;r._clamp();if(this.s!=a.s){_4.ZERO._subTo(r,r);}};function _1e(r){var x=this.abs();var i=r.t=2*x.t;while(--i>=0){r[i]=0;}for(i=0;i<x.t-1;++i){var c=x.am(i,x[i],r,2*i,0,1);if((r[i+x.t]+=x.am(i+1,2*x[i],r,2*i+1,c,x.t-i-1))>=x._DV){r[i+x.t]-=x._DV;r[i+x.t+1]=1;}}if(r.t>0){r[r.t-1]+=x.am(i,x[i],r,2*i,0,1);}r.s=0;r._clamp();};function _1f(m,q,r){var pm=m.abs();if(pm.t<=0){return;}var pt=this.abs();if(pt.t<pm.t){if(q!=null){q._fromInt(0);}if(r!=null){this._copyTo(r);}return;}if(r==null){r=_5();}var y=_5(),ts=this.s,ms=m.s;var nsh=this._DB-_16(pm[pm.t-1]);if(nsh>0){pm._lShiftTo(nsh,y);pt._lShiftTo(nsh,r);}else{pm._copyTo(y);pt._copyTo(r);}var ys=y.t;var y0=y[ys-1];if(y0==0){return;}var yt=y0*(1<<this._F1)+((ys>1)?y[ys-2]>>this._F2:0);var d1=this._FV/yt,d2=(1<<this._F1)/yt,e=1<<this._F2;var i=r.t,j=i-ys,t=(q==null)?_5():q;y._dlShiftTo(j,t);if(r.compareTo(t)>=0){r[r.t++]=1;r._subTo(t,r);}_4.ONE._dlShiftTo(ys,t);t._subTo(y,y);while(y.t<ys){y[y.t++]=0;}while(--j>=0){var qd=(r[--i]==y0)?this._DM:Math.floor(r[i]*d1+(r[i-1]+e)*d2);if((r[i]+=y.am(0,qd,r,j,0,ys))<qd){y._dlShiftTo(j,t);r._subTo(t,r);while(r[i]<--qd){r._subTo(t,r);}}}if(q!=null){r._drShiftTo(ys,q);if(ts!=ms){_4.ZERO._subTo(q,q);}}r.t=ys;r._clamp();if(nsh>0){r._rShiftTo(nsh,r);}if(ts<0){_4.ZERO._subTo(r,r);}};function _20(a){var r=_5();this.abs()._divRemTo(a,null,r);if(this.s<0&&r.compareTo(_4.ZERO)>0){a._subTo(r,r);}return r;};function _21(m){this.m=m;};function _22(x){if(x.s<0||x.compareTo(this.m)>=0){return x.mod(this.m);}else{return x;}};function _23(x){return x;};function _24(x){x._divRemTo(this.m,null,x);};function _25(x,y,r){x._multiplyTo(y,r);this.reduce(r);};function _26(x,r){x._squareTo(r);this.reduce(r);};dojo.extend(_21,{convert:_22,revert:_23,reduce:_24,mulTo:_25,sqrTo:_26});function _27(){if(this.t<1){return 0;}var x=this[0];if((x&1)==0){return 0;}var y=x&3;y=(y*(2-(x&15)*y))&15;y=(y*(2-(x&255)*y))&255;y=(y*(2-(((x&65535)*y)&65535)))&65535;y=(y*(2-x*y%this._DV))%this._DV;return (y>0)?this._DV-y:-y;};function _28(m){this.m=m;this.mp=m._invDigit();this.mpl=this.mp&32767;this.mph=this.mp>>15;this.um=(1<<(m._DB-15))-1;this.mt2=2*m.t;};function _29(x){var r=_5();x.abs()._dlShiftTo(this.m.t,r);r._divRemTo(this.m,null,r);if(x.s<0&&r.compareTo(_4.ZERO)>0){this.m._subTo(r,r);}return r;};function _2a(x){var r=_5();x._copyTo(r);this.reduce(r);return r;};function _2b(x){while(x.t<=this.mt2){x[x.t++]=0;}for(var i=0;i<this.m.t;++i){var j=x[i]&32767;var u0=(j*this.mpl+(((j*this.mph+(x[i]>>15)*this.mpl)&this.um)<<15))&x._DM;j=i+this.m.t;x[j]+=this.m.am(0,u0,x,i,0,this.m.t);while(x[j]>=x._DV){x[j]-=x._DV;x[++j]++;}}x._clamp();x._drShiftTo(this.m.t,x);if(x.compareTo(this.m)>=0){x._subTo(this.m,x);}};function _2c(x,r){x._squareTo(r);this.reduce(r);};function _2d(x,y,r){x._multiplyTo(y,r);this.reduce(r);};dojo.extend(_28,{convert:_29,revert:_2a,reduce:_2b,mulTo:_2d,sqrTo:_2c});function _2e(){return ((this.t>0)?(this[0]&1):this.s)==0;};function _2f(e,z){if(e>4294967295||e<1){return _4.ONE;}var r=_5(),r2=_5(),g=z.convert(this),i=_16(e)-1;g._copyTo(r);while(--i>=0){z.sqrTo(r,r2);if((e&(1<<i))>0){z.mulTo(r2,g,r);}else{var t=r;r=r2;r2=t;}}return z.revert(r);};function _30(e,m){var z;if(e<256||m._isEven()){z=new _21(m);}else{z=new _28(m);}return this._exp(e,z);};dojo.extend(_4,{_DB:_1,_DM:(1<<_1)-1,_DV:1<<_1,_FV:Math.pow(2,_9),_F1:_9-_1,_F2:2*_1-_9,_copyTo:_e,_fromInt:_f,_fromString:_10,_clamp:_11,_dlShiftTo:_18,_drShiftTo:_19,_lShiftTo:_1a,_rShiftTo:_1b,_subTo:_1c,_multiplyTo:_1d,_squareTo:_1e,_divRemTo:_1f,_invDigit:_27,_isEven:_2e,_exp:_2f,toString:_12,negate:_13,abs:_14,compareTo:_15,bitLength:_17,mod:_20,modPowInt:_30});dojo._mixin(_4,{ZERO:nbv(0),ONE:nbv(1),_nbi:_5,_nbv:nbv,_nbits:_16,_Montgomery:_28});dojox.math.BigInteger=_4;})();}
|