On Friday, 8 February 2013 at 13:33:43 UTC, bearophile wrote:
Andrei Alexandrescu:

I don't think std.math.sqrt should validate its input using a contract.

Why not? Returning a NaN is an option. But in a language that supports contracts, its precondition should only accept non-negative inputs.

Bye,
bearophile

Passing a negative number to sqrt is something that could well be an expected event in release code that works with real data.

A Nan is a convenient way of marking bad data (and anything calculated from that data) as being invalid without having to set up an exception framework that does the same job explicitly and inefficiently.

If sqrt used contracts, then that would make debug mode useless to a lot of data analysis programs that are designed (sensibly) to use NaNs.

Reply via email to