[HN Gopher] What, if anything, is epsilon? (2014) [pdf]
       ___________________________________________________________________
        
       What, if anything, is epsilon? (2014) [pdf]
        
       Author : notmysql_
       Score  : 52 points
       Date   : 2023-05-01 23:49 UTC (23 hours ago)
        
 (HTM) web link (tom7.org)
 (TXT) w3m dump (tom7.org)
        
       | idbehold wrote:
       | > JavaScript programmers have the highest tolerance for error of
       | all languages tested, with over 1,000 using epsilon of 0.5 or
       | higher.
       | 
       | JavaScript actually defines "Number.EPSILON" as being "the
       | difference between 1 and the smallest floating point number
       | greater than 1." https://developer.mozilla.org/en-
       | US/docs/Web/JavaScript/Refe...
        
       | sulam wrote:
       | Do yourself the favor of reading the plots. They are the high
       | point of this "paper."
        
       | ChancyChance wrote:
       | I thought this was a real paper at first.
        
         | __MatrixMan__ wrote:
         | Are you sure it's not? I'm uncertain.
         | 
         | Searching for the Association for Computational Heresy leads me
         | to https://sigbovik.org/ which appears to be a real conference
         | in the same way that extreme ironing is a real sport.
        
           | wrs wrote:
           | As a CMU alumnus, I resemble that remark. Of course it's a
           | real conference. It has a review committee and proceedings
           | and LaTeX and everything!
        
         | dmbche wrote:
         | It's a real paper - go look at the other things tom7 has done!
        
       | blackbear_ wrote:
       | Nice graphics
        
       | xorvoid wrote:
       | Lolz. Delightful!
        
       | [deleted]
        
       | jacob019 wrote:
       | Isn't it just a small number to prevent divide by zero errors?
        
         | danbruc wrote:
         | If you want to not divide by zero, you can just check for zero.
         | You want to use some epsilon if you want to compare floating
         | point numbers, 0.1 + 0.2 == 0.3 for example is false and not
         | what you wanted most of the time. To do this properly you
         | calculate the difference (0.1 + 0.2) - 0.3 and check if the
         | absolute value of the difference is smaller than some
         | tolerance, your epsilon.
        
         | lmkg wrote:
         | Not exactly. In math, epsilon is basically "it's not zero,
         | except when it is."
         | 
         | When you're _dividing_ , then it's close to zero, but still
         | qualitatively _not_ zero. But when you 're _multiplying_ or
         | _adding_ , then we say it's close enough that we'll treat it as
         | exactly zero. So it's not a specific number, it's something
         | where we can handwave its qualitative size depending on what's
         | convenient.
         | 
         | Limits are a formalization of this concept. It's not a specific
         | value, it's very much a variable that "approaches" zero. This
         | establishes rules about how much bullshit you can actually do
         | it. It's not zero, you do some arithmetic, then it becomes zero
         | and you do the rest of the arithmetic.
         | 
         | But when you're writing a program, epsilon is indeed often just
         | a small number. The trick is choosing the right "small."
        
           | Someone wrote:
           | > In math, epsilon is basically "it's not zero, except when
           | it is."
           | 
           | In the math I know, it's not necessarily small, but it is
           | larger than zero. https://mathworld.wolfram.com/Epsilon-
           | DeltaDefinition.html:
           | 
           |  _"An epsilon-delta definition is a mathematical definition
           | in which a statement on a real function of one variable f
           | having, for example, the form "for all neighborhoods U of y0
           | there is a neighborhood V of x0 such that, whenever x in V,
           | then f(x) in U" is rephrased as "for all e > 0 there is d > 0
           | such that, whenever 0 < |x - x0| < d, then |f(x) - y0| < e."_
           | 
           | (Also used in proofs. https://mathworld.wolfram.com/Epsilon-
           | DeltaProof.html)
           | 
           | https://en.m.wikipedia.org/wiki/Limit_of_a_function#%7F'%22%.
           | ..:
           | 
           | "For every real e > 0, there exists a real d > 0 such that
           | for all real x, 0 < |x - p| < d implies |f(x) - L| < e."
           | 
           | > it's something where we can handwave its qualitative size
           | depending on what's convenient.
           | 
           | Aha! You're doing physics, not math. Mathematicians only
           | handwave when they can prove it doesn't affect results ;-)
        
             | iamevn wrote:
             | The paper, on the epsilon-delta: > This has nothing to do
             | with the subject of the paper
        
               | [deleted]
        
         | tempodox wrote:
         | To oversimplify, epsilon is "the smallest number that still
         | makes a difference in the given context".
        
           | amelius wrote:
           | In actual code, you will see it used with wide safety
           | margins, though.
        
         | jerf wrote:
         | There is subtlety in selecting that "small number". 0.000000001
         | may look like a "small number", but if you're doing
         | calculations in the 1e-20 range, suddenly it isn't small
         | anymore. Small is relative to the task at hand. Simple uses of
         | floats in known situations can get away with a hard-coded
         | epsilon constant, and it may not even much matter what the
         | number is, but as your usage becomes more sophisticated and
         | more important, proper selection of epsilon values becomes non-
         | trivial.
        
       ___________________________________________________________________
       (page generated 2023-05-02 23:02 UTC)