// `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; | |
}; |