/////////////////////////////////////////////////////////////// // Big.js // v0.10.0 (beta) /////////////////////////////////////////////////////////////// // http://github.com/whatgoodisaroad/Big-js // By Wyatt Allen // MIT Licensed // 2013-02-11 (Monday, 11 February 2013) /////////////////////////////////////////////////////////////// var Big; (function(){function o(a,b){a=a.clone();b=b.clone();if(a.isZero()||b.isZero())return a.isZero()&&b.isZero()?l:a.isZero()?b.sign==i?g:d:a.sign==i?d:g;else if(a.sign!=b.sign)return a.sign==i?d:g;else if(a.exponent!=b.exponent)return a.sign==i?a.exponent>b.exponent?d:g:a.exponent>b.exponent?g:d;else{var c=q(a,b);return a.sign==i?t(c.l.mantissa,c.r.mantissa):t(c.r.mantissa,c.l.mantissa)}}function t(a,b){a=a.slice();b=b.slice();if(b.length){if(!a.length)return m(b)?l:g}else return m(a)?l:d;if(a[0]>b[0])return d; else if(a[0]=0;--d)h=h+z[d]+c[d],g[d+1]=h%10,h=h>9?1:0;g[0]=h;return new e(j,f,g)}else return t(c.l.mantissa,c.r.mantissa)==l?w:a.sign==i?s(c.l,k(c.r)):s(c.r,k(c.l))}function s(a,b){a=n(a);b=n(b);if(a.isZero())return k(b);if(b.isZero())return a.clone();var c=o(a,b);if(c==l)return w;if(a.sign==b.sign){if(a.sign==p)return s(k(b),k(a));if(c==g)return k(s(b, a));c=q(a,b);c=x(c.l,c.r);return new Big(a.sign,c.l.exponent,A(c.l.mantissa,c.r.mantissa))}else return a.sign==i?y(a,k(b)):k(y(k(a),b))}function A(a,b){if(a.length==0)return[];var c=a.slice(0,a.length-1),e=b.slice(0,b.length-1),j=a[a.length-1],f=b[b.length-1];return j=Big.precision)return j.DIVISION_ROUNDOFF= !0,j.DIVISION_REMAINDER=c.toString(),[];if(!a.length&&m(c.mantissa))return j.DIVISION_ROUNDOFF=!1,[];var f;if(a.length){var d={x:a[0],xs:a.slice(1)},a=d.x;f=d.xs}else a=0,f=[];for(var g,h,d=9;d>=0;--d)if(h=b.times(new Big(d)),d==0||h.lessThanOrEqualTo(c))break;g={q:d,prod_bn:h};h=g.q;d=D;c=c.minus(g.prod_bn);c=c.times(new Big(10)).plus(new Big(a));b=d(f,b,c,e==0&&h==0?0:e+1,j);return[h].concat(b)}var i=!1,p=!0,d=0,g=1,l=2;Big=function(a,b,c,e){typeof a=="number"&&(a=""+a);if(a.substring)return a= a.replace(/(^\s+)|(\s+$)/g,""),b=/^[+-]/.test(a),c=/^[+-]?\d*\.\d*$/.test(a),e=b?a.slice(1):a,n(new Big(b&&a[0]=="-"?p:i,c?e.indexOf(".")-1:e.length-1,B(e.replace(".",""))));else this.sign=a,this.exponent=b,this.mantissa=c,this.flags=e||{},this.expr=this.toString()};Big.POSITIVE=i;Big.NEGATIVE=p;Big.parse=function(a){return new Big(a)};Big.precision=20;Big.prototype.toString=function(){if(m(this.mantissa))return"0";var a=n(this),b=(this.sign==p?"-":"")+(a.exponent<0?"0":v(a.exponent+1,a.mantissa.slice(0, a.exponent+1)).join(""));a=a.exponent>=0?a.mantissa.length==a.exponent?"":"."+u(a.exponent+1<1?a.mantissa.slice():a.mantissa.slice(a.exponent+1)).join(""):"."+r(-a.exponent-1,"0").join("")+a.mantissa.join("");return b+a};Big.prototype.lessThan=function(a){return o(this,a)==g};Big.prototype.greaterThan=function(a){return o(this,a)==d};Big.prototype.equals=function(a){return o(this,a)==l};Big.prototype.lessThanOrEqualTo=function(a){a=o(this,a);return a==g||a==l};Big.prototype.greaterThanOrEqualTo=function(a){a= o(this,a);return a==d||a==l};Big.prototype.plus=function(a){return n(y(this,a))};Big.prototype.minus=function(a){return n(s(this,a))};Big.prototype.times=function(a){var b;b=q(this,a);b=x(b.l,b.r);for(var c=b.l.mantissa.length,e=r(2*c,0),d=c-1;d>=0;--d)for(var f=c-1;f>=0;--f)e[d+f+1]+=b.r.mantissa[d]*b.l.mantissa[f];c=e.slice();for(d=c.length-1;d>0;--d)f=c[d],f>9&&(e=f%10,f=(f-e)/10,c[d-1]+=f,c[d]=e);a=new Big(this.sign==a.sign?i:p,2*b.l.exponent+1,c);return n(a)};Big.prototype.over=function(a){var b, c;b=q(this,a);var e;e=b.l.mantissa.length-b.r.mantissa.length>0?new Big(Math.pow(10,b.l.mantissa.length-b.l.exponent-1)):new Big(Math.pow(10,b.r.mantissa.length-b.r.exponent-1));c={l:b.l.times(e),r:b.r.times(e)};b={};e=Big;var a=this.sign==a.sign?i:p,d=c.l.exponent;var f=c.l;c=c.r;if(m(f.mantissa))c=[];else if(m(c.mantissa))throw"Division by zero";else f={x:f.mantissa[0],xs:f.mantissa.slice(1)},c=D(f.xs,new Big(i,c.exponent,c.mantissa),new Big(f.x),0,b);b=new e(a,d,c,b);return n(b)};Big.prototype.isZero= function(){return m(this.mantissa)};Big.prototype.clone=function(){return new Big(this.sign,this.exponent,this.mantissa.slice())};Big.prototype.negate=function(){var a=this.clone();a.sign=!a.sign;return a};var w=new Big(i,0,[])})();