[GRASS-dev] Overflow warning in r.mapcalc calculation
Glynn Clements
glynn at gclements.plus.com
Wed May 15 09:16:18 PDT 2013
Paulo van Breugel wrote:
> I am having trouble with the following computation, which gives me an
> overflow warning ("WARNING: Overflow occured in the calculation").
>
> r.mapcalc "A = if(B==0, (round(C/0.0001)-1175699902)/(3007966667-1175699902) *100.0, 1)" --overwrite
>
>
> whereby C is a map with values between 1 and 31000. It seems to be
> related to the size of the numbers (no warning if I divide C by 0.001),
> but I am not clear what limit I am hitting here or how to avoid this.
>
> The warning does not stop the calculation, and the resulting map seems
> to be correct. However, I rather avoid this warning, also because the
> warning message causes problems when running in batch from within R.
The round() function always returns an integer, regardless of its
argument types. Integers are always 32-bit, so the result is limited
to the range +/- 2147483647 (2^31-1).
--
Glynn Clements <glynn at gclements.plus.com>
More information about the grass-dev
mailing list