On Wednesday 26 April 2006 22:12, Christoph Bartoschek wrote: > Am Mittwoch, 26. April 2006 22:27 schrieb Dmitry Suzdalev: > > On Thursday 27 April 2006 00:12, Will Entriken wrote: > > > std::numeric_limits::min() return the minimum positive value. > > > > Hmm... yes? :) > > Bahhh, I should read docs more carefully, thanks! :) > > > > > you could try maxd = -1 if d will be non-negative. that will be pretty > > > obvious what is going on. > > > > Nope, d might be negative - that's why I didn't use -1 for maxd. > > So, then another question: > > Maybe I'm wrong when I say that > > "-std::numeric_limits::max()" is messy-looking? > > If you need a value that is smaller than all numbers, you could use: > > maxd = - std::numeric_limits::infinity(); That's all well and good, but it won't work using gcc (3.2, 3.3 and 3.4 at least) on Linux. The key point is that std::numeric_limits::has_infinity is false on these systems (or at least it is for me). You could store a flag to indicate whether this is the first time through the loop, and if so then set maxd. Or you can use this: double minDbl = -std::numeric_limits::max(); This will work for all IEEE-754 compliant systems (x86, x86_64, Solaris, etc), and it's what I use at work (where those are the only platforms we support), but it is a little messy. Alternatively, you can use something like this: double makeInfinity() { double x = std::numeric_limits::max(); while (x * x > x) x = x * x; return x; } double infinity() { static double inf = makeInfinity(); return inf; } This will work on all systems which actually have an infinity (whether the C++ standard library knows about it or not). On systems which don't (if you can find any), you'll probably get a floating point exception of some kind when it overflows. One final thing... on Intel-based machines, computations involving infinity or NaN floating-point values are VERY VERY slow (hundreds of times slower than normal floating-point operations), so you probably don't want to use infinity after all. Best to just use -std::numeric_limits::max() or a flag. Richard >> Visit http://mail.kde.org/mailman/listinfo/kde-devel#unsub to unsubscribe <<