Subject: [std-proposals] new approximately equal operators
From: Vishal Oza (vickoza_at_[hidden])
Date: 2020-06-08 14:52:18
I was wondering if there is any interest in adding approximately equal to
operators into the language. The main purpose is to compare floating point
calculations with rounding error, however they could be used for similarity
of objects or fixed point rounded values as well.
the operator I propose are: ~=, ~< , ~>, ~!
these operators would translate at least to floating point as
a ~= b ==> abs(a-b) < epsilon
a ~< b ==> (a < b) || (abs(a-b) < epsilon)
a ~> b ==> (a > b) || (abs(a-b) < epsilon)
a ~! b ==> abs(a-b) >= epsilon
There are two routes I can see with default implementation this language
feature. either adding a default epsilon into the language that can be set
as a global variable or adding some way of tracking errors. I would like
more feedback on either way of default implementation.
I would also like a way to specify the epsilon value or function for a
single comparison. the best I can think of is
a ~=b(c) ==> abs(a-b) < c
a ~=b:c ==> abs(a-b) < c
[c]a ~=b ==> abs(a-b) < c
The precedence should be on the same level of all of the current
This could be introduced in C++ 23 or later in there is any interate.
STD-PROPOSALS list run by firstname.lastname@example.org
Standard Proposals Archives on Google Groups