Hacker News new | ask | show | jobs
by mike00632 2721 days ago
Maybe I'm just arguing semantics here but I would say that while calculations are carried out using floating points the numbers themselves are represented symbolically. For example, if you came up with an algorithm to calculate euclidean distance then you would eventually employ a square root algorithm instead of an approximation of a square root stored as a floating point number. The algorithm "sqrt(2)" is a symbolic representation of the square root of 2.
1 comments

Yeah I meant that there's another layer to the symbolic representation of "sqrt(2)" than just the tree of operation, so that you can ask sensible questions about the value of the number. For instance a generator of decimal representation or a function like "given N return a fraction q/p that's within 1/2^N of the value".

And floats are really a whole other beast than fractions or naturals or real numbers. As I wrote earlier - the "+" operator isn't associative. Python snippet:

    def before():
        x = 0.0
        x += 1.0
        for i in xrange(1000):
            x += 1e-17
        return x

    def after():
        x = 0.0
        for i in xrange(1000):
            x += 1e-17
        x += 1.0
        return x


    print before() == 1.0
    print after() == 1.0

Will print:

   True
   False
Rewrite your functions to be generator functions. They don't even need to be based on the desired level of precision to always be decidable.
Not sure what your point is. I can just suggest to see the PDF: https://news.ycombinator.com/item?id=18411935