On Wednesday, May 15, 2013, Glynn Clements wrote: > > 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).
True - but is there an equivalent function to round numbers outside the integer range? Would be useful. Looking at the functions in r.mapcalc, I can't think of a way of doing this? Rainer > > -- > Glynn Clements <gl...@gclements.plus.com <javascript:;>> > _______________________________________________ > grass-dev mailing list > grass-dev@lists.osgeo.org <javascript:;> > http://lists.osgeo.org/mailman/listinfo/grass-dev > -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax (F): +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: rai...@krugs.de Skype: RMkrug
_______________________________________________ grass-dev mailing list grass-dev@lists.osgeo.org http://lists.osgeo.org/mailman/listinfo/grass-dev