Integer overflow

How to avoid issues like integer overflow in models based on differential equations with some states values ranging from 10^12 to 10^-12 ?

use floating point numbers instead of integers. E.G. 1e12 (or 10.0^12)

6 Likes

Perhaps this?

help?> Base.Checked
  Checked

  The Checked module provides arithmetic functions for the built-in
  signed and unsigned Integer types which throw an error when an
  overflow occurs. They are named like checked_sub, checked_div, etc.
  In addition, add_with_overflow, sub_with_overflow,
  mul_with_overflow return both the unchecked results and a boolean
  value denoting the presence of an overflow.

Also discussed here.

I think the simplest solution in this case is to use floating point numbers, as mentioned in the first reply. Although I don’t know the details, I guess that Float64 is used throughout the computation anyway. Checked arithmetic for integers introduces more complication than necessary.

For values up to 10^12 an Int64 is fine, 10^12 uses roughly 40 bits, and Int64 has 64 bits. However, does not make any sense to worry about integer overflow if your values are not integers, and 10^-12 most certainly is not an integer, you can only be using Float64 here anyway.

3 Likes