19 lines
		
	
	
		
			684 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			19 lines
		
	
	
		
			684 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
// https://rwaldron.github.io/proposal-math-extensions/
 | 
						|
module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
 | 
						|
  if (
 | 
						|
    arguments.length === 0
 | 
						|
      // eslint-disable-next-line no-self-compare
 | 
						|
      || x != x
 | 
						|
      // eslint-disable-next-line no-self-compare
 | 
						|
      || inLow != inLow
 | 
						|
      // eslint-disable-next-line no-self-compare
 | 
						|
      || inHigh != inHigh
 | 
						|
      // eslint-disable-next-line no-self-compare
 | 
						|
      || outLow != outLow
 | 
						|
      // eslint-disable-next-line no-self-compare
 | 
						|
      || outHigh != outHigh
 | 
						|
  ) return NaN;
 | 
						|
  if (x === Infinity || x === -Infinity) return x;
 | 
						|
  return (x - inLow) * (outHigh - outLow) / (inHigh - inLow) + outLow;
 | 
						|
};
 |