Giter Club home page Giter Club logo

Comments (5)

certik avatar certik commented on June 14, 2024

Could the answer be, that if I do things like sin(x), then the prec parameter specifies the internal working precision, but the result will always be correctly rounded to whatever precision is mathematically correct (so it can be both less or more than prec, depending on the operation and the internal algorithm)?

from arb.

certik avatar certik commented on June 14, 2024

Or is the result's accuracy always strictly less than prec or always strictly more than prec?

It's really confusing, I can imagine it working either way.

from arb.

fredrik-johansson avatar fredrik-johansson commented on June 14, 2024

The prec parameter just specifies the internal working precision used to compute the midpoint. For example, if adding two balls x +/- r, y +/- s, the result is round(x + y, prec) +/- (r + s + eps) where eps is a bound for the error from round(x + y, prec).

If the precision is much higher than the accuracy of the inputs, all that happens is that eps is much smaller than r + s, so the output radius is approximately r + s.

If the precision is much lower than the accuracy of the inputs, all that happens is that eps is much larger than r + s, so the output radius is approximately eps.

The only restrictions are that the precision has to be at least 2 bits, and not so large that overflow occurs (not usually an issue, at least on 64-bit systems).

The only strict guarantee for all functions is that the output ball contains the mathematically exact result. There's not a simple answer for how one should choose the precision in any given situation.

from arb.

certik avatar certik commented on June 14, 2024

Thanks, I think that explains it. I created #5 fixing this issue.

from arb.

certik avatar certik commented on June 14, 2024

You answered all the questions. The answer to the question what prec to use if I want to have as accurate result as possible is simply: minimize eps. To minimize eps, I just need to use accuracy something like max(r, s) + extra, where extra depends on the algorithm done internally. Then eps will be very small and that's what I wanted.

In situations like evaluating a symbolic expression, I would just set prec everywhere the same, then check the accuracy of the answer, and if it's not enough for me, then double prec.

from arb.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.