Thread overview
The best way to compare floating point values.
Feb 14, 2015
Jack Applegame
Feb 14, 2015
Gary Willoughby
Feb 14, 2015
Jack Applegame
Feb 14, 2015
Ivan Kazmenko
February 14, 2015
I wrote this function for comparing two floating point values:

> import std.math;
> import std.traits;
> 
> bool isEqual(T)(T v1, T v2) if(isFloatingPoint!T) {
>   return T.mant_dig - feqrel(v1, v2) < 2;
> }

What do you think about it?
February 14, 2015
On Saturday, 14 February 2015 at 09:37:05 UTC, Jack Applegame wrote:
> I wrote this function for comparing two floating point values:
>
>> import std.math;
>> import std.traits;
>> 
>> bool isEqual(T)(T v1, T v2) if(isFloatingPoint!T) {
>>  return T.mant_dig - feqrel(v1, v2) < 2;
>> }
>
> What do you think about it?

I wrote a similar function here:

https://github.com/nomad-software/dunit/blob/master/source/dunit/toolkit.d#L42

or using an epsilon value:

https://github.com/nomad-software/dunit/blob/master/source/dunit/toolkit.d#L134

I don't know if they are useful to you?
February 14, 2015
On Saturday, 14 February 2015 at 10:23:48 UTC, Gary Willoughby wrote:
> I wrote a similar function here:
>
> https://github.com/nomad-software/dunit/blob/master/source/dunit/toolkit.d#L42
>
> or using an epsilon value:
>
> https://github.com/nomad-software/dunit/blob/master/source/dunit/toolkit.d#L134
>
> I don't know if they are useful to you?

Very interesting. Thanks.
February 14, 2015
There is an approxEqual in std.math, in addition in feqrel:

http://dlang.org/phobos/std_math.html#.approxEqual

It takes maximum absolute and relative difference as arguments.