GMP suggestions

Nic Schraudolph nic at schraudolph.org
Tue May 25 19:37:10 CEST 2010


>> In numerical programming one often needs a number that is  
>> guaranteed to be
>> greater than any other of its class (simple example: to initialize a
>> minimum-finding loop). Without an infinity, this becomes impossible
>> in a class with theoretically infinite capacity.
>
> I must be getting this wrong: initialize with the first element and
> loop through the rest, replacing whenever something smaller is found.
> So no need for +-Inf (?)

Sorry, I oversimplified the example. I have a situation where such a  
simple shortcut is not available, because the bound being maintained  
is not constrained as simply by a single piece of data as in the  
example. Of course one could always use schemas like

mpq_class bound;
bool bound_is_inf = true;
while (...)
  // calculate new_bound...
  if (bound_is_inf || new_bound < bound) {
    bound = new_bound;
    bound_is_inf = false;
  }
  ...

but this is cumbersome and becomes error-prone as the numerical  
computations get more complicated. Imagine the calculation of  
"new_bound" above involving "bound" many times in complex ways: each  
reference will then have to be guarded by "if (bound_is_inf)". To keep  
the code sane you'll have to subclass bound's class, make "is_inf" a  
member, and overload all operators that must be guarded... amounting  
to a poor implementation of class "mpq_with_inf".

Best,

- nic



More information about the gmp-discuss mailing list