I have a function that takes in an optional distance parameter dist
, but my algorithm works with squared distances. If the user does not specify any value, I want dist
to be as large a number as possible.
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max())) const;
Is the code above safe, or will it blow up because of rounding errors? Would it be better to use something (even) uglier like
Result foo(double dist = std::sqrt(std::numeric_limits<double>::max() - 100)) const;
If you're careful, you can use std::numeric_limits<double>::infinity
. It will do the right thing in comparisons and if you square it, it remains infinite.