1788-2015 compliance
lucaferranti opened this issue · 2 comments
I added the code to generate the ITL tests of reverse functions in ITF1788.jl. Here is an initial summary (I need to double check a few things
-
General:
-
The test suite has two "methods" for each function, one with the correct number of inputs as specified by the standard and one with one input less, which assumes that
x= [-Inf, Inf]
e.g. bothabs_rev(a, x)
andabs_rev(a) = abs_rev(a, entireinterval()
. I need to check fro the standard whether these are required or optional, but in general it does not hurt to have those? From what I can tell,sqr_rev
is the only one which has also the method with one less input -
according to the standard, those functions should return one output. The current implementation returns multiple outputs and the "standard result" is generally the second one. Is this intentional? Should the number of outputs conform to the standard?
-
docstrings missing.
-
libieeep1788_rev.itl
- No support for decorated intervals.
-
power_rev
fails in 16 tests with negative exponent, the returned result is a little wider than the expected one - 33 cases failing with
mul_rev_IEEE1788
-
pow_rev.itl
- the functions powRev1 and powRev2 are required by the standard, they are currently implemented but not exported
- all tests for
powRev2
fail, due to a typo in the source code (lob
should belog
) - several tests for
powRev1
andpowRev2
fail, e.g.powRev1 [-infinity,-1.0] [entire] [-infinity,0.0] = [empty];
, the current Julia implementation evaluates to[0, 0]
.
-
libieep1788_mul_rev.itl
- mul_rev_to_pair missing
-
Missing tests
- the functions
atan2Rev1
andatan2Rev1
are required by the standard, but even in ITF1788 there are no tests for these
- the functions
according to the standard, those functions should return one output. The current implementation returns multiple outputs and the "standard result" is generally the second one. Is this intentional? Should the number of outputs conform to the standard?
In IntervalContractors, there are some functions with IEEE1788
in their name (e.g., mul_rev_IEEE1788
), which returns only one result. We should include such functions (also in the tests), which would fulfill the requirements of the standard, keeping the other functions as well. this obviously imposes documenting all functions thoroughly.
feels a little pedantic though. wouldn't it be enough to keep the functions as they are and document that the output expected by the standard is the second one? The only reason for mul_rev_IEEE1788
and mul_rev
is that they have the input arguments in different order 😅