On Sun, Nov 27, 2011 at 4:57 AM, Andy Wickert <andrewwickert@gmail.com> wrote:
There can be a significant performance hit for doing this. Checking
whether the result of an addition overflowed is actually more
expensive than the addition itself. Checking whether a multiplication
overflowed can be even worse (particularly if you don’t have a 64-bit
integer type available).
–
Glynn Clements <glynn@gclements.plus.com>
Hm. If that’s a debilitating issue,
I agree. And it should actualy not happen or at least a warning should be given.
perhaps the overflow check could
be triggered by a flag (e.g., if the user thinks there may be a
problem)
That would be the minimum - I would even opt for an environmental variable GRASS_CHECK_OVERFLOW which provides overflow checking globally for all functions which can produce an overflow. r.mapcalc would be the obvious candidate, but there are others which can produce overflow and which should be checking for overflow as well.
GRASS_CHECK_OVERFLOW could have three values:
- unset or “NO” (default): do not check for overflow (the default as it is now)
- “error”: check and raise an error if overflow occurs
- “warning”: check and produce a warning if overflow occurs.
or (easier) some information on typing and overflow could be
placed on the man page.
I don’t think that is enough - I solved the problem on my side by using double instead of integer, but it took me some time to figure out why my results were wrong. So: Yes, there should definitely be a warning in the manual (highlighted and in Bold so that even I would have seen it…), but the option to check and raise an error on overflow should be provided.
And as an environmental variable, it could be used by all modules.
Cheers,
Rainer
Andy
–
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: Rainer@krugs.de
Skype: RMkrug