1
0
mirror of https://github.com/MikeMcl/decimal.js.git synced 2025-06-06 09:24:21 +00:00

#181 Support BigInt

This commit is contained in:
Michael Mclaughlin 2025-01-23 15:17:36 +00:00
parent cb60444aaf
commit 6df248f559
2 changed files with 158 additions and 143 deletions

View File

@ -218,8 +218,8 @@
* Return a new Decimal whose value is the value of this Decimal clamped to the range * Return a new Decimal whose value is the value of this Decimal clamped to the range
* delineated by `min` and `max`. * delineated by `min` and `max`.
* *
* min {number|string|Decimal} * min {number|string|bigInt|Decimal}
* max {number|string|Decimal} * max {number|string|bigInt|Decimal}
* *
*/ */
P.clampedTo = P.clamp = function (min, max) { P.clampedTo = P.clamp = function (min, max) {
@ -1124,7 +1124,7 @@
* log[b](Infinity) = Infinity * log[b](Infinity) = Infinity
* log[b](NaN) = NaN * log[b](NaN) = NaN
* *
* [base] {number|string|Decimal} The base of the logarithm. * [base] {number|string|bigInt|Decimal} The base of the logarithm.
* *
*/ */
P.logarithm = P.log = function (base) { P.logarithm = P.log = function (base) {
@ -1218,7 +1218,7 @@
/* /*
* Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal. * Return a new Decimal whose value is the maximum of the arguments and the value of this Decimal.
* *
* arguments {number|string|Decimal} * arguments {number|string|bigInt|Decimal}
* *
P.max = function () { P.max = function () {
Array.prototype.push.call(arguments, this); Array.prototype.push.call(arguments, this);
@ -1230,7 +1230,7 @@
/* /*
* Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal. * Return a new Decimal whose value is the minimum of the arguments and the value of this Decimal.
* *
* arguments {number|string|Decimal} * arguments {number|string|bigInt|Decimal}
* *
P.min = function () { P.min = function () {
Array.prototype.push.call(arguments, this); Array.prototype.push.call(arguments, this);
@ -2053,7 +2053,7 @@
* denominator. If a maximum denominator is not specified, the denominator will be the lowest * denominator. If a maximum denominator is not specified, the denominator will be the lowest
* value necessary to represent the number exactly. * value necessary to represent the number exactly.
* *
* [maxD] {number|string|Decimal} Maximum denominator. Integer >= 1 and < Infinity. * [maxD] {number|string|bigInt|Decimal} Maximum denominator. Integer >= 1 and < Infinity.
* *
*/ */
P.toFraction = function (maxD) { P.toFraction = function (maxD) {
@ -2141,7 +2141,7 @@
* *
* The return value is not affected by the value of `precision`. * The return value is not affected by the value of `precision`.
* *
* y {number|string|Decimal} The magnitude to round to a multiple of. * y {number|string|bigInt|Decimal} The magnitude to round to a multiple of.
* [rm] {number} Rounding mode. Integer, 0 to 8 inclusive. * [rm] {number} Rounding mode. Integer, 0 to 8 inclusive.
* *
* 'toNearest() rounding mode not an integer: {rm}' * 'toNearest() rounding mode not an integer: {rm}'
@ -2261,7 +2261,7 @@
* *
* If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place). * If a result is incorrectly rounded the maximum error will be 1 ulp (unit in last place).
* *
* y {number|string|Decimal} The power to which to raise this Decimal. * y {number|string|bigInt|Decimal} The power to which to raise this Decimal.
* *
*/ */
P.toPower = P.pow = function (y) { P.toPower = P.pow = function (y) {
@ -3522,6 +3522,8 @@
function parseDecimal(x, str) { function parseDecimal(x, str) {
var e, i, len; var e, i, len;
// TODO BigInt str: no need to check for decimal point, exponential form or leading zeros.
// Decimal point? // Decimal point?
if ((e = str.indexOf('.')) > -1) str = str.replace('.', ''); if ((e = str.indexOf('.')) > -1) str = str.replace('.', '');
@ -3989,7 +3991,7 @@
/* /*
* Return a new Decimal whose value is the absolute value of `x`. * Return a new Decimal whose value is the absolute value of `x`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function abs(x) { function abs(x) {
@ -4000,7 +4002,7 @@
/* /*
* Return a new Decimal whose value is the arccosine in radians of `x`. * Return a new Decimal whose value is the arccosine in radians of `x`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function acos(x) { function acos(x) {
@ -4012,7 +4014,7 @@
* Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to * Return a new Decimal whose value is the inverse of the hyperbolic cosine of `x`, rounded to
* `precision` significant digits using rounding mode `rounding`. * `precision` significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function acosh(x) { function acosh(x) {
@ -4024,8 +4026,8 @@
* Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant * Return a new Decimal whose value is the sum of `x` and `y`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* y {number|string|Decimal} * y {number|string|bigInt|Decimal}
* *
*/ */
function add(x, y) { function add(x, y) {
@ -4037,7 +4039,7 @@
* Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision` * Return a new Decimal whose value is the arcsine in radians of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function asin(x) { function asin(x) {
@ -4049,7 +4051,7 @@
* Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to * Return a new Decimal whose value is the inverse of the hyperbolic sine of `x`, rounded to
* `precision` significant digits using rounding mode `rounding`. * `precision` significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function asinh(x) { function asinh(x) {
@ -4061,7 +4063,7 @@
* Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision` * Return a new Decimal whose value is the arctangent in radians of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function atan(x) { function atan(x) {
@ -4073,7 +4075,7 @@
* Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to * Return a new Decimal whose value is the inverse of the hyperbolic tangent of `x`, rounded to
* `precision` significant digits using rounding mode `rounding`. * `precision` significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function atanh(x) { function atanh(x) {
@ -4088,8 +4090,8 @@
* Domain: [-Infinity, Infinity] * Domain: [-Infinity, Infinity]
* Range: [-pi, pi] * Range: [-pi, pi]
* *
* y {number|string|Decimal} The y-coordinate. * y {number|string|bigInt|Decimal} The y-coordinate.
* x {number|string|Decimal} The x-coordinate. * x {number|string|bigInt|Decimal} The x-coordinate.
* *
* atan2(±0, -0) = ±pi * atan2(±0, -0) = ±pi
* atan2(±0, +0) = ±0 * atan2(±0, +0) = ±0
@ -4154,7 +4156,7 @@
* Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant * Return a new Decimal whose value is the cube root of `x`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function cbrt(x) { function cbrt(x) {
@ -4165,7 +4167,7 @@
/* /*
* Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`. * Return a new Decimal whose value is `x` rounded to an integer using `ROUND_CEIL`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function ceil(x) { function ceil(x) {
@ -4176,9 +4178,9 @@
/* /*
* Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`. * Return a new Decimal whose value is `x` clamped to the range delineated by `min` and `max`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* min {number|string|Decimal} * min {number|string|bigInt|Decimal}
* max {number|string|Decimal} * max {number|string|bigInt|Decimal}
* *
*/ */
function clamp(x, min, max) { function clamp(x, min, max) {
@ -4252,7 +4254,7 @@
* Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant * Return a new Decimal whose value is the cosine of `x`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function cos(x) { function cos(x) {
@ -4264,7 +4266,7 @@
* Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision * Return a new Decimal whose value is the hyperbolic cosine of `x`, rounded to precision
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function cosh(x) { function cosh(x) {
@ -4284,7 +4286,7 @@
* The Decimal constructor and exported function. * The Decimal constructor and exported function.
* Return a new Decimal instance. * Return a new Decimal instance.
* *
* v {number|string|Decimal} A numeric value. * v {number|string|bigInt|Decimal} A numeric value.
* *
*/ */
function Decimal(v) { function Decimal(v) {
@ -4362,9 +4364,10 @@
} }
return; return;
}
// Infinity, NaN. // Infinity or NaN?
} else if (v * 0 !== 0) { if (v * 0 !== 0) {
if (!v) x.s = NaN; if (!v) x.s = NaN;
x.e = NaN; x.e = NaN;
x.d = null; x.d = null;
@ -4372,24 +4375,34 @@
} }
return parseDecimal(x, v.toString()); return parseDecimal(x, v.toString());
} else if (t !== 'string') {
throw Error(invalidArgument + v);
} }
// Minus sign? if (t === 'string') {
if ((i = v.charCodeAt(0)) === 45) { if ((i = v.charCodeAt(0)) === 45) { // minus sign
v = v.slice(1); v = v.slice(1);
x.s = -1; x.s = -1;
} else { } else {
// Plus sign? if (i === 43) v = v.slice(1); // plus sign
if (i === 43) v = v.slice(1);
x.s = 1; x.s = 1;
} }
return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v); return isDecimal.test(v) ? parseDecimal(x, v) : parseOther(x, v);
} }
if (t === 'bigint') {
if (v < 0) {
v = -v;
x.s = -1;
} else {
x.s = 1;
}
return parseDecimal(x, v.toString());
}
throw Error(invalidArgument + v);
}
Decimal.prototype = P; Decimal.prototype = P;
Decimal.ROUND_UP = 0; Decimal.ROUND_UP = 0;
@ -4464,8 +4477,8 @@
* Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant * Return a new Decimal whose value is `x` divided by `y`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* y {number|string|Decimal} * y {number|string|bigInt|Decimal}
* *
*/ */
function div(x, y) { function div(x, y) {
@ -4477,7 +4490,7 @@
* Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision` * Return a new Decimal whose value is the natural exponential of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} The power to which to raise the base of the natural log. * x {number|string|bigInt|Decimal} The power to which to raise the base of the natural log.
* *
*/ */
function exp(x) { function exp(x) {
@ -4488,7 +4501,7 @@
/* /*
* Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`. * Return a new Decimal whose value is `x` round to an integer using `ROUND_FLOOR`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function floor(x) { function floor(x) {
@ -4502,7 +4515,7 @@
* *
* hypot(a, b, ...) = sqrt(a^2 + b^2 + ...) * hypot(a, b, ...) = sqrt(a^2 + b^2 + ...)
* *
* arguments {number|string|Decimal} * arguments {number|string|bigInt|Decimal}
* *
*/ */
function hypot() { function hypot() {
@ -4544,7 +4557,7 @@
* Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision` * Return a new Decimal whose value is the natural logarithm of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function ln(x) { function ln(x) {
@ -4558,8 +4571,8 @@
* *
* log[y](x) * log[y](x)
* *
* x {number|string|Decimal} The argument of the logarithm. * x {number|string|bigInt|Decimal} The argument of the logarithm.
* y {number|string|Decimal} The base of the logarithm. * y {number|string|bigInt|Decimal} The base of the logarithm.
* *
*/ */
function log(x, y) { function log(x, y) {
@ -4571,7 +4584,7 @@
* Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision` * Return a new Decimal whose value is the base 2 logarithm of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function log2(x) { function log2(x) {
@ -4583,7 +4596,7 @@
* Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision` * Return a new Decimal whose value is the base 10 logarithm of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function log10(x) { function log10(x) {
@ -4594,7 +4607,7 @@
/* /*
* Return a new Decimal whose value is the maximum of the arguments. * Return a new Decimal whose value is the maximum of the arguments.
* *
* arguments {number|string|Decimal} * arguments {number|string|bigInt|Decimal}
* *
*/ */
function max() { function max() {
@ -4605,7 +4618,7 @@
/* /*
* Return a new Decimal whose value is the minimum of the arguments. * Return a new Decimal whose value is the minimum of the arguments.
* *
* arguments {number|string|Decimal} * arguments {number|string|bigInt|Decimal}
* *
*/ */
function min() { function min() {
@ -4617,8 +4630,8 @@
* Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits * Return a new Decimal whose value is `x` modulo `y`, rounded to `precision` significant digits
* using rounding mode `rounding`. * using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* y {number|string|Decimal} * y {number|string|bigInt|Decimal}
* *
*/ */
function mod(x, y) { function mod(x, y) {
@ -4630,8 +4643,8 @@
* Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant * Return a new Decimal whose value is `x` multiplied by `y`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* y {number|string|Decimal} * y {number|string|bigInt|Decimal}
* *
*/ */
function mul(x, y) { function mul(x, y) {
@ -4643,8 +4656,8 @@
* Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision * Return a new Decimal whose value is `x` raised to the power `y`, rounded to precision
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} The base. * x {number|string|bigInt|Decimal} The base.
* y {number|string|Decimal} The exponent. * y {number|string|bigInt|Decimal} The exponent.
* *
*/ */
function pow(x, y) { function pow(x, y) {
@ -4762,7 +4775,7 @@
* *
* To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL). * To emulate `Math.round`, set rounding to 7 (ROUND_HALF_CEIL).
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function round(x) { function round(x) {
@ -4778,7 +4791,7 @@
* -0 if x is -0, * -0 if x is -0,
* NaN otherwise * NaN otherwise
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function sign(x) { function sign(x) {
@ -4791,7 +4804,7 @@
* Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits * Return a new Decimal whose value is the sine of `x`, rounded to `precision` significant digits
* using rounding mode `rounding`. * using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function sin(x) { function sin(x) {
@ -4803,7 +4816,7 @@
* Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision` * Return a new Decimal whose value is the hyperbolic sine of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function sinh(x) { function sinh(x) {
@ -4815,7 +4828,7 @@
* Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant * Return a new Decimal whose value is the square root of `x`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function sqrt(x) { function sqrt(x) {
@ -4827,8 +4840,8 @@
* Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits * Return a new Decimal whose value is `x` minus `y`, rounded to `precision` significant digits
* using rounding mode `rounding`. * using rounding mode `rounding`.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* y {number|string|Decimal} * y {number|string|bigInt|Decimal}
* *
*/ */
function sub(x, y) { function sub(x, y) {
@ -4842,7 +4855,7 @@
* *
* Only the result is rounded, not the intermediate calculations. * Only the result is rounded, not the intermediate calculations.
* *
* arguments {number|string|Decimal} * arguments {number|string|bigInt|Decimal}
* *
*/ */
function sum() { function sum() {
@ -4862,7 +4875,7 @@
* Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant * Return a new Decimal whose value is the tangent of `x`, rounded to `precision` significant
* digits using rounding mode `rounding`. * digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function tan(x) { function tan(x) {
@ -4874,7 +4887,7 @@
* Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision` * Return a new Decimal whose value is the hyperbolic tangent of `x`, rounded to `precision`
* significant digits using rounding mode `rounding`. * significant digits using rounding mode `rounding`.
* *
* x {number|string|Decimal} A value in radians. * x {number|string|bigInt|Decimal} A value in radians.
* *
*/ */
function tanh(x) { function tanh(x) {
@ -4885,7 +4898,7 @@
/* /*
* Return a new Decimal whose value is `x` truncated to an integer. * Return a new Decimal whose value is `x` truncated to an integer.
* *
* x {number|string|Decimal} * x {number|string|bigInt|Decimal}
* *
*/ */
function trunc(x) { function trunc(x) {

View File

@ -254,7 +254,7 @@ li span{float:right;margin-right:10px;color:#c0c0c0}
Decimal<code class='inset'>Decimal(value) <i>&rArr; Decimal</i></code> Decimal<code class='inset'>Decimal(value) <i>&rArr; Decimal</i></code>
</h5> </h5>
<dl> <dl>
<dt><code>value</code>: <i>number|string|Decimal</i></dt> <dt><code>value</code>: <i>number|string|bigInt|Decimal</i></dt>
<dd> <dd>
A legitimate <code>value</code> is an integer or float, including <code>&plusmn;0</code>, or A legitimate <code>value</code> is an integer or float, including <code>&plusmn;0</code>, or
is <code>&plusmn;Infinity</code>, or <code>NaN</code>. is <code>&plusmn;Infinity</code>, or <code>NaN</code>.
@ -312,7 +312,9 @@ new Decimal('0x0.0c') // '0.046875'
new Decimal('0b1.1p-5') // '0.046875' new Decimal('0b1.1p-5') // '0.046875'
new Decimal('0o1.4p-5') // '0.046875' new Decimal('0o1.4p-5') // '0.046875'
new Decimal('0x1.8p-5') // '0.046875'</pre>
new Decimal(123456000n) // '123456000'
new Decimal(BigInt('-1')) // '-1'</pre>
@ -322,7 +324,7 @@ new Decimal('0x1.8p-5') // '0.046875'</pre>
<h5 id="Dabs">abs<code class='inset'>.abs(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dabs">abs<code class='inset'>.abs(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#abs'>absoluteValue</a></code>.</p> <p>See <code><a href='#abs'>absoluteValue</a></code>.</p>
<pre>a = Decimal.abs(x) <pre>a = Decimal.abs(x)
b = new Decimal(x).abs() b = new Decimal(x).abs()
@ -331,7 +333,7 @@ a.equals(b) // true</pre>
<h5 id="Dacos">acos<code class='inset'>.acos(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dacos">acos<code class='inset'>.acos(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#acos'>inverseCosine</a></code>.</p> <p>See <code><a href='#acos'>inverseCosine</a></code>.</p>
<pre>a = Decimal.acos(x) <pre>a = Decimal.acos(x)
b = new Decimal(x).acos() b = new Decimal(x).acos()
@ -340,7 +342,7 @@ a.equals(b) // true</pre>
<h5 id="Dacosh">acosh<code class='inset'>.acosh(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dacosh">acosh<code class='inset'>.acosh(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#acos'>inverseHyperbolicCosine</a></code>.</p> <p>See <code><a href='#acos'>inverseHyperbolicCosine</a></code>.</p>
<pre>a = Decimal.acosh(x) <pre>a = Decimal.acosh(x)
b = new Decimal(x).acosh() b = new Decimal(x).acosh()
@ -350,8 +352,8 @@ a.equals(b) // true</pre>
<h5 id="Dadd">add<code class='inset'>.add(x, y) <i>&rArr; Decimal</i></code></h5> <h5 id="Dadd">add<code class='inset'>.add(x, y) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#add'>plus</a></code>.</p> <p>See <code><a href='#add'>plus</a></code>.</p>
<pre>a = Decimal.add(x, y) <pre>a = Decimal.add(x, y)
@ -361,7 +363,7 @@ a.equals(b) // true</pre>
<h5 id="Dasin">asin<code class='inset'>.asin(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dasin">asin<code class='inset'>.asin(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#asin'>inverseSine</a></code>.</p> <p>See <code><a href='#asin'>inverseSine</a></code>.</p>
<pre>a = Decimal.asin(x) <pre>a = Decimal.asin(x)
b = new Decimal(x).asin() b = new Decimal(x).asin()
@ -370,7 +372,7 @@ a.equals(b) // true</pre>
<h5 id="Dasinh">asinh<code class='inset'>.asinh(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dasinh">asinh<code class='inset'>.asinh(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#asin'>inverseHyperbolicSine</a></code>.</p> <p>See <code><a href='#asin'>inverseHyperbolicSine</a></code>.</p>
<pre>a = Decimal.asinh(x) <pre>a = Decimal.asinh(x)
b = new Decimal(x).asinh() b = new Decimal(x).asinh()
@ -379,7 +381,7 @@ a.equals(b) // true</pre>
<h5 id="Datan">atan<code class='inset'>.atan(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Datan">atan<code class='inset'>.atan(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#atan'>inverseTangent</a></code>.</p> <p>See <code><a href='#atan'>inverseTangent</a></code>.</p>
<pre>a = Decimal.atan(x) <pre>a = Decimal.atan(x)
b = new Decimal(x).atan() b = new Decimal(x).atan()
@ -388,7 +390,7 @@ a.equals(b) // true</pre>
<h5 id="Datanh">atanh<code class='inset'>.atanh(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Datanh">atanh<code class='inset'>.atanh(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#atan'>inverseHyperbolicTangent</a></code>.</p> <p>See <code><a href='#atan'>inverseHyperbolicTangent</a></code>.</p>
<pre>a = Decimal.atanh(x) <pre>a = Decimal.atanh(x)
b = new Decimal(x).atanh() b = new Decimal(x).atanh()
@ -398,8 +400,8 @@ a.equals(b) // true</pre>
<h5 id="Datan2">atan2<code class='inset'>.atan2(y, x) <i>&rArr; Decimal</i></code></h5> <h5 id="Datan2">atan2<code class='inset'>.atan2(y, x) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>y</code>: <i>number|string|Decimal</i><br /> <code>y</code>: <i>number|string|bigInt|Decimal</i><br />
<code>x</code>: <i>number|string|Decimal</i> <code>x</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p> <p>
Returns a new Decimal whose value is the inverse tangent in radians of the quotient of Returns a new Decimal whose value is the inverse tangent in radians of the quotient of
@ -423,7 +425,7 @@ a.equals(b) // true</pre>
<h5 id="Dcbrt">cbrt<code class='inset'>.cbrt(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dcbrt">cbrt<code class='inset'>.cbrt(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#cbrt'>cubeRoot</a></code>.</p> <p>See <code><a href='#cbrt'>cubeRoot</a></code>.</p>
<pre>a = Decimal.cbrt(x) <pre>a = Decimal.cbrt(x)
b = new Decimal(x).cbrt() b = new Decimal(x).cbrt()
@ -432,7 +434,7 @@ a.equals(b) // true</pre>
<h5 id="Dceil">ceil<code class='inset'>.ceil(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dceil">ceil<code class='inset'>.ceil(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#ceil'>ceil</a></code>.</p> <p>See <code><a href='#ceil'>ceil</a></code>.</p>
<pre>a = Decimal.ceil(x) <pre>a = Decimal.ceil(x)
b = new Decimal(x).ceil() b = new Decimal(x).ceil()
@ -442,8 +444,8 @@ a.equals(b) // true</pre>
<h5 id="Dclamp">clamp<code class='inset'>.clamp(min, max) <i>&rArr; Decimal</i></code></h5> <h5 id="Dclamp">clamp<code class='inset'>.clamp(min, max) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>min</code>: <i>number|string|Decimal</i><br /> <code>min</code>: <i>number|string|bigInt|Decimal</i><br />
<code>max</code>: <i>number|string|Decimal</i> <code>max</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#clamp'>clampedTo</a></code>.</p> <p>See <code><a href='#clamp'>clampedTo</a></code>.</p>
<pre>Decimal.clamp(10.1, 0, 10) // '10'</pre> <pre>Decimal.clamp(10.1, 0, 10) // '10'</pre>
@ -488,7 +490,7 @@ D2 = Decimal.clone({ defaults: true, precision: 50 })</pre>
<h5 id="Dcos">cos<code class='inset'>.cos(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dcos">cos<code class='inset'>.cos(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#cos'>cosine</a></code>.</p> <p>See <code><a href='#cos'>cosine</a></code>.</p>
<pre>a = Decimal.cos(x) <pre>a = Decimal.cos(x)
b = new Decimal(x).cos() b = new Decimal(x).cos()
@ -497,7 +499,7 @@ a.equals(b) // true</pre>
<h5 id="Dcosh">cosh<code class='inset'>.cosh(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dcosh">cosh<code class='inset'>.cosh(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#cos'>hyperbolicCosine</a></code>.</p> <p>See <code><a href='#cos'>hyperbolicCosine</a></code>.</p>
<pre>a = Decimal.cosh(x) <pre>a = Decimal.cosh(x)
b = new Decimal(x).cosh() b = new Decimal(x).cosh()
@ -507,8 +509,8 @@ a.equals(b) // true</pre>
<h5 id="Ddiv">div<code class='inset'>.div(x, y) <i>&rArr; Decimal</i></code></h5> <h5 id="Ddiv">div<code class='inset'>.div(x, y) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#div'>dividedBy</a></code>.</p> <p>See <code><a href='#div'>dividedBy</a></code>.</p>
<pre>a = Decimal.div(x, y) <pre>a = Decimal.div(x, y)
@ -518,7 +520,7 @@ a.equals(b) // true</pre>
<h5 id="Dexp">exp<code class='inset'>.exp(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dexp">exp<code class='inset'>.exp(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#exp'>naturalExponential</a></code>.</p> <p>See <code><a href='#exp'>naturalExponential</a></code>.</p>
<pre>a = Decimal.exp(x) <pre>a = Decimal.exp(x)
b = new Decimal(x).exp() b = new Decimal(x).exp()
@ -527,7 +529,7 @@ a.equals(b) // true</pre>
<h5 id="Dfloor">floor<code class='inset'>.floor(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dfloor">floor<code class='inset'>.floor(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#floor'>floor</a></code>.</p> <p>See <code><a href='#floor'>floor</a></code>.</p>
<pre>a = Decimal.floor(x) <pre>a = Decimal.floor(x)
b = new Decimal(x).floor() b = new Decimal(x).floor()
@ -539,8 +541,8 @@ a.equals(b) // true</pre>
hypot<code class='inset'>.hypot([x [, y, ...]]) <i>&rArr; Decimal</i></code> hypot<code class='inset'>.hypot([x [, y, ...]]) <i>&rArr; Decimal</i></code>
</h5> </h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p> <p>
Returns a new Decimal whose value is the square root of the sum of the squares of the Returns a new Decimal whose value is the square root of the sum of the squares of the
@ -552,7 +554,7 @@ a.equals(b) // true</pre>
<h5 id="Dln">ln<code class='inset'>.ln(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dln">ln<code class='inset'>.ln(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#ln'>naturalLogarithm</a></code>.</p> <p>See <code><a href='#ln'>naturalLogarithm</a></code>.</p>
<pre>a = Decimal.ln(x) <pre>a = Decimal.ln(x)
b = new Decimal(x).ln() b = new Decimal(x).ln()
@ -578,8 +580,8 @@ Decimal.isDecimal(b) // false</pre>
<h5 id="Dlog">log<code class='inset'>.log(x [, base]) <i>&rArr; Decimal</i></code></h5> <h5 id="Dlog">log<code class='inset'>.log(x [, base]) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>base</code>: <i>number|string|Decimal</i> <code>base</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#log'>logarithm</a></code>.</p> <p>See <code><a href='#log'>logarithm</a></code>.</p>
<p> <p>
@ -593,7 +595,7 @@ a.equals(b) // true</pre>
<h5 id="Dlog2">log2<code class='inset'>.log2(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dlog2">log2<code class='inset'>.log2(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the base <code>2</code> logarithm of <code>x</code>, Returns a new Decimal whose value is the base <code>2</code> logarithm of <code>x</code>,
rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding
@ -604,7 +606,7 @@ a.equals(b) // true</pre>
<h5 id="Dlog10">log10<code class='inset'>.log10(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dlog10">log10<code class='inset'>.log10(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the base <code>10</code> logarithm of <code>x</code>, Returns a new Decimal whose value is the base <code>10</code> logarithm of <code>x</code>,
rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding
@ -618,8 +620,8 @@ a.equals(b) // true</pre>
max<code class='inset'>.max(x [, y, ...]) <i>&rArr; Decimal</i></code> max<code class='inset'>.max(x [, y, ...]) <i>&rArr; Decimal</i></code>
</h5> </h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>Returns a new Decimal whose value is the maximum of the <code>arguments</code>.</p> <p>Returns a new Decimal whose value is the maximum of the <code>arguments</code>.</p>
<pre>r = Decimal.max(x, y, z)</pre> <pre>r = Decimal.max(x, y, z)</pre>
@ -630,8 +632,8 @@ a.equals(b) // true</pre>
min<code class='inset'>.min(x [, y, ...]) <i>&rArr; Decimal</i></code> min<code class='inset'>.min(x [, y, ...]) <i>&rArr; Decimal</i></code>
</h5> </h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>Returns a new Decimal whose value is the minimum of the <code>arguments</code>.</p> <p>Returns a new Decimal whose value is the minimum of the <code>arguments</code>.</p>
<pre>r = Decimal.min(x, y, z)</pre> <pre>r = Decimal.min(x, y, z)</pre>
@ -640,8 +642,8 @@ a.equals(b) // true</pre>
<h5 id="Dmod">mod<code class='inset'>.mod(x, y) <i>&rArr; Decimal</i></code></h5> <h5 id="Dmod">mod<code class='inset'>.mod(x, y) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#mod'>modulo</a></code>.</p> <p>See <code><a href='#mod'>modulo</a></code>.</p>
<pre>a = Decimal.mod(x, y) <pre>a = Decimal.mod(x, y)
@ -652,8 +654,8 @@ a.equals(b) // true</pre>
<h5 id="Dmul">mul<code class='inset'>.mul(x, y) <i>&rArr; Decimal</i></code></h5> <h5 id="Dmul">mul<code class='inset'>.mul(x, y) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#mul'>times</a></code>.</p> <p>See <code><a href='#mul'>times</a></code>.</p>
<pre>a = Decimal.mul(x, y) <pre>a = Decimal.mul(x, y)
@ -685,8 +687,8 @@ a.equals(b) // true</pre>
<h5 id="Dpow">pow<code class='inset'>.pow(base, exponent) <i>&rArr; Decimal</i></code></h5> <h5 id="Dpow">pow<code class='inset'>.pow(base, exponent) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>base</code>: <i>number|string|Decimal</i><br /> <code>base</code>: <i>number|string|bigInt|Decimal</i><br />
<code>exponent</code>: <i>number|string|Decimal</i> <code>exponent</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href="#pow">toPower</a></code>.</p> <p>See <code><a href="#pow">toPower</a></code>.</p>
<pre>a = Decimal.pow(x, y) <pre>a = Decimal.pow(x, y)
@ -735,7 +737,7 @@ Decimal.random(20) // '0.78193327636914089009'</pre>
<h5 id="Dround">round<code class='inset'>.round(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dround">round<code class='inset'>.round(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#round'>round</a></code>.</p> <p>See <code><a href='#round'>round</a></code>.</p>
<pre>a = Decimal.round(x) <pre>a = Decimal.round(x)
b = new Decimal(x).round() b = new Decimal(x).round()
@ -792,7 +794,7 @@ Decimal.set({ precision: 50, defaults: true })</pre>
<h5 id="Dsign">sign<code class='inset'>.sign(x) <i>&rArr; number</i></code></h5> <h5 id="Dsign">sign<code class='inset'>.sign(x) <i>&rArr; number</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<table> <table>
<tr><th>Returns</th><th>&nbsp;</th></tr> <tr><th>Returns</th><th>&nbsp;</th></tr>
<tr> <tr>
@ -821,7 +823,7 @@ Decimal.set({ precision: 50, defaults: true })</pre>
<h5 id="Dsin">sin<code class='inset'>.sin(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dsin">sin<code class='inset'>.sin(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#sin'>sine</a></code>.</p> <p>See <code><a href='#sin'>sine</a></code>.</p>
<pre>a = Decimal.sin(x) <pre>a = Decimal.sin(x)
b = new Decimal(x).sin() b = new Decimal(x).sin()
@ -830,7 +832,7 @@ a.equals(b) // true</pre>
<h5 id="Dsinh">sinh<code class='inset'>.sinh(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dsinh">sinh<code class='inset'>.sinh(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#sin'>hyperbolicSine</a></code>.</p> <p>See <code><a href='#sin'>hyperbolicSine</a></code>.</p>
<pre>a = Decimal.sinh(x) <pre>a = Decimal.sinh(x)
b = new Decimal(x).sinh() b = new Decimal(x).sinh()
@ -839,7 +841,7 @@ a.equals(b) // true</pre>
<h5 id="Dsqrt">sqrt<code class='inset'>.sqrt(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dsqrt">sqrt<code class='inset'>.sqrt(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <a href='#sqrt'>squareRoot</a>.</p> <p>See <a href='#sqrt'>squareRoot</a>.</p>
<pre>a = Decimal.sqrt(x) <pre>a = Decimal.sqrt(x)
b = new Decimal(x).sqrt() b = new Decimal(x).sqrt()
@ -849,8 +851,8 @@ a.equals(b) // true</pre>
<h5 id="Dsub">sub<code class='inset'>.sub(x, y) <i>&rArr; Decimal</i></code></h5> <h5 id="Dsub">sub<code class='inset'>.sub(x, y) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p>See <code><a href='#sub'>minus</a></code>.</p> <p>See <code><a href='#sub'>minus</a></code>.</p>
<pre>a = Decimal.sub(x, y) <pre>a = Decimal.sub(x, y)
@ -861,8 +863,8 @@ a.equals(b) // true</pre>
<h5 id="Dsum">sum<code class='inset'>.sum(x [, y, ...]) <i>&rArr; Decimal</i></code></h5> <h5 id="Dsum">sum<code class='inset'>.sum(x [, y, ...]) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>y</code>: <i>number|string|Decimal</i> <code>y</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p> <p>
Returns a new Decimal whose value is the sum of the <code>arguments</code>, Returns a new Decimal whose value is the sum of the <code>arguments</code>,
@ -879,7 +881,7 @@ Decimal.sum(x, y, z) // '10'</pre>
<h5 id="Dtan">tan<code class='inset'>.tan(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dtan">tan<code class='inset'>.tan(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#tan'>tangent</a></code>.</p> <p>See <code><a href='#tan'>tangent</a></code>.</p>
<pre>a = Decimal.tan(x) <pre>a = Decimal.tan(x)
b = new Decimal(x).tan() b = new Decimal(x).tan()
@ -888,7 +890,7 @@ a.equals(b) // true</pre>
<h5 id="Dtanh">tanh<code class='inset'>.tanh(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dtanh">tanh<code class='inset'>.tanh(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#tan'>hyperbolicTangent</a></code>.</p> <p>See <code><a href='#tan'>hyperbolicTangent</a></code>.</p>
<pre>a = Decimal.tanh(x) <pre>a = Decimal.tanh(x)
b = new Decimal(x).tanh() b = new Decimal(x).tanh()
@ -897,7 +899,7 @@ a.equals(b) // true</pre>
<h5 id="Dtrunc">trunc<code class='inset'>.trunc(x) <i>&rArr; Decimal</i></code></h5> <h5 id="Dtrunc">trunc<code class='inset'>.trunc(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p>See <code><a href='#trunc'>truncated</a></code>.</p> <p>See <code><a href='#trunc'>truncated</a></code>.</p>
<pre>a = Decimal.trunc(x) <pre>a = Decimal.trunc(x)
b = new Decimal(x).trunc() b = new Decimal(x).trunc()
@ -1282,8 +1284,8 @@ y.ceil() // '-1'</pre>
<h5 id="clamp">clampedTo<code class='inset'>.clamp(min, max) <i>&rArr; Decimal</i></code></h5> <h5 id="clamp">clampedTo<code class='inset'>.clamp(min, max) <i>&rArr; Decimal</i></code></h5>
<p> <p>
<code>min</code>: <i>number|string|Decimal</i><br /> <code>min</code>: <i>number|string|bigInt|Decimal</i><br />
<code>max</code>: <i>number|string|Decimal</i> <code>max</code>: <i>number|string|bigInt|Decimal</i>
</p> </p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal clamped to the range Returns a new Decimal whose value is the value of this Decimal clamped to the range
@ -1303,7 +1305,7 @@ x.clamp(-10, -0.1) // '-0.1'</pre>
<h5 id="cmp">comparedTo<code class='inset'>.cmp(x) <i>&rArr; number</i></code></h5> <h5 id="cmp">comparedTo<code class='inset'>.cmp(x) <i>&rArr; number</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<table> <table>
<tr><th>Returns</th><th>&nbsp;</th></tr> <tr><th>Returns</th><th>&nbsp;</th></tr>
<tr> <tr>
@ -1383,7 +1385,7 @@ y.dp() // '6'</pre>
<h5 id="div">dividedBy<code class='inset'>.div(x) <i>&rArr; Decimal</i></code></h5> <h5 id="div">dividedBy<code class='inset'>.div(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal divided by <code>x</code>, Returns a new Decimal whose value is the value of this Decimal divided by <code>x</code>,
rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding
@ -1400,7 +1402,7 @@ x.div(5) // '71'</pre>
<h5 id="divToInt"> <h5 id="divToInt">
dividedToIntegerBy<code class='inset'>.divToInt(x) <i>&rArr; Decimal</i></code> dividedToIntegerBy<code class='inset'>.divToInt(x) <i>&rArr; Decimal</i></code>
</h5> </h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Return a new Decimal whose value is the integer part of dividing this Decimal by Return a new Decimal whose value is the integer part of dividing this Decimal by
<code>x</code>, rounded to <code><a href='#precision'>precision</a></code> significant digits <code>x</code>, rounded to <code><a href='#precision'>precision</a></code> significant digits
@ -1415,7 +1417,7 @@ x.divToInt(0.7) // '7'</pre>
<h5 id="eq">equals<code class='inset'>.eq(x) <i>&rArr; boolean</i></code></h5> <h5 id="eq">equals<code class='inset'>.eq(x) <i>&rArr; boolean</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns <code>true</code> if the value of this Decimal equals the value of <code>x</code>, Returns <code>true</code> if the value of this Decimal equals the value of <code>x</code>,
otherwise returns <code>false</code>.<br /> As with JavaScript, <code>NaN</code> does not otherwise returns <code>false</code>.<br /> As with JavaScript, <code>NaN</code> does not
@ -1451,7 +1453,7 @@ y.floor() // '-2'</pre>
<h5 id="gt">greaterThan<code class='inset'>.gt(x) <i>&rArr; boolean</i></code></h5> <h5 id="gt">greaterThan<code class='inset'>.gt(x) <i>&rArr; boolean</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns <code>true</code> if the value of this Decimal is greater than the value of Returns <code>true</code> if the value of this Decimal is greater than the value of
<code>x</code>, otherwise returns <code>false</code>. <code>x</code>, otherwise returns <code>false</code>.
@ -1468,7 +1470,7 @@ new Decimal(0).gt(x) // false</pre>
<h5 id="gte"> <h5 id="gte">
greaterThanOrEqualTo<code class='inset'>.gte(x) <i>&rArr; boolean</i></code> greaterThanOrEqualTo<code class='inset'>.gte(x) <i>&rArr; boolean</i></code>
</h5> </h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns <code>true</code> if the value of this Decimal is greater than or equal to the value Returns <code>true</code> if the value of this Decimal is greater than or equal to the value
of <code>x</code>, otherwise returns <code>false</code>. of <code>x</code>, otherwise returns <code>false</code>.
@ -1748,7 +1750,7 @@ y.isZero() // false</pre>
<h5 id="lt">lessThan<code class='inset'>.lt(x) <i>&rArr; boolean</i></code></h5> <h5 id="lt">lessThan<code class='inset'>.lt(x) <i>&rArr; boolean</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns <code>true</code> if the value of this Decimal is less than the value of Returns <code>true</code> if the value of this Decimal is less than the value of
<code>x</code>, otherwise returns <code>false</code>. <code>x</code>, otherwise returns <code>false</code>.
@ -1763,7 +1765,7 @@ new Decimal(0).lt(x) // true</pre>
<h5 id="lte">lessThanOrEqualTo<code class='inset'>.lte(x) <i>&rArr; boolean</i></code></h5> <h5 id="lte">lessThanOrEqualTo<code class='inset'>.lte(x) <i>&rArr; boolean</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns <code>true</code> if the value of this Decimal is less than or equal to the value of Returns <code>true</code> if the value of this Decimal is less than or equal to the value of
<code>x</code>, otherwise returns <code>false</code>. <code>x</code>, otherwise returns <code>false</code>.
@ -1778,7 +1780,7 @@ new Decimal(-1).lte(x) // true</pre>
<h5 id="log">logarithm<code class='inset'>.log(x) <i>&rArr; Decimal</i></code></h5> <h5 id="log">logarithm<code class='inset'>.log(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the base <code>x</code> logarithm of the value of this Returns a new Decimal whose value is the base <code>x</code> logarithm of the value of this
Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using Decimal, rounded to <a href='#precision'><code>precision</code></a> significant digits using
@ -1810,7 +1812,7 @@ y.log(2) // '8'</pre>
<h5 id="sub">minus<code class='inset'>.minus(x) <i>&rArr; Decimal</i></code></h5> <h5 id="sub">minus<code class='inset'>.minus(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal minus <code>x</code>, rounded Returns a new Decimal whose value is the value of this Decimal minus <code>x</code>, rounded
to <a href='#precision'><code>precision</code></a> significant digits using rounding mode to <a href='#precision'><code>precision</code></a> significant digits using rounding mode
@ -1824,7 +1826,7 @@ x.minus(0.1) // '0.2'</pre>
<h5 id="mod">modulo<code class='inset'>.mod(x) <i>&rArr; Decimal</i></code></h5> <h5 id="mod">modulo<code class='inset'>.mod(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal modulo <code>x</code>, Returns a new Decimal whose value is the value of this Decimal modulo <code>x</code>,
rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding
@ -1931,7 +1933,7 @@ y.neg() // '1.3'</pre>
<h5 id="add">plus<code class='inset'>.plus(x) <i>&rArr; Decimal</i></code></h5> <h5 id="add">plus<code class='inset'>.plus(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal plus <code>x</code>, rounded to Returns a new Decimal whose value is the value of this Decimal plus <code>x</code>, rounded to
<a href='#precision'><code>precision</code></a> significant digits using rounding mode <a href='#precision'><code>precision</code></a> significant digits using rounding mode
@ -2042,7 +2044,7 @@ y.tan() // '0.93159645994407246117'</pre>
<h5 id="mul">times<code class='inset'>.times(x) <i>&rArr; Decimal</i></code></h5> <h5 id="mul">times<code class='inset'>.times(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i></p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i></p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal times <code>x</code>, Returns a new Decimal whose value is the value of this Decimal times <code>x</code>,
rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding rounded to <a href='#precision'><code>precision</code></a> significant digits using rounding
@ -2209,7 +2211,7 @@ y.toFixed(5) // '3.45600'</pre>
<code class='inset'>.toFraction([max_denominator]) <i>&rArr; [Decimal, Decimal]</i></code> <code class='inset'>.toFraction([max_denominator]) <i>&rArr; [Decimal, Decimal]</i></code>
</h5> </h5>
<p> <p>
<code>max_denominator</code>: <i>number|string|Decimal</i>: <code>1</code> &gt;= integer &lt; <code>max_denominator</code>: <i>number|string|bigInt|Decimal</i>: <code>1</code> &gt;= integer &lt;
<code>Infinity</code> <code>Infinity</code>
</p> </p>
<p> <p>
@ -2275,7 +2277,7 @@ x.toHex(1) // '0x1p+8'</pre>
toNearest<code class='inset'>.toNearest(x [, rm]) <i>&rArr; Decimal</i></code> toNearest<code class='inset'>.toNearest(x [, rm]) <i>&rArr; Decimal</i></code>
</h5> </h5>
<p> <p>
<code>x</code>: <i>number|string|Decimal</i><br /> <code>x</code>: <i>number|string|bigInt|Decimal</i><br />
<code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive <code>rm</code>: <i>number</i>: integer, <code>0</code> to <code>8</code> inclusive
</p> </p>
<p> <p>
@ -2353,7 +2355,7 @@ x.toOctal(1) // '0o1p+8'</pre>
<h5 id="pow">toPower<code class='inset'>.pow(x) <i>&rArr; Decimal</i></code></h5> <h5 id="pow">toPower<code class='inset'>.pow(x) <i>&rArr; Decimal</i></code></h5>
<p><code>x</code>: <i>number|string|Decimal</i>: integer or non-integer</p> <p><code>x</code>: <i>number|string|bigInt|Decimal</i>: integer or non-integer</p>
<p> <p>
Returns a new Decimal whose value is the value of this Decimal raised to the power Returns a new Decimal whose value is the value of this Decimal raised to the power
<code>x</code>, rounded to <a href='#precision'><code>precision</code></a> significant digits <code>x</code>, rounded to <a href='#precision'><code>precision</code></a> significant digits