From the D programming tutorial:
We have already seen that this is the default value of floating point variables. .nan may appear as a result of meaningless floating point expressions as well. For example the floating point expressions in the following program all produce double.nan:
import std.stdio; void main() { double zero = 0; double infinity = double.infinity; writeln("any expression with nan: ", double.nan + 1); writeln("zero / zero : ", zero / zero); writeln("zero * infinity : ", zero * infinity); writeln("infinity / infinity : ", infinity / infinity); writeln("infinity - infinity : ", infinity - infinity); }
But what is double.nan exactly? Surely it must be some kind of number? Doesn't this necessarily lead to conflict?