diff --git a/.eslintrc b/.eslintrc index df1226625..15a93b5d8 100644 --- a/.eslintrc +++ b/.eslintrc @@ -158,6 +158,7 @@ }, ], "no-unneeded-ternary": "error", + "prefer-exponentiation-operator": "error", "spaced-comment": ["error", "always", { "block": { "balanced": true, diff --git a/src/core/colorspace.js b/src/core/colorspace.js index 8b4c567a5..317731be2 100644 --- a/src/core/colorspace.js +++ b/src/core/colorspace.js @@ -889,14 +889,14 @@ const CalGrayCS = (function CalGrayCSClosure() { // A represents a gray component of a calibrated gray space. // A <---> AG in the spec const A = src[srcOffset] * scale; - const AG = Math.pow(A, cs.G); + const AG = A ** cs.G; // Computes L as per spec. ( = cs.YW * AG ) // Except if other than default BlackPoint values are used. const L = cs.YW * AG; // http://www.poynton.com/notes/colour_and_gamma/ColorFAQ.html, Ch 4. // Convert values to rgb range [0, 255]. - const val = Math.max(295.8 * Math.pow(L, 0.333333333333333333) - 40.8, 0); + const val = Math.max(295.8 * L ** 0.333333333333333333 - 40.8, 0); dest[destOffset] = val; dest[destOffset + 1] = val; dest[destOffset + 2] = val; @@ -1026,7 +1026,7 @@ const CalRGBCS = (function CalRGBCSClosure() { const tempConvertMatrix1 = new Float32Array(3); const tempConvertMatrix2 = new Float32Array(3); - const DECODE_L_CONSTANT = Math.pow((8 + 16) / 116, 3) / 8.0; + const DECODE_L_CONSTANT = ((8 + 16) / 116) ** 3 / 8.0; function matrixProduct(a, b, result) { result[0] = a[0] * b[0] + a[1] * b[1] + a[2] * b[2]; @@ -1055,7 +1055,7 @@ const CalRGBCS = (function CalRGBCSClosure() { if (color <= 0.0031308) { return adjustToRange(0, 1, 12.92 * color); } - return adjustToRange(0, 1, (1 + 0.055) * Math.pow(color, 1 / 2.4) - 0.055); + return adjustToRange(0, 1, (1 + 0.055) * color ** (1 / 2.4) - 0.055); } function adjustToRange(min, max, value) { @@ -1067,7 +1067,7 @@ const CalRGBCS = (function CalRGBCSClosure() { return -decodeL(-L); } if (L > 8.0) { - return Math.pow((L + 16) / 116, 3); + return ((L + 16) / 116) ** 3; } return L * DECODE_L_CONSTANT; } @@ -1154,9 +1154,9 @@ const CalRGBCS = (function CalRGBCSClosure() { // A <---> AGR in the spec // B <---> BGG in the spec // C <---> CGB in the spec - const AGR = Math.pow(A, cs.GR); - const BGG = Math.pow(B, cs.GG); - const CGB = Math.pow(C, cs.GB); + const AGR = A ** cs.GR; + const BGG = B ** cs.GG; + const CGB = C ** cs.GB; // Computes intermediate variables L, M, N as per spec. // To decode X, Y, Z values map L, M, N directly to them. diff --git a/src/core/fonts.js b/src/core/fonts.js index 98e29f3b6..9ee3f2e79 100644 --- a/src/core/fonts.js +++ b/src/core/fonts.js @@ -1166,7 +1166,7 @@ var Font = (function FontClosure() { } function createPostTable(properties) { - var angle = Math.floor(properties.italicAngle * Math.pow(2, 16)); + var angle = Math.floor(properties.italicAngle * 2 ** 16); return ( "\x00\x03\x00\x00" + // Version number string32(angle) + // italicAngle diff --git a/src/core/function.js b/src/core/function.js index a7ca6e837..029058b43 100644 --- a/src/core/function.js +++ b/src/core/function.js @@ -83,7 +83,7 @@ var PDFFunction = (function PDFFunctionClosure() { var codeSize = 0; var codeBuf = 0; // 32 is a valid bps so shifting won't work - var sampleMul = 1.0 / (Math.pow(2.0, bps) - 1); + var sampleMul = 1.0 / (2.0 ** bps - 1); var strBytes = stream.getBytes((length * bps + 7) / 8); var strIdx = 0; @@ -227,7 +227,7 @@ var PDFFunction = (function PDFFunctionClosure() { samples, size, outputSize, - Math.pow(2, bps) - 1, + 2 ** bps - 1, range, ]; }, @@ -358,7 +358,7 @@ var PDFFunction = (function PDFFunctionClosure() { dest, destOffset ) { - var x = n === 1 ? src[srcOffset] : Math.pow(src[srcOffset], n); + var x = n === 1 ? src[srcOffset] : src[srcOffset] ** n; for (var j = 0; j < length; ++j) { dest[destOffset + j] = c0[j] + x * diff[j]; @@ -726,7 +726,7 @@ var PostScriptEvaluator = (function PostScriptEvaluatorClosure() { case "exp": b = stack.pop(); a = stack.pop(); - stack.push(Math.pow(a, b)); + stack.push(a ** b); break; case "false": stack.push(false); diff --git a/src/core/jpx.js b/src/core/jpx.js index 3e135be8d..be0887a6d 100644 --- a/src/core/jpx.js +++ b/src/core/jpx.js @@ -1434,7 +1434,7 @@ var JpxImage = (function JpxImageClosure() { // calculate quantization coefficient (Section E.1.1.1) var delta = reversible ? 1 - : Math.pow(2, precision + gainLog2 - epsilon) * (1 + mu / 2048); + : 2 ** (precision + gainLog2 - epsilon) * (1 + mu / 2048); var mb = guardBits + epsilon - 1; // In the first resolution level, copyCoefficients will fill the diff --git a/src/core/parser.js b/src/core/parser.js index 7f0871daf..272ec4548 100644 --- a/src/core/parser.js +++ b/src/core/parser.js @@ -948,7 +948,7 @@ class Lexer { baseValue /= divideBy; } if (eNotation) { - baseValue *= Math.pow(10, powerValueSign * powerValue); + baseValue *= 10 ** (powerValueSign * powerValue); } return sign * baseValue; }