[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