Toggle navigation
MeasureThat.net
Create a benchmark
Tools
Feedback
FAQ
Register
Log In
BigNumber vs. Break Infinity
(version: 0)
Comparing performance of:
BigNumber vs Break Infinity
Created:
7 years ago
by:
Guest
Jump to the latest result
HTML Preparation code:
<script> "use strict";var _createClass=function(){function e(e,t){for(var n=0;n<t.length;n++){var a=t[n];a.enumerable=a.enumerable||!1,a.configurable=!0,"value"in a&&(a.writable=!0),Object.defineProperty(e,a.key,a)}}return function(t,n,a){return n&&e(t.prototype,n),a&&e(t,a),t}}();function _classCallCheck(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}!function(e){var t=function(e,t,n){if(null==e||null==t)return e;var a=String(e),i=a.length;if(i>=t)return a;var r=null==n?"":String(n);""===r&&(r=" ");for(var s=t-i;r.length<s;)r+=r;return a+(r.length>s?r.substr(0,s):r)};Math.log10=Math.log10||function(e){return Math.log(e)*Math.LOG10E},Number.isInteger=Number.isInteger||function(e){return"number"==typeof e&&isFinite(e)&&Math.floor(e)===e},Number.isSafeInteger=Number.isSafeInteger||function(e){return Number.isInteger(e)&&Math.abs(e)<=Number.MAX_SAFE_INTEGER},Math.trunc||(Math.trunc=function(e){return e=+e,isFinite(e)?e-e%1||(e<0?-0:0===e?e:0):e}),Math.sign||(Math.sign=function(e){return(e>0)-(e<0)||+e});for(var n=17,a=9e15,i=-324,r=[],s=i+1;s<=308;s++)r.push(Number("1e"+s));var u=323,o=function(){function e(t){_classCallCheck(this,e),t instanceof e?this.fromDecimal(t):"number"==typeof t?this.fromNumber(t):"string"==typeof t?this.fromString(t):(this.mantissa=0,this.exponent=0)}return _createClass(e,[{key:"normalize",value:function(){if(0==this.mantissa)return this.mantissa=0,void(this.exponent=0);if(!(this.mantissa>=1&&this.mantissa<10)){var e=Math.floor(Math.log10(Math.abs(this.mantissa)));return this.mantissa=this.mantissa/r[e+u],this.exponent+=e,this}}},{key:"fromMantissaExponent",value:function(e,t){return isFinite(e)&&isFinite(t)||(e=Number.NaN,t=Number.NaN),this.mantissa=e,this.exponent=t,this.normalize(),this}},{key:"fromMantissaExponent_noNormalize",value:function(e,t){return this.mantissa=e,this.exponent=t,this}},{key:"fromDecimal",value:function(e){return this.mantissa=e.mantissa,this.exponent=e.exponent,this}},{key:"fromNumber",value:function(e){return isNaN(e)?(this.mantissa=Number.NaN,this.exponent=Number.NaN):e==Number.POSITIVE_INFINITY?(this.mantissa=1,this.exponent=a):e==Number.NEGATIVE_INFINITY?(this.mantissa=-1,this.exponent=a):0==e?(this.mantissa=0,this.exponent=0):(this.exponent=Math.floor(Math.log10(Math.abs(e))),this.exponent==i?this.mantissa=10*e/1e-323:this.mantissa=e/r[this.exponent+u],this.normalize()),this}},{key:"fromString",value:function(e){if(-1!=e.indexOf("e")){var t=e.split("e");this.mantissa=parseFloat(t[0]),this.exponent=parseFloat(t[1]),this.normalize()}else if("NaN"==e)this.mantissa=Number.NaN,this.exponent=Number.NaN;else if(this.fromNumber(parseFloat(e)),isNaN(this.mantissa))throw Error("[DecimalError] Invalid argument: "+e);return this}},{key:"fromValue",value:function(t){return t instanceof e?this.fromDecimal(t):"number"==typeof t?this.fromNumber(t):"string"==typeof t?this.fromString(t):(this.mantissa=0,this.exponent=0,this)}}]),_createClass(e,[{key:"toNumber",value:function(){if(!isFinite(this.exponent))return Number.NaN;if(this.exponent>308)return this.mantissa>0?Number.POSITIVE_INFINITY:Number.NEGATIVE_INFINITY;if(this.exponent<i)return 0;if(this.exponent==i)return this.mantissa>0?5e-324:-5e-324;var e=this.mantissa*r[this.exponent+u];if(!isFinite(e)||this.exponent<0)return e;var t=Math.round(e);return Math.abs(t-e)<1e-10?t:e}},{key:"mantissaWithDecimalPlaces",value:function(e){if(isNaN(this.mantissa)||isNaN(this.exponent))return Number.NaN;if(0==this.mantissa)return 0;var t=e+1,n=Math.ceil(Math.log10(Math.abs(this.mantissa))),a=Math.round(this.mantissa*Math.pow(10,t-n))*Math.pow(10,n-t);return parseFloat(a.toFixed(Math.max(t-n,0)))}},{key:"toString",value:function(){return isNaN(this.mantissa)||isNaN(this.exponent)?"NaN":this.exponent>=a?this.mantissa>0?"Infinity":"-Infinity":this.exponent<=-a||0==this.mantissa?"0":this.exponent<21&&this.exponent>-7?this.toNumber().toString():this.mantissa+"e"+(this.exponent>=0?"+":"")+this.exponent}},{key:"toExponential",value:function(e){if(isNaN(this.mantissa)||isNaN(this.exponent))return"NaN";if(this.exponent>=a)return this.mantissa>0?"Infinity":"-Infinity";if(this.exponent<=-a||0==this.mantissa)return"0"+(e>0?t(".",e+1,"0"):"")+"e+0";if(this.exponent>i&&this.exponent<308)return this.toNumber().toExponential(e);isFinite(e)||(e=n);var r=e+1,s=Math.max(1,Math.ceil(Math.log10(Math.abs(this.mantissa))));return(Math.round(this.mantissa*Math.pow(10,r-s))*Math.pow(10,s-r)).toFixed(Math.max(r-s,0))+"e"+(this.exponent>=0?"+":"")+this.exponent}},{key:"toFixed",value:function(e){return isNaN(this.mantissa)||isNaN(this.exponent)?"NaN":this.exponent>=a?this.mantissa>0?"Infinity":"-Infinity":this.exponent<=-a||0==this.mantissa?"0"+(e>0?t(".",e+1,"0"):""):this.exponent>=n?this.mantissa.toString().replace(".","").padEnd(this.exponent+1,"0")+(e>0?t(".",e+1,"0"):""):this.toNumber().toFixed(e)}},{key:"toPrecision",value:function(e){return this.exponent<=-7?this.toExponential(e-1):e>this.exponent?this.toFixed(e-this.exponent-1):this.toExponential(e-1)}},{key:"valueOf",value:function(){return this.toString()}},{key:"toJSON",value:function(){return this.toString()}},{key:"toStringWithDecimalPlaces",value:function(e){return this.toExponential(e)}},{key:"abs",value:function(){return e.fromMantissaExponent(Math.abs(this.mantissa),this.exponent)}},{key:"neg",value:function(){return e.fromMantissaExponent(-this.mantissa,this.exponent)}},{key:"negate",value:function(){return this.neg()}},{key:"negated",value:function(){return this.neg()}},{key:"sign",value:function(){return Math.sign(this.mantissa)}},{key:"sgn",value:function(){return this.sign()}},{key:"round",value:function(){return this.exponent<-1?new e(0):this.exponent<n?new e(Math.round(this.toNumber())):this}},{key:"floor",value:function(){return this.exponent<-1?Math.sign(this.mantissa)>=0?new e(0):new e(-1):this.exponent<n?new e(Math.floor(this.toNumber())):this}},{key:"ceil",value:function(){return this.exponent<-1?Math.sign(this.mantissa)>0?new e(1):new e(0):this.exponent<n?new e(Math.ceil(this.toNumber())):this}},{key:"trunc",value:function(){return this.exponent<0?new e(0):this.exponent<n?new e(Math.trunc(this.toNumber())):this}},{key:"add",value:function(t){return t=e.fromValue(t),0==this.mantissa?t:0==t.mantissa?this:(this.exponent>=t.exponent?(a=this,i=t):(a=t,i=this),a.exponent-i.exponent>n?a:e.fromMantissaExponent(Math.round(1e14*a.mantissa+1e14*i.mantissa*r[i.exponent-a.exponent+u]),a.exponent-14));var a,i}},{key:"plus",value:function(e){return this.add(e)}},{key:"sub",value:function(t){return t=e.fromValue(t),this.add(e.fromMantissaExponent(-t.mantissa,t.exponent))}},{key:"subtract",value:function(e){return this.sub(e)}},{key:"minus",value:function(e){return this.sub(e)}},{key:"mul",value:function(t){return t=e.fromValue(t),e.fromMantissaExponent(this.mantissa*t.mantissa,this.exponent+t.exponent)}},{key:"multiply",value:function(e){return this.mul(e)}},{key:"times",value:function(e){return this.mul(e)}},{key:"div",value:function(t){return t=e.fromValue(t),this.mul(t.recip())}},{key:"divide",value:function(e){return this.div(e)}},{key:"divideBy",value:function(e){return this.div(e)}},{key:"dividedBy",value:function(e){return this.div(e)}},{key:"recip",value:function(){return e.fromMantissaExponent(1/this.mantissa,-this.exponent)}},{key:"reciprocal",value:function(){return this.recip()}},{key:"reciprocate",value:function(){return this.recip()}},{key:"cmp",value:function(t){if(t=e.fromValue(t),0==this.mantissa){if(0==t.mantissa)return 0;if(t.mantissa<0)return 1;if(t.mantissa>0)return-1}else if(0==t.mantissa){if(this.mantissa<0)return-1;if(this.mantissa>0)return 1}return this.mantissa>0?t.mantissa<0?1:this.exponent>t.exponent?1:this.exponent<t.exponent?-1:this.mantissa>t.mantissa?1:this.mantissa<t.mantissa?-1:0:this.mantissa<0?t.mantissa>0?-1:this.exponent>t.exponent?-1:this.exponent<t.exponent?1:this.mantissa>t.mantissa?1:this.mantissa<t.mantissa?-1:0:void 0}},{key:"compare",value:function(e){return this.cmp(e)}},{key:"eq",value:function(t){return t=e.fromValue(t),this.exponent==t.exponent&&this.mantissa==t.mantissa}},{key:"equals",value:function(e){return this.eq(e)}},{key:"neq",value:function(t){return t=e.fromValue(t),this.exponent!=t.exponent||this.mantissa!=t.mantissa}},{key:"notEquals",value:function(e){return this.neq(e)}},{key:"lt",value:function(t){return t=e.fromValue(t),0==this.mantissa?t.mantissa>0:0==t.mantissa?this.mantissa<=0:this.exponent==t.exponent?this.mantissa<t.mantissa:this.mantissa>0?t.mantissa>0&&this.exponent<t.exponent:t.mantissa>0||this.exponent>t.exponent}},{key:"lte",value:function(t){return t=e.fromValue(t),0==this.mantissa?t.mantissa>=0:0==t.mantissa?this.mantissa<=0:this.exponent==t.exponent?this.mantissa<=t.mantissa:this.mantissa>0?t.mantissa>0&&this.exponent<t.exponent:t.mantissa>0||this.exponent>t.exponent}},{key:"gt",value:function(t){return t=e.fromValue(t),0==this.mantissa?t.mantissa<0:0==t.mantissa?this.mantissa>0:this.exponent==t.exponent?this.mantissa>t.mantissa:this.mantissa>0?t.mantissa<0||this.exponent>t.exponent:t.mantissa<0&&this.exponent<t.exponent}},{key:"gte",value:function(t){return t=e.fromValue(t),0==this.mantissa?t.mantissa<=0:0==t.mantissa?this.mantissa>0:this.exponent==t.exponent?this.mantissa>=t.mantissa:this.mantissa>0?t.mantissa<0||this.exponent>t.exponent:t.mantissa<0&&this.exponent<t.exponent}},{key:"max",value:function(t){return t=e.fromValue(t),this.gte(t)?this:t}},{key:"min",value:function(t){return t=e.fromValue(t),this.lte(t)?this:t}},{key:"cmp_tolerance",value:function(t,n){return t=e.fromValue(t),this.eq_tolerance(t,n)?0:this.cmp(t)}},{key:"compare_tolerance",value:function(e,t){return this.cmp_tolerance(e,t)}},{key:"eq_tolerance",value:function(t,n){return t=e.fromValue(t),e.lte(this.sub(t).abs(),e.max(this.abs(),t.abs()).mul(n))}},{key:"equals_tolerance",value:function(e,t){return this.eq_tolerance(e,t)}},{key:"neq_tolerance",value:function(t,n){return t=e.fromValue(t),!this.eq_tolerance(t,n)}},{key:"notEquals_tolerance",value:function(e,t){return this.neq_tolerance(e,t)}},{key:"lt_tolerance",value:function(t,n){return t=e.fromValue(t),!this.eq_tolerance(t,n)&&this.lt(t)}},{key:"lte_tolerance",value:function(t,n){return t=e.fromValue(t),!!this.eq_tolerance(t,n)||this.lt(t)}},{key:"gt_tolerance",value:function(t,n){return t=e.fromValue(t),!this.eq_tolerance(t,n)&&this.gt(t)}},{key:"gte_tolerance",value:function(t,n){return t=e.fromValue(t),!!this.eq_tolerance(t,n)||this.gt(t)}},{key:"abslog10",value:function(){return this.exponent+Math.log10(Math.abs(this.mantissa))}},{key:"log10",value:function(){return this.exponent+Math.log10(this.mantissa)}},{key:"log",value:function(e){return Math.LN10/Math.log(e)*this.log10()}},{key:"log2",value:function(){return 3.321928094887362*this.log10()}},{key:"ln",value:function(){return 2.302585092994046*this.log10()}},{key:"logarithm",value:function(e){return this.log(e)}},{key:"pow",value:function(t){t instanceof e&&(t=t.toNumber());var n=this.exponent*t;if(Number.isSafeInteger(n)){var a=Math.pow(this.mantissa,t);if(isFinite(a))return e.fromMantissaExponent(a,n)}var i=Math.trunc(n),r=n-i;a=Math.pow(10,t*Math.log10(this.mantissa)+r);if(isFinite(a))return e.fromMantissaExponent(a,i);var s=e.pow10(t*this.abslog10());return-1==this.sign()&&t%2==1?s.neg():s}},{key:"pow_base",value:function(t){return(t=e.fromValue(t)).pow(this)}},{key:"factorial",value:function(){var t=this.toNumber()+1;return e.pow(t/Math.E*Math.sqrt(t*Math.sinh(1/t)+1/(810*Math.pow(t,6))),t).mul(Math.sqrt(2*Math.PI/t))}},{key:"exp",value:function(){var t,n,a=this.toNumber();return-706<a&&a<709?e.fromNumber(Math.exp(a)):(t=0,(n=this.exponent)>=0&&(t=Math.trunc(a/Math.LN10),(a-=t*Math.LN10)>=Math.LN10&&(++t,a-=Math.LN10)),a<0&&(--t,a+=Math.LN10),a=Math.exp(a),0!=t&&(n=Math.floor(t),a=e.fromMantissaExponent(a,n)),a)}},{key:"sqr",value:function(){return e.fromMantissaExponent(Math.pow(this.mantissa,2),2*this.exponent)}},{key:"sqrt",value:function(){return this.mantissa<0?new e(Number.NaN):this.exponent%2!=0?e.fromMantissaExponent(3.16227766016838*Math.sqrt(this.mantissa),Math.floor(this.exponent/2)):e.fromMantissaExponent(Math.sqrt(this.mantissa),Math.floor(this.exponent/2))}},{key:"cube",value:function(){return e.fromMantissaExponent(Math.pow(this.mantissa,3),3*this.exponent)}},{key:"cbrt",value:function(){var t=1,n=this.mantissa;n<0&&(t=-1,n=-n);var a=t*Math.pow(n,1/3),i=this.exponent%3;return 1==i||-1==i?e.fromMantissaExponent(2.154434690031884*a,Math.floor(this.exponent/3)):0!=i?e.fromMantissaExponent(4.641588833612779*a,Math.floor(this.exponent/3)):e.fromMantissaExponent(a,Math.floor(this.exponent/3))}},{key:"sinh",value:function(){return this.exp().sub(this.negate().exp()).div(2)}},{key:"cosh",value:function(){return this.exp().add(this.negate().exp()).div(2)}},{key:"tanh",value:function(){return this.sinh().div(this.cosh())}},{key:"asinh",value:function(){return e.ln(this.add(this.sqr().add(1).sqrt()))}},{key:"acosh",value:function(){return e.ln(this.add(this.sqr().sub(1).sqrt()))}},{key:"atanh",value:function(){return this.abs().gte(1)?Number.NaN:e.ln(this.add(1).div(new e(1).sub(this))).div(2)}},{key:"ascensionPenalty",value:function(e){return 0==e?this:this.pow(Math.pow(10,-e))}},{key:"egg",value:function(){return this.add(9)}},{key:"lessThanOrEqualTo",value:function(e){return this.cmp(e)<1}},{key:"lessThan",value:function(e){return this.cmp(e)<0}},{key:"greaterThanOrEqualTo",value:function(e){return this.cmp(e)>-1}},{key:"greaterThan",value:function(e){return this.cmp(e)>0}},{key:"m",get:function(){return this.mantissa},set:function(e){this.mantissa=e}},{key:"e",get:function(){return this.exponent},set:function(e){this.exponent=e}},{key:"s",get:function(){return this.sign()},set:function(e){0==e&&(this.e=0,this.m=0),this.sgn()!=e&&(this.m=-this.m)}}],[{key:"fromMantissaExponent",value:function(t,n){return(new e).fromMantissaExponent(t,n)}},{key:"fromMantissaExponent_noNormalize",value:function(t,n){return(new e).fromMantissaExponent_noNormalize(t,n)}},{key:"fromDecimal",value:function(t){return(new e).fromDecimal(t)}},{key:"fromNumber",value:function(t){return(new e).fromNumber(t)}},{key:"fromString",value:function(t){return(new e).fromString(t)}},{key:"fromValue",value:function(t){return t instanceof e?t:new e(t)}},{key:"abs",value:function(t){return(t=e.fromValue(t)).abs()}},{key:"neg",value:function(t){return(t=e.fromValue(t)).neg()}},{key:"negate",value:function(t){return(t=e.fromValue(t)).neg()}},{key:"negated",value:function(t){return(t=e.fromValue(t)).neg()}},{key:"sign",value:function(t){return(t=e.fromValue(t)).sign()}},{key:"sgn",value:function(t){return(t=e.fromValue(t)).sign()}},{key:"round",value:function(t){return(t=e.fromValue(t)).round()}},{key:"floor",value:function(t){return(t=e.fromValue(t)).floor()}},{key:"ceil",value:function(t){return(t=e.fromValue(t)).ceil()}},{key:"trunc",value:function(t){return(t=e.fromValue(t)).trunc()}},{key:"add",value:function(t,n){return(t=e.fromValue(t)).add(n)}},{key:"plus",value:function(t,n){return(t=e.fromValue(t)).add(n)}},{key:"sub",value:function(t,n){return(t=e.fromValue(t)).sub(n)}},{key:"subtract",value:function(t,n){return(t=e.fromValue(t)).sub(n)}},{key:"minus",value:function(t,n){return(t=e.fromValue(t)).sub(n)}},{key:"mul",value:function(t,n){return(t=e.fromValue(t)).mul(n)}},{key:"multiply",value:function(t,n){return(t=e.fromValue(t)).mul(n)}},{key:"times",value:function(t,n){return(t=e.fromValue(t)).mul(n)}},{key:"div",value:function(t,n){return(t=e.fromValue(t)).div(n)}},{key:"divide",value:function(t,n){return(t=e.fromValue(t)).div(n)}},{key:"recip",value:function(t){return(t=e.fromValue(t)).recip()}},{key:"reciprocal",value:function(t){return(t=e.fromValue(t)).recip()}},{key:"reciprocate",value:function(t){return(t=e.fromValue(t)).reciprocate()}},{key:"cmp",value:function(t,n){return(t=e.fromValue(t)).cmp(n)}},{key:"compare",value:function(t,n){return(t=e.fromValue(t)).cmp(n)}},{key:"eq",value:function(t,n){return(t=e.fromValue(t)).eq(n)}},{key:"equals",value:function(t,n){return(t=e.fromValue(t)).eq(n)}},{key:"neq",value:function(t,n){return(t=e.fromValue(t)).neq(n)}},{key:"notEquals",value:function(t,n){return(t=e.fromValue(t)).notEquals(n)}},{key:"lt",value:function(t,n){return(t=e.fromValue(t)).lt(n)}},{key:"lte",value:function(t,n){return(t=e.fromValue(t)).lte(n)}},{key:"gt",value:function(t,n){return(t=e.fromValue(t)).gt(n)}},{key:"gte",value:function(t,n){return(t=e.fromValue(t)).gte(n)}},{key:"max",value:function(t,n){return(t=e.fromValue(t)).max(n)}},{key:"min",value:function(t,n){return(t=e.fromValue(t)).min(n)}},{key:"cmp_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).cmp_tolerance(n,a)}},{key:"compare_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).cmp_tolerance(n,a)}},{key:"eq_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).eq_tolerance(n,a)}},{key:"equals_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).eq_tolerance(n,a)}},{key:"neq_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).neq_tolerance(n,a)}},{key:"notEquals_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).notEquals_tolerance(n,a)}},{key:"lt_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).lt_tolerance(n,a)}},{key:"lte_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).lte_tolerance(n,a)}},{key:"gt_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).gt_tolerance(n,a)}},{key:"gte_tolerance",value:function(t,n,a){return(t=e.fromValue(t)).gte_tolerance(n,a)}},{key:"log10",value:function(t){return(t=e.fromValue(t)).log10()}},{key:"log",value:function(t,n){return(t=e.fromValue(t)).log(n)}},{key:"log2",value:function(t){return(t=e.fromValue(t)).log2()}},{key:"ln",value:function(t){return(t=e.fromValue(t)).ln()}},{key:"logarithm",value:function(t,n){return(t=e.fromValue(t)).logarithm(n)}},{key:"pow10",value:function(t){return Number.isInteger(t)?e.fromMantissaExponent_noNormalize(1,t):e.fromMantissaExponent(Math.pow(10,t%1),Math.trunc(t))}},{key:"pow",value:function(t,n){return 10==t&&Number.isInteger(n)?e.fromMantissaExponent(1,n):(t=e.fromValue(t)).pow(n)}},{key:"exp",value:function(t){return(t=e.fromValue(t)).exp()}},{key:"sqr",value:function(t){return(t=e.fromValue(t)).sqr()}},{key:"sqrt",value:function(t){return(t=e.fromValue(t)).sqrt()}},{key:"cube",value:function(t){return(t=e.fromValue(t)).cube()}},{key:"cbrt",value:function(t){return(t=e.fromValue(t)).cbrt()}},{key:"affordGeometricSeries",value:function(t,n,a,i){t=e.fromValue(t),n=e.fromValue(n),a=e.fromValue(a);var r=n.mul(e.pow(a,i));return e.floor(e.log10(t.div(r).mul(a.sub(1)).add(1))/e.log10(a))}},{key:"sumGeometricSeries",value:function(t,n,a,i){return n=e.fromValue(n),a=e.fromValue(a),n.mul(e.pow(a,i)).mul(e.sub(1,e.pow(a,t))).div(e.sub(1,a))}},{key:"affordArithmeticSeries",value:function(t,n,a,i){t=e.fromValue(t),n=e.fromValue(n),a=e.fromValue(a),i=e.fromValue(i);var r=n.add(e.mul(i,a)).sub(a.div(2)),s=r.pow(2);return e.floor(r.neg().add(e.sqrt(s.add(e.mul(a,t).mul(2)))).div(a))}},{key:"sumArithmeticSeries",value:function(t,n,a,i){t=e.fromValue(t),n=e.fromValue(n),a=e.fromValue(a),i=e.fromValue(i);var r=n.add(e.mul(i,a));return e.div(t,2).mul(e.mul(2,r).plus(t.sub(1).mul(a)))}},{key:"efficiencyOfPurchase",value:function(t,n,a){return t=e.fromValue(t),n=e.fromValue(n),a=e.fromValue(a),e.add(t.div(n),t.div(a))}},{key:"randomDecimalForTesting",value:function(t){if(20*Math.random()<1)return e.fromMantissaExponent(0,0);var n=10*Math.random();10*Math.random()<1&&(n=Math.round(n)),n*=Math.sign(2*Math.random()-1);var a=Math.floor(Math.random()*t*2)-t;return e.fromMantissaExponent(n,a)}}]),e}();if("function"==typeof define&&define.amd)define(function(){return o});else if("undefined"!=typeof module&&module.exports)module.exports=o;else{e||(e="undefined"!=typeof self&&self&&self.self==self?self:Function("return this")());var l=e.Decimal;o.noConflict=function(){return e.Decimal=l,o},e.Decimal=o}}(void 0); </script> <script> /* bignumber.js v8.0.1 https://github.com/MikeMcl/bignumber.js/LICENCE */ !function(e){"use strict";var r,L=/^-?(?:\d+(?:\.\d*)?|\.\d+)(?:e[+-]?\d+)?$/i,B=Math.ceil,T=Math.floor,U="[BigNumber Error] ",I=U+"Number primitive has more than 15 significant digits: ",C=1e14,M=14,G=9007199254740991,F=[1,10,100,1e3,1e4,1e5,1e6,1e7,1e8,1e9,1e10,1e11,1e12,1e13],k=1e7,q=1e9;function j(e){var r=0|e;return 0<e||e===r?r:r-1}function $(e){for(var r,n,t=1,i=e.length,o=e[0]+"";t<i;){for(r=e[t++]+"",n=M-r.length;n--;r="0"+r);o+=r}for(i=o.length;48===o.charCodeAt(--i););return o.slice(0,i+1||1)}function z(e,r){var n,t,i=e.c,o=r.c,s=e.s,f=r.s,u=e.e,l=r.e;if(!s||!f)return null;if(n=i&&!i[0],t=o&&!o[0],n||t)return n?t?0:-f:s;if(s!=f)return s;if(n=s<0,t=u==l,!i||!o)return t?0:!i^n?1:-1;if(!t)return l<u^n?1:-1;for(f=(u=i.length)<(l=o.length)?u:l,s=0;s<f;s++)if(i[s]!=o[s])return i[s]>o[s]^n?1:-1;return u==l?0:l<u^n?1:-1}function H(e,r,n,t){if(e<r||n<e||e!==(e<0?B(e):T(e)))throw Error(U+(t||"Argument")+("number"==typeof e?e<r||n<e?" out of range: ":" not an integer: ":" not a primitive number: ")+String(e))}function V(e){var r=e.c.length-1;return j(e.e/M)==r&&e.c[r]%2!=0}function W(e,r){return(1<e.length?e.charAt(0)+"."+e.slice(1):e)+(r<0?"e":"e+")+r}function X(e,r,n){var t,i;if(r<0){for(i=n+".";++r;i+=n);e=i+e}else if(++r>(t=e.length)){for(i=n,r-=t;--r;i+=n);e+=i}else r<t&&(e=e.slice(0,r)+"."+e.slice(r));return e}(r=function e(r){var v,a,h,n,l,s,f,u,c,p,t=_.prototype={constructor:_,toString:null,valueOf:null},w=new _(1),y=20,N=4,g=-7,i=21,m=-1e7,d=1e7,O=!1,o=1,b=0,E={prefix:"",groupSize:3,secondaryGroupSize:0,groupSeparator:",",decimalSeparator:".",fractionGroupSize:0,fractionGroupSeparator:" ",suffix:""},A="0123456789abcdefghijklmnopqrstuvwxyz";function _(e,r){var n,t,i,o,s,f,u,l,c=this;if(!(c instanceof _))return new _(e,r);if(null==r){if(e instanceof _)return c.s=e.s,c.e=e.e,void(c.c=(e=e.c)?e.slice():e);if((f="number"==typeof e)&&0*e==0){if(c.s=1/e<0?(e=-e,-1):1,e===~~e){for(o=0,s=e;10<=s;s/=10,o++);return c.e=o,void(c.c=[e])}l=String(e)}else{if(l=String(e),!L.test(l))return h(c,l,f);c.s=45==l.charCodeAt(0)?(l=l.slice(1),-1):1}-1<(o=l.indexOf("."))&&(l=l.replace(".","")),0<(s=l.search(/e/i))?(o<0&&(o=s),o+=+l.slice(s+1),l=l.substring(0,s)):o<0&&(o=l.length)}else{if(H(r,2,A.length,"Base"),l=String(e),10==r)return x(c=new _(e instanceof _?e:l),y+c.e+1,N);if(f="number"==typeof e){if(0*e!=0)return h(c,l,f,r);if(c.s=1/e<0?(l=l.slice(1),-1):1,_.DEBUG&&15<l.replace(/^0\.0*|\./,"").length)throw Error(I+e);f=!1}else c.s=45===l.charCodeAt(0)?(l=l.slice(1),-1):1;for(n=A.slice(0,r),o=s=0,u=l.length;s<u;s++)if(n.indexOf(t=l.charAt(s))<0){if("."==t){if(o<s){o=u;continue}}else if(!i&&(l==l.toUpperCase()&&(l=l.toLowerCase())||l==l.toLowerCase()&&(l=l.toUpperCase()))){i=!0,s=-1,o=0;continue}return h(c,String(e),f,r)}-1<(o=(l=a(l,r,10,c.s)).indexOf("."))?l=l.replace(".",""):o=l.length}for(s=0;48===l.charCodeAt(s);s++);for(u=l.length;48===l.charCodeAt(--u););if(l=l.slice(s,++u)){if(u-=s,f&&_.DEBUG&&15<u&&(G<e||e!==T(e)))throw Error(I+c.s*e);if(d<(o=o-s-1))c.c=c.e=null;else if(o<m)c.c=[c.e=0];else{if(c.e=o,c.c=[],s=(o+1)%M,o<0&&(s+=M),s<u){for(s&&c.c.push(+l.slice(0,s)),u-=M;s<u;)c.c.push(+l.slice(s,s+=M));l=l.slice(s),s=M-l.length}else s-=u;for(;s--;l+="0");c.c.push(+l)}}else c.c=[c.e=0]}function S(e,r,n,t){var i,o,s,f,u;if(null==n?n=N:H(n,0,8),!e.c)return e.toString();if(i=e.c[0],s=e.e,null==r)u=$(e.c),u=1==t||2==t&&s<=g?W(u,s):X(u,s,"0");else if(o=(e=x(new _(e),r,n)).e,f=(u=$(e.c)).length,1==t||2==t&&(r<=o||o<=g)){for(;f<r;u+="0",f++);u=W(u,o)}else if(r-=s,u=X(u,o,"0"),f<o+1){if(0<--r)for(u+=".";r--;u+="0");}else if(0<(r+=o-f))for(o+1==f&&(u+=".");r--;u+="0");return e.s<0&&i?"-"+u:u}function R(e,r){for(var n,t=1,i=new _(e[0]);t<e.length;t++){if(!(n=new _(e[t])).s){i=n;break}r.call(i,n)&&(i=n)}return i}function P(e,r,n){for(var t=1,i=r.length;!r[--i];r.pop());for(i=r[0];10<=i;i/=10,t++);return(n=t+n*M-1)>d?e.c=e.e=null:e.c=n<m?[e.e=0]:(e.e=n,r),e}function x(e,r,n,t){var i,o,s,f,u,l,c,a=e.c,h=F;if(a){e:{for(i=1,f=a[0];10<=f;f/=10,i++);if((o=r-i)<0)o+=M,s=r,c=(u=a[l=0])/h[i-s-1]%10|0;else if((l=B((o+1)/M))>=a.length){if(!t)break e;for(;a.length<=l;a.push(0));u=c=0,s=(o%=M)-M+(i=1)}else{for(u=f=a[l],i=1;10<=f;f/=10,i++);c=(s=(o%=M)-M+i)<0?0:u/h[i-s-1]%10|0}if(t=t||r<0||null!=a[l+1]||(s<0?u:u%h[i-s-1]),t=n<4?(c||t)&&(0==n||n==(e.s<0?3:2)):5<c||5==c&&(4==n||t||6==n&&(0<o?0<s?u/h[i-s]:0:a[l-1])%10&1||n==(e.s<0?8:7)),r<1||!a[0])return a.length=0,t?(r-=e.e+1,a[0]=h[(M-r%M)%M],e.e=-r||0):a[0]=e.e=0,e;if(0==o?(a.length=l,f=1,l--):(a.length=l+1,f=h[M-o],a[l]=0<s?T(u/h[i-s]%h[s])*f:0),t)for(;;){if(0==l){for(o=1,s=a[0];10<=s;s/=10,o++);for(s=a[0]+=f,f=1;10<=s;s/=10,f++);o!=f&&(e.e++,a[0]==C&&(a[0]=1));break}if(a[l]+=f,a[l]!=C)break;a[l--]=0,f=1}for(o=a.length;0===a[--o];a.pop());}e.e>d?e.c=e.e=null:e.e<m&&(e.c=[e.e=0])}return e}function D(e){var r,n=e.e;return null===n?e.toString():(r=$(e.c),r=n<=g||i<=n?W(r,n):X(r,n,"0"),e.s<0?"-"+r:r)}return _.clone=e,_.ROUND_UP=0,_.ROUND_DOWN=1,_.ROUND_CEIL=2,_.ROUND_FLOOR=3,_.ROUND_HALF_UP=4,_.ROUND_HALF_DOWN=5,_.ROUND_HALF_EVEN=6,_.ROUND_HALF_CEIL=7,_.ROUND_HALF_FLOOR=8,_.EUCLID=9,_.config=_.set=function(e){var r,n;if(null!=e){if("object"!=typeof e)throw Error(U+"Object expected: "+e);if(e.hasOwnProperty(r="DECIMAL_PLACES")&&(H(n=e[r],0,q,r),y=n),e.hasOwnProperty(r="ROUNDING_MODE")&&(H(n=e[r],0,8,r),N=n),e.hasOwnProperty(r="EXPONENTIAL_AT")&&((n=e[r])&&n.pop?(H(n[0],-q,0,r),H(n[1],0,q,r),g=n[0],i=n[1]):(H(n,-q,q,r),g=-(i=n<0?-n:n))),e.hasOwnProperty(r="RANGE"))if((n=e[r])&&n.pop)H(n[0],-q,-1,r),H(n[1],1,q,r),m=n[0],d=n[1];else{if(H(n,-q,q,r),!n)throw Error(U+r+" cannot be zero: "+n);m=-(d=n<0?-n:n)}if(e.hasOwnProperty(r="CRYPTO")){if((n=e[r])!==!!n)throw Error(U+r+" not true or false: "+n);if(n){if("undefined"==typeof crypto||!crypto||!crypto.getRandomValues&&!crypto.randomBytes)throw O=!n,Error(U+"crypto unavailable");O=n}else O=n}if(e.hasOwnProperty(r="MODULO_MODE")&&(H(n=e[r],0,9,r),o=n),e.hasOwnProperty(r="POW_PRECISION")&&(H(n=e[r],0,q,r),b=n),e.hasOwnProperty(r="FORMAT")){if("object"!=typeof(n=e[r]))throw Error(U+r+" not an object: "+n);E=n}if(e.hasOwnProperty(r="ALPHABET")){if("string"!=typeof(n=e[r])||/^.$|[+-.\s]|(.).*\1/.test(n))throw Error(U+r+" invalid: "+n);A=n}}return{DECIMAL_PLACES:y,ROUNDING_MODE:N,EXPONENTIAL_AT:[g,i],RANGE:[m,d],CRYPTO:O,MODULO_MODE:o,POW_PRECISION:b,FORMAT:E,ALPHABET:A}},_.isBigNumber=function(e){return e instanceof _||e&&!0===e._isBigNumber||!1},_.maximum=_.max=function(){return R(arguments,t.lt)},_.minimum=_.min=function(){return R(arguments,t.gt)},_.random=(n=9007199254740992,l=Math.random()*n&2097151?function(){return T(Math.random()*n)}:function(){return 8388608*(1073741824*Math.random()|0)+(8388608*Math.random()|0)},function(e){var r,n,t,i,o,s=0,f=[],u=new _(w);if(null==e?e=y:H(e,0,q),i=B(e/M),O)if(crypto.getRandomValues){for(r=crypto.getRandomValues(new Uint32Array(i*=2));s<i;)9e15<=(o=131072*r[s]+(r[s+1]>>>11))?(n=crypto.getRandomValues(new Uint32Array(2)),r[s]=n[0],r[s+1]=n[1]):(f.push(o%1e14),s+=2);s=i/2}else{if(!crypto.randomBytes)throw O=!1,Error(U+"crypto unavailable");for(r=crypto.randomBytes(i*=7);s<i;)9e15<=(o=281474976710656*(31&r[s])+1099511627776*r[s+1]+4294967296*r[s+2]+16777216*r[s+3]+(r[s+4]<<16)+(r[s+5]<<8)+r[s+6])?crypto.randomBytes(7).copy(r,s):(f.push(o%1e14),s+=7);s=i/7}if(!O)for(;s<i;)(o=l())<9e15&&(f[s++]=o%1e14);for(i=f[--s],e%=M,i&&e&&(o=F[M-e],f[s]=T(i/o)*o);0===f[s];f.pop(),s--);if(s<0)f=[t=0];else{for(t=-1;0===f[0];f.splice(0,1),t-=M);for(s=1,o=f[0];10<=o;o/=10,s++);s<M&&(t-=M-s)}return u.e=t,u.c=f,u}),_.sum=function(){for(var e=1,r=arguments,n=new _(r[0]);e<r.length;)n=n.plus(r[e++]);return n},a=function(){var m="0123456789";function d(e,r,n,t){for(var i,o,s=[0],f=0,u=e.length;f<u;){for(o=s.length;o--;s[o]*=r);for(s[0]+=t.indexOf(e.charAt(f++)),i=0;i<s.length;i++)s[i]>n-1&&(null==s[i+1]&&(s[i+1]=0),s[i+1]+=s[i]/n|0,s[i]%=n)}return s.reverse()}return function(e,r,n,t,i){var o,s,f,u,l,c,a,h,p=e.indexOf("."),g=y,w=N;for(0<=p&&(u=b,b=0,e=e.replace(".",""),c=(h=new _(r)).pow(e.length-p),b=u,h.c=d(X($(c.c),c.e,"0"),10,n,m),h.e=h.c.length),f=u=(a=d(e,r,n,i?(o=A,m):(o=m,A))).length;0==a[--u];a.pop());if(!a[0])return o.charAt(0);if(p<0?--f:(c.c=a,c.e=f,c.s=t,a=(c=v(c,h,g,w,n)).c,l=c.r,f=c.e),p=a[s=f+g+1],u=n/2,l=l||s<0||null!=a[s+1],l=w<4?(null!=p||l)&&(0==w||w==(c.s<0?3:2)):u<p||p==u&&(4==w||l||6==w&&1&a[s-1]||w==(c.s<0?8:7)),s<1||!a[0])e=l?X(o.charAt(1),-g,o.charAt(0)):o.charAt(0);else{if(a.length=s,l)for(--n;++a[--s]>n;)a[s]=0,s||(++f,a=[1].concat(a));for(u=a.length;!a[--u];);for(p=0,e="";p<=u;e+=o.charAt(a[p++]));e=X(e,f,o.charAt(0))}return e}}(),v=function(){function S(e,r,n){var t,i,o,s,f=0,u=e.length,l=r%k,c=r/k|0;for(e=e.slice();u--;)f=((i=l*(o=e[u]%k)+(t=c*o+(s=e[u]/k|0)*l)%k*k+f)/n|0)+(t/k|0)+c*s,e[u]=i%n;return f&&(e=[f].concat(e)),e}function R(e,r,n,t){var i,o;if(n!=t)o=t<n?1:-1;else for(i=o=0;i<n;i++)if(e[i]!=r[i]){o=e[i]>r[i]?1:-1;break}return o}function P(e,r,n,t){for(var i=0;n--;)e[n]-=i,i=e[n]<r[n]?1:0,e[n]=i*t+e[n]-r[n];for(;!e[0]&&1<e.length;e.splice(0,1));}return function(e,r,n,t,i){var o,s,f,u,l,c,a,h,p,g,w,m,d,v,y,N,O,b=e.s==r.s?1:-1,E=e.c,A=r.c;if(!(E&&E[0]&&A&&A[0]))return new _(e.s&&r.s&&(E?!A||E[0]!=A[0]:A)?E&&0==E[0]||!A?0*b:b/0:NaN);for(p=(h=new _(b)).c=[],b=n+(s=e.e-r.e)+1,i||(i=C,s=j(e.e/M)-j(r.e/M),b=b/M|0),f=0;A[f]==(E[f]||0);f++);if(A[f]>(E[f]||0)&&s--,b<0)p.push(1),u=!0;else{for(v=E.length,N=A.length,b+=2,1<(l=T(i/(A[f=0]+1)))&&(A=S(A,l,i),E=S(E,l,i),N=A.length,v=E.length),d=N,w=(g=E.slice(0,N)).length;w<N;g[w++]=0);O=A.slice(),O=[0].concat(O),y=A[0],A[1]>=i/2&&y++;do{if(l=0,(o=R(A,g,N,w))<0){if(m=g[0],N!=w&&(m=m*i+(g[1]||0)),1<(l=T(m/y)))for(i<=l&&(l=i-1),a=(c=S(A,l,i)).length,w=g.length;1==R(c,g,a,w);)l--,P(c,N<a?O:A,a,i),a=c.length,o=1;else 0==l&&(o=l=1),a=(c=A.slice()).length;if(a<w&&(c=[0].concat(c)),P(g,c,w,i),w=g.length,-1==o)for(;R(A,g,N,w)<1;)l++,P(g,N<w?O:A,w,i),w=g.length}else 0===o&&(l++,g=[0]);p[f++]=l,g[0]?g[w++]=E[d]||0:(g=[E[d]],w=1)}while((d++<v||null!=g[0])&&b--);u=null!=g[0],p[0]||p.splice(0,1)}if(i==C){for(f=1,b=p[0];10<=b;b/=10,f++);x(h,n+(h.e=f+s*M-1)+1,t,u)}else h.e=s,h.r=+u;return h}}(),s=/^(-?)0([xbo])(?=\w[\w.]*$)/i,f=/^([^.]+)\.$/,u=/^\.([^.]+)$/,c=/^-?(Infinity|NaN)$/,p=/^\s*\+(?=[\w.])|^\s+|\s+$/g,h=function(e,r,n,t){var i,o=n?r:r.replace(p,"");if(c.test(o))e.s=isNaN(o)?null:o<0?-1:1,e.c=e.e=null;else{if(!n&&(o=o.replace(s,function(e,r,n){return i="x"==(n=n.toLowerCase())?16:"b"==n?2:8,t&&t!=i?e:r}),t&&(i=t,o=o.replace(f,"$1").replace(u,"0.$1")),r!=o))return new _(o,i);if(_.DEBUG)throw Error(U+"Not a"+(t?" base "+t:"")+" number: "+r);e.c=e.e=e.s=null}},t.absoluteValue=t.abs=function(){var e=new _(this);return e.s<0&&(e.s=1),e},t.comparedTo=function(e,r){return z(this,new _(e,r))},t.decimalPlaces=t.dp=function(e,r){var n,t,i;if(null!=e)return H(e,0,q),null==r?r=N:H(r,0,8),x(new _(this),e+this.e+1,r);if(!(n=this.c))return null;if(t=((i=n.length-1)-j(this.e/M))*M,i=n[i])for(;i%10==0;i/=10,t--);return t<0&&(t=0),t},t.dividedBy=t.div=function(e,r){return v(this,new _(e,r),y,N)},t.dividedToIntegerBy=t.idiv=function(e,r){return v(this,new _(e,r),0,1)},t.exponentiatedBy=t.pow=function(e,r){var n,t,i,o,s,f,u,l,c=this;if((e=new _(e)).c&&!e.isInteger())throw Error(U+"Exponent not an integer: "+D(e));if(null!=r&&(r=new _(r)),s=14<e.e,!c.c||!c.c[0]||1==c.c[0]&&!c.e&&1==c.c.length||!e.c||!e.c[0])return l=new _(Math.pow(+D(c),s?2-V(e):+D(e))),r?l.mod(r):l;if(f=e.s<0,r){if(r.c?!r.c[0]:!r.s)return new _(NaN);(t=!f&&c.isInteger()&&r.isInteger())&&(c=c.mod(r))}else{if(9<e.e&&(0<c.e||c.e<-1||(0==c.e?1<c.c[0]||s&&24e7<=c.c[1]:c.c[0]<8e13||s&&c.c[0]<=9999975e7)))return o=c.s<0&&V(e)?-0:0,-1<c.e&&(o=1/o),new _(f?1/o:o);b&&(o=B(b/M+2))}for(u=s?(n=new _(.5),f&&(e.s=1),V(e)):(i=Math.abs(+D(e)))%2,l=new _(w);;){if(u){if(!(l=l.times(c)).c)break;o?l.c.length>o&&(l.c.length=o):t&&(l=l.mod(r))}if(i){if(0===(i=T(i/2)))break;u=i%2}else if(x(e=e.times(n),e.e+1,1),14<e.e)u=V(e);else{if(0==(i=+D(e)))break;u=i%2}c=c.times(c),o?c.c&&c.c.length>o&&(c.c.length=o):t&&(c=c.mod(r))}return t?l:(f&&(l=w.div(l)),r?l.mod(r):o?x(l,b,N,void 0):l)},t.integerValue=function(e){var r=new _(this);return null==e?e=N:H(e,0,8),x(r,r.e+1,e)},t.isEqualTo=t.eq=function(e,r){return 0===z(this,new _(e,r))},t.isFinite=function(){return!!this.c},t.isGreaterThan=t.gt=function(e,r){return 0<z(this,new _(e,r))},t.isGreaterThanOrEqualTo=t.gte=function(e,r){return 1===(r=z(this,new _(e,r)))||0===r},t.isInteger=function(){return!!this.c&&j(this.e/M)>this.c.length-2},t.isLessThan=t.lt=function(e,r){return z(this,new _(e,r))<0},t.isLessThanOrEqualTo=t.lte=function(e,r){return-1===(r=z(this,new _(e,r)))||0===r},t.isNaN=function(){return!this.s},t.isNegative=function(){return this.s<0},t.isPositive=function(){return 0<this.s},t.isZero=function(){return!!this.c&&0==this.c[0]},t.minus=function(e,r){var n,t,i,o,s=this,f=s.s;if(r=(e=new _(e,r)).s,!f||!r)return new _(NaN);if(f!=r)return e.s=-r,s.plus(e);var u=s.e/M,l=e.e/M,c=s.c,a=e.c;if(!u||!l){if(!c||!a)return c?(e.s=-r,e):new _(a?s:NaN);if(!c[0]||!a[0])return a[0]?(e.s=-r,e):new _(c[0]?s:3==N?-0:0)}if(u=j(u),l=j(l),c=c.slice(),f=u-l){for((i=(o=f<0)?(f=-f,c):(l=u,a)).reverse(),r=f;r--;i.push(0));i.reverse()}else for(t=(o=(f=c.length)<(r=a.length))?f:r,f=r=0;r<t;r++)if(c[r]!=a[r]){o=c[r]<a[r];break}if(o&&(i=c,c=a,a=i,e.s=-e.s),0<(r=(t=a.length)-(n=c.length)))for(;r--;c[n++]=0);for(r=C-1;f<t;){if(c[--t]<a[t]){for(n=t;n&&!c[--n];c[n]=r);--c[n],c[t]+=C}c[t]-=a[t]}for(;0==c[0];c.splice(0,1),--l);return c[0]?P(e,c,l):(e.s=3==N?-1:1,e.c=[e.e=0],e)},t.modulo=t.mod=function(e,r){var n,t,i=this;return e=new _(e,r),!i.c||!e.s||e.c&&!e.c[0]?new _(NaN):!e.c||i.c&&!i.c[0]?new _(i):(9==o?(t=e.s,e.s=1,n=v(i,e,0,3),e.s=t,n.s*=t):n=v(i,e,0,o),(e=i.minus(n.times(e))).c[0]||1!=o||(e.s=i.s),e)},t.multipliedBy=t.times=function(e,r){var n,t,i,o,s,f,u,l,c,a,h,p,g,w,m,d=this,v=d.c,y=(e=new _(e,r)).c;if(!(v&&y&&v[0]&&y[0]))return!d.s||!e.s||v&&!v[0]&&!y||y&&!y[0]&&!v?e.c=e.e=e.s=null:(e.s*=d.s,v&&y?(e.c=[0],e.e=0):e.c=e.e=null),e;for(t=j(d.e/M)+j(e.e/M),e.s*=d.s,(u=v.length)<(a=y.length)&&(g=v,v=y,y=g,i=u,u=a,a=i),i=u+a,g=[];i--;g.push(0));for(w=C,m=k,i=a;0<=--i;){for(n=0,h=y[i]%m,p=y[i]/m|0,o=i+(s=u);i<o;)n=((l=h*(l=v[--s]%m)+(f=p*l+(c=v[s]/m|0)*h)%m*m+g[o]+n)/w|0)+(f/m|0)+p*c,g[o--]=l%w;g[o]=n}return n?++t:g.splice(0,1),P(e,g,t)},t.negated=function(){var e=new _(this);return e.s=-e.s||null,e},t.plus=function(e,r){var n,t=this,i=t.s;if(r=(e=new _(e,r)).s,!i||!r)return new _(NaN);if(i!=r)return e.s=-r,t.minus(e);var o=t.e/M,s=e.e/M,f=t.c,u=e.c;if(!o||!s){if(!f||!u)return new _(i/0);if(!f[0]||!u[0])return u[0]?e:new _(f[0]?t:0*i)}if(o=j(o),s=j(s),f=f.slice(),i=o-s){for((n=0<i?(s=o,u):(i=-i,f)).reverse();i--;n.push(0));n.reverse()}for((i=f.length)-(r=u.length)<0&&(n=u,u=f,f=n,r=i),i=0;r;)i=(f[--r]=f[r]+u[r]+i)/C|0,f[r]=C===f[r]?0:f[r]%C;return i&&(f=[i].concat(f),++s),P(e,f,s)},t.precision=t.sd=function(e,r){var n,t,i;if(null!=e&&e!==!!e)return H(e,1,q),null==r?r=N:H(r,0,8),x(new _(this),e,r);if(!(n=this.c))return null;if(t=(i=n.length-1)*M+1,i=n[i]){for(;i%10==0;i/=10,t--);for(i=n[0];10<=i;i/=10,t++);}return e&&this.e+1>t&&(t=this.e+1),t},t.shiftedBy=function(e){return H(e,-G,G),this.times("1e"+e)},t.squareRoot=t.sqrt=function(){var e,r,n,t,i,o=this,s=o.c,f=o.s,u=o.e,l=y+4,c=new _("0.5");if(1!==f||!s||!s[0])return new _(!f||f<0&&(!s||s[0])?NaN:s?o:1/0);if((n=0==(f=Math.sqrt(+D(o)))||f==1/0?(((r=$(s)).length+u)%2==0&&(r+="0"),f=Math.sqrt(+r),u=j((u+1)/2)-(u<0||u%2),new _(r=f==1/0?"1e"+u:(r=f.toExponential()).slice(0,r.indexOf("e")+1)+u)):new _(f+"")).c[0])for((f=(u=n.e)+l)<3&&(f=0);;)if(i=n,n=c.times(i.plus(v(o,i,l,1))),$(i.c).slice(0,f)===(r=$(n.c)).slice(0,f)){if(n.e<u&&--f,"9999"!=(r=r.slice(f-3,f+1))&&(t||"4999"!=r)){+r&&(+r.slice(1)||"5"!=r.charAt(0))||(x(n,n.e+y+2,1),e=!n.times(n).eq(o));break}if(!t&&(x(i,i.e+y+2,0),i.times(i).eq(o))){n=i;break}l+=4,f+=4,t=1}return x(n,n.e+y+1,N,e)},t.toExponential=function(e,r){return null!=e&&(H(e,0,q),e++),S(this,e,r,1)},t.toFixed=function(e,r){return null!=e&&(H(e,0,q),e=e+this.e+1),S(this,e,r)},t.toFormat=function(e,r,n){var t;if(null==n)null!=e&&r&&"object"==typeof r?(n=r,r=null):e&&"object"==typeof e?(n=e,e=r=null):n=E;else if("object"!=typeof n)throw Error(U+"Argument not an object: "+n);if(t=this.toFixed(e,r),this.c){var i,o=t.split("."),s=+n.groupSize,f=+n.secondaryGroupSize,u=n.groupSeparator||"",l=o[0],c=o[1],a=this.s<0,h=a?l.slice(1):l,p=h.length;if(f&&(i=s,s=f,p-=f=i),0<s&&0<p){for(i=p%s||s,l=h.substr(0,i);i<p;i+=s)l+=u+h.substr(i,s);0<f&&(l+=u+h.slice(i)),a&&(l="-"+l)}t=c?l+(n.decimalSeparator||"")+((f=+n.fractionGroupSize)?c.replace(new RegExp("\\d{"+f+"}\\B","g"),"$&"+(n.fractionGroupSeparator||"")):c):l}return(n.prefix||"")+t+(n.suffix||"")},t.toFraction=function(e){var r,n,t,i,o,s,f,u,l,c,a,h,p=this,g=p.c;if(null!=e&&(!(f=new _(e)).isInteger()&&(f.c||1!==f.s)||f.lt(w)))throw Error(U+"Argument "+(f.isInteger()?"out of range: ":"not an integer: ")+D(f));if(!g)return new _(p);for(r=new _(w),l=n=new _(w),t=u=new _(w),h=$(g),o=r.e=h.length-p.e-1,r.c[0]=F[(s=o%M)<0?M+s:s],e=!e||0<f.comparedTo(r)?0<o?r:l:f,s=d,d=1/0,f=new _(h),u.c[0]=0;c=v(f,r,0,1),1!=(i=n.plus(c.times(t))).comparedTo(e);)n=t,t=i,l=u.plus(c.times(i=l)),u=i,r=f.minus(c.times(i=r)),f=i;return i=v(e.minus(n),t,0,1),u=u.plus(i.times(l)),n=n.plus(i.times(t)),u.s=l.s=p.s,a=v(l,t,o*=2,N).minus(p).abs().comparedTo(v(u,n,o,N).minus(p).abs())<1?[l,t]:[u,n],d=s,a},t.toNumber=function(){return+D(this)},t.toPrecision=function(e,r){return null!=e&&H(e,1,q),S(this,e,r,2)},t.toString=function(e){var r,n=this.s,t=this.e;return null===t?n?(r="Infinity",n<0&&(r="-"+r)):r="NaN":(r=$(this.c),r=null==e?t<=g||i<=t?W(r,t):X(r,t,"0"):(H(e,2,A.length,"Base"),a(X(r,t,"0"),10,e,n,!0)),n<0&&this.c[0]&&(r="-"+r)),r},t.valueOf=t.toJSON=function(){return D(this)},t._isBigNumber=!0,"function"==typeof Symbol&&"symbol"==typeof Symbol.iterator&&(t[Symbol.toStringTag]="BigNumber",t[Symbol.for("nodejs.util.inspect.custom")]=t.valueOf),null!=r&&_.set(r),_}()).default=r.BigNumber=r,"function"==typeof define&&define.amd?define(function(){return r}):"undefined"!=typeof module&&module.exports?module.exports=r:(e||(e="undefined"!=typeof self&&self?self:window),e.BigNumber=r)}(this);</script>
Tests:
BigNumber
var test1 = new BigNumber(34); test1 = test1.times(34).div(4.5);
Break Infinity
var test2 = new Decimal(34); test2 = test2.times(34).div(4.5);
Rendered benchmark preparation results:
Suite status:
<idle, ready to run>
Run tests (2)
Previous results
Fork
Test case name
Result
BigNumber
Break Infinity
Fastest:
N/A
Slowest:
N/A
Latest run results:
No previous run results
This benchmark does not have any results yet. Be the first one
to run it!
Autogenerated LLM Summary
(model
llama3.2:3b
, generated one year ago):
I'll do my best to answer your question. Based on the provided benchmark results, it appears that both `BigNumber` and `Decimal` are performing similarly in terms of speed. However, there is a notable difference in the execution rate between the two. The test "Break Infinity" with `BigNumber` has an execution rate of 551884.1875 executions per second, while the same test with `Decimal` has an execution rate of 71684.6875 executions per second. This suggests that `BigNumber` is significantly faster than `Decimal` in this specific test case. On the other hand, the test "BigNumber" itself has an execution rate of 71684.6875 executions per second, which is comparable to the execution rate of the "Break Infinity" test with `Decimal`. It's worth noting that these results may not be representative of all use cases or benchmark scenarios. Additionally, the differences in execution rates between `BigNumber` and `Decimal` could be due to various factors such as implementation details, caching mechanisms, or other optimizations. To further investigate and provide a more definitive answer, I would need more information about the specific use case, implementation details, or benchmarking setup.
Related benchmarks:
Classes vs Prototype
Classes vs Prototype vs ES classes
defineProperty enum vs nonenum
ES5 setter vs func
Comments
Confirm delete:
Do you really want to delete benchmark?