How about this instead?
```d
if (d1 != d1) // isNaN
    return d2 != d2 ? 0 : -1;
else if (d2 != d2)
    return 1;
else
    return d1 == d2 ? 0 : d1 < d2 ? -1 : 1;
```