15 lines
		
	
	
		
			621 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			15 lines
		
	
	
		
			621 B
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| 'use strict';
 | |
| // `Math.scale` method implementation
 | |
| // https://rwaldron.github.io/proposal-math-extensions/
 | |
| module.exports = Math.scale || function scale(x, inLow, inHigh, outLow, outHigh) {
 | |
|   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;
 | |
| };
 | 
