Sorting floating-point values, and NaN
    tn 
    no at email.com
       
    Tue Nov 12 05:59:58 PST 2013
    
    
  
On Tuesday, 12 November 2013 at 09:40:52 UTC, Walter Bright wrote:
> On 11/12/2013 1:33 AM, tn wrote:
>> I could not find any documentation on how the unordered
>> comparison operators (<>, !<>=, !<=, !<, !>=, !>, !<>) 
>> translate into opCmp calls.
>
> That's because they just don't translate to opCmp calls.
Well, they seem to translate to something, because this works as 
expected:
   struct S {
       private double v;
       auto opCmp(S rhs) { return v - rhs.v; }
   }
   S v1 = S(1);
   S v2 = S(2);
   S vn = S(double.nan);
   assert((v2 < v1) == false);
   assert((v1 < v2) == true);
   assert((v1 < v1) == false);
   assert((v1 < vn) == false);
   assert((v2 !>= v1) == false);
   assert((v1 !>= v2) == true);
   assert((v1 !>= v1) == false);
   assert((v1 !>= vn) == true);
> but then we went ahead and deprecated those operators
Maybe the spec then needs to be updated:
http://dlang.org/expression.html#RelExpression
http://dlang.org/expression.html#floating_point_comparisons
    
    
More information about the Digitalmars-d
mailing list