@@ -36,7 +36,9 @@ T multiMap(T value, T* _in, T* _out, uint16_t size)
3636 if (value == _in[pos]) return _out[pos];
3737
3838 // interpolate in the right segment for the rest
39- return T (float (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ])) + _out[pos-1 ];
39+ return (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ]) + _out[pos-1 ];
40+ // if interpolation overflows use this line
41+ // return T(float(value - _in[pos-1]) * (_out[pos] - _out[pos-1]) / (_in[pos] - _in[pos-1])) + _out[pos-1];
4042}
4143
4244
@@ -83,7 +85,9 @@ T multiMapCache(T value, T* _in, T* _out, uint16_t size)
8385 else
8486 {
8587 // interpolate in the right segment for the rest
86- cache = T (float (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ])) + _out[pos-1 ];
88+ cache = (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ]) + _out[pos-1 ];
89+ // if interpolation overflows use this line
90+ // cache = T(float(value - _in[pos-1]) * (_out[pos] - _out[pos-1]) / (_in[pos] - _in[pos-1])) + _out[pos-1];
8791 }
8892 }
8993 return cache;
@@ -114,7 +118,10 @@ T multiMapBS(T value, T* _in, T* _out, uint16_t size)
114118 if (value >= _in[mid]) lower = mid;
115119 else upper = mid;
116120 }
117- return T (float (value - _in[lower]) * (_out[upper] - _out[lower]) / (_in[upper] - _in[lower])) + _out[lower];
121+ // interpolate in the right segment for the rest
122+ return (value - _in[lower]) * (_out[upper] - _out[lower]) / (_in[upper] - _in[lower]) + _out[lower];
123+ // if interpolation overflows use this line
124+ // return T(float(value - _in[lower]) * (_out[upper] - _out[lower]) / (_in[upper] - _in[lower])) + _out[lower];
118125}
119126
120127
@@ -138,7 +145,9 @@ T2 multiMap(T1 value, T1* _in, T2* _out, uint16_t size)
138145 if (value == _in[pos]) return _out[pos];
139146
140147 // interpolate in the right segment for the rest
141- return T2 (float (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ])) + _out[pos-1 ];
148+ return (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ]) + _out[pos-1 ];
149+ // if interpolation overflows use this line
150+ // return T2(float(value - _in[pos-1]) * (_out[pos] - _out[pos-1]) / (_in[pos] - _in[pos-1])) + _out[pos-1];
142151}
143152
144153
@@ -185,7 +194,9 @@ T2 multiMapCache(T1 value, T1* _in, T2* _out, uint16_t size)
185194 else
186195 {
187196 // interpolate in the right segment for the rest
188- cache = T2 (float (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ])) + _out[pos-1 ];
197+ cache = (value - _in[pos-1 ]) * (_out[pos] - _out[pos-1 ]) / (_in[pos] - _in[pos-1 ]) + _out[pos-1 ];
198+ // if interpolation overflows use this line
199+ // return T2(float(value - _in[pos-1]) * (_out[pos] - _out[pos-1]) / (_in[pos] - _in[pos-1])) + _out[pos-1];
189200 }
190201 }
191202 return cache;
@@ -215,8 +226,10 @@ T2 multiMapBS(T1 value, T1* _in, T2* _out, uint16_t size)
215226 if (value >= _in[mid]) lower = mid;
216227 else upper = mid;
217228 }
218-
219- return T2 (float (value - _in[lower]) * (_out[upper] - _out[lower]) / (_in[upper] - _in[lower])) + _out[lower];
229+ // interpolate in the right segment for the rest
230+ return (value - _in[lower]) * (_out[upper] - _out[lower]) / (_in[upper] - _in[lower]) + _out[lower];
231+ // if interpolation overflows use this line
232+ // return T2(float(value - _in[lower]) * (_out[upper] - _out[lower]) / (_in[upper] - _in[lower])) + _out[lower];
220233}
221234
222235
0 commit comments