| // `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 */ | |
| || x != x | |
| || inLow != inLow | |
| || inHigh != inHigh | |
| || outLow != outLow | |
| || outHigh != outHigh | |
| /* eslint-enable no-self-compare */ | |
| ) return NaN; | |
| if (x === Infinity || x === -Infinity) return x; | |
| return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow; | |
| }; |