Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

ITF1788 compliance #465

Closed
11 of 16 tasks
lucaferranti opened this issue May 27, 2021 · 1 comment · Fixed by #593
Closed
11 of 16 tasks

ITF1788 compliance #465

lucaferranti opened this issue May 27, 2021 · 1 comment · Fixed by #593
Labels

Comments

@lucaferranti
Copy link
Member

lucaferranti commented May 27, 2021

I have recently created the package ITF1788.jl which translates ITL to julia tests, runs the tests and marks the failing ones as broken. This should make it easier to see what is missing. Here is a summary (except for reverse functions, I will open an issue for those in IntervalContractors.jl soonish).

  • fi_lib.itl

    • 1. some problems with acot (Luis pointed out that this function is recommended and is also missing from MPFR, indeed the name of the file suggests these were tests for FiLib library, not for the standard).
    • 2. some problems with acoth (same of above)
  • ieee1788-exceptions.itl

    • 3. b-textToInterval "[+infinity]" = [empty] signal UndefinedOperation; fixed in fix parser #522
    • 4. Interval part of NaI should return the empty interval, now it returns [NaN, NaN]
    • 5. b-textToInterval "[1.0000000000000001, 1.0000000000000002]" = [1.0, 0x1.0000000000001p+0] signal PossiblyUndefinedOperation; fixed in fix parser #522
  • ieee1788-class.itl

    b-numsToInterval NaN NaN = [empty] signal UndefinedOperation;
    b-numsToInterval 1.0 -1.0 = [empty] signal UndefinedOperation;
    b-numsToInterval -infinity -infinity = [empty] signal UndefinedOperation;
    b-numsToInterval infinity infinity = [empty] signal UndefinedOperation;
    
  • ieee1788-elem

    • 11. roundTiesToAway and roundTiesToEven missing, they are implemented, I just didn't notice those before.
  • ieee1788-num

    • 12. one failing test, but I strongly suspect here the issue is in the ITL source code, because the test is midRad [nai] [nai] = NaN NaN;, I don't understand why midRad would take two intervals as input, indeed it does not for other tests in the same test block. edit: I think this is so obviously a typo in the ITL source code, that I dare marking this as done. I also opened an issue in the original repository
  • ieee1788-overlap

  • ieee1788-reduction :

    • The standard (Section 12.12.12) defines reduction operations sum, dot, sumSquare, sumAbs
    • 14. The functions sumSquare and sumAbs can be easily implemented in julia, e.g. sumSquare(x) = sum(x.^2) . However the point of those functions is to have accurate summation, ITF has only trivial tests for those
    • 15. One test failing for dot product: dot_nearest {0x10000000000001p0, 0x1p104} {0x0fffffffffffffp0, -1.0} = -1.0;. Using floating point arithmetic, the result is 0, using bigfloats the result is -1, could be solved using the Oishi-Rump-Ogita accurate dot product from AccurateArithmetic.jl.
  • reverse functions

    • 16. Issue opened in the IntervalContractors.jl package, since reverse functions are implemented there. Anyway, the standard requires those to be implemented in an interval arithmetic software, I guess this would be ok if we advertise ValidatedNumerics as compliant software?
@lbenet
Copy link
Member

lbenet commented Apr 23, 2022

@lucaferranti Some comments your list:

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging a pull request may close this issue.

2 participants