Skip to content

Commit 56b90a2

Browse files
Merge pull request #7027 from dok-net/wmath_map
Fix WMath's map() implementation for inverse/round-trip mapping
2 parents 50a491b + cd5cbae commit 56b90a2

File tree

1 file changed

+5
-5
lines changed

1 file changed

+5
-5
lines changed

cores/esp8266/WMath.cpp

+5-5
Original file line numberDiff line numberDiff line change
@@ -70,11 +70,11 @@ long secureRandom(long howsmall, long howbig) {
7070
}
7171

7272
long map(long x, long in_min, long in_max, long out_min, long out_max) {
73-
long divisor = (in_max - in_min);
74-
if(divisor == 0){
75-
return -1; //AVR returns -1, SAM returns 0
76-
}
77-
return (x - in_min) * (out_max - out_min) / divisor + out_min;
73+
const long dividend = out_max - out_min;
74+
const long divisor = in_max - in_min;
75+
const long delta = x - in_min;
76+
77+
return (delta * dividend + (divisor / 2)) / divisor + out_min;
7878
}
7979

8080
unsigned int makeWord(unsigned int w) {

0 commit comments

Comments
 (0)