| | |
| | | // `Math.scale` method implementation |
| | | // https://rwaldron.github.io/proposal-math-extensions/ |
| | | module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) { |
| | | if ( |
| | | arguments.length === 0 |
| | | /* eslint-disable no-self-compare -- NaN check */ |
| | | || x != x |
| | | || inLow != inLow |
| | | || inHigh != inHigh |
| | | || outLow != outLow |
| | | || outHigh != outHigh |
| | | /* eslint-enable no-self-compare -- NaN check */ |
| | | ) return NaN; |
| | | if (x === Infinity || x === -Infinity) return x; |
| | | return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow; |
| | | var nx = +x; |
| | | var nInLow = +inLow; |
| | | var nInHigh = +inHigh; |
| | | var nOutLow = +outLow; |
| | | var nOutHigh = +outHigh; |
| | | // eslint-disable-next-line no-self-compare -- NaN check |
| | | if (nx != nx || nInLow != nInLow || nInHigh != nInHigh || nOutLow != nOutLow || nOutHigh != nOutHigh) return NaN; |
| | | if (nx === Infinity || nx === -Infinity) return nx; |
| | | return (nx - nInLow) * (nOutHigh - nOutLow) / (nInHigh - nInLow) + nOutLow; |
| | | }; |