Average Error: 29.6 → 1.0
Time: 5.9m
Precision: 64
Internal Precision: 128
\[\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\]
\[\begin{array}{l} \mathbf{if}\;x \le 70.21344082412496:\\ \;\;\;\;\frac{\left(2 + \frac{2}{3} \cdot {x}^{3}\right) - {x}^{2}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\left(e^{-\left(\varepsilon \cdot x + x\right)} + e^{\varepsilon \cdot x - x}\right) + \frac{e^{\varepsilon \cdot x - x}}{\varepsilon}\right) - \frac{e^{-\left(\varepsilon \cdot x + x\right)}}{\varepsilon}}{2}\\ \end{array}\]

Error

Bits error versus x

Bits error versus eps

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if x < 70.21344082412496

    1. Initial program 39.7

      \[\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\]
    2. Taylor expanded around 0 1.3

      \[\leadsto \frac{\color{blue}{\left(\frac{2}{3} \cdot {x}^{3} + 2\right) - {x}^{2}}}{2}\]

    if 70.21344082412496 < x

    1. Initial program 0.2

      \[\frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot e^{-\left(1 - \varepsilon\right) \cdot x} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\]
    2. Using strategy rm
    3. Applied add-cube-cbrt0.2

      \[\leadsto \frac{\left(1 + \frac{1}{\varepsilon}\right) \cdot \color{blue}{\left(\left(\sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}} \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right) \cdot \sqrt[3]{e^{-\left(1 - \varepsilon\right) \cdot x}}\right)} - \left(\frac{1}{\varepsilon} - 1\right) \cdot e^{-\left(1 + \varepsilon\right) \cdot x}}{2}\]
    4. Taylor expanded around inf 0.2

      \[\leadsto \frac{\color{blue}{\left(\frac{e^{x \cdot \varepsilon - x}}{\varepsilon} + \left(e^{x \cdot \varepsilon - x} + e^{-\left(x \cdot \varepsilon + x\right)}\right)\right) - \frac{e^{-\left(x \cdot \varepsilon + x\right)}}{\varepsilon}}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le 70.21344082412496:\\ \;\;\;\;\frac{\left(2 + \frac{2}{3} \cdot {x}^{3}\right) - {x}^{2}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(\left(e^{-\left(\varepsilon \cdot x + x\right)} + e^{\varepsilon \cdot x - x}\right) + \frac{e^{\varepsilon \cdot x - x}}{\varepsilon}\right) - \frac{e^{-\left(\varepsilon \cdot x + x\right)}}{\varepsilon}}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2019004 
(FPCore (x eps)
  :name "NMSE Section 6.1 mentioned, A"
  (/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2))

Details

Time bar (total: 5.9m)Debug log

sample399.0ms

Algorithm
intervals

simplify184.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

184.0ms
(/ (- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x))))) 2)

prune7.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 29.8b

localize66.0ms

Local error

Found 4 expressions with local error:

2.9b
(- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x)))))
0.0b
(exp (- (* (- 1 eps) x)))
0.0b
(exp (- (* (+ 1 eps) x)))
0.0b
(- (/ 1 eps) 1)

rewrite34.0ms

Algorithm
rewrite-expression-head
Counts
4 → 139
Calls

4 calls. Slowest were:

20.0ms
(- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x)))))
4.0ms
(exp (- (* (+ 1 eps) x)))
3.0ms
(exp (- (* (- 1 eps) x)))

series164.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

129.0ms
(- (* (+ 1 (/ 1 eps)) (exp (- (* (- 1 eps) x)))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x)))))
14.0ms
(exp (- (* (+ 1 eps) x)))
13.0ms
(exp (- (* (- 1 eps) x)))
9.0ms
(- (/ 1 eps) 1)

simplify43.1s

Counts
192 → 151
Calls

192 calls. Slowest were:

783.0ms
(* (+ (* 1 1) (- (* (/ 1 eps) (/ 1 eps)) (* 1 (/ 1 eps)))) (* (+ (/ 1 eps) 1) (exp (* (+ 1 eps) x))))
594.0ms
(* (- 1 (/ 1 eps)) (+ (* (/ 1 eps) (/ 1 eps)) (+ (* 1 1) (* (/ 1 eps) 1))))
583.0ms
(- (* (* (+ 1 (/ 1 eps)) 1) (* (+ (* (/ 1 eps) (/ 1 eps)) (+ (* 1 1) (* (/ 1 eps) 1))) (exp (* (+ 1 eps) x)))) (* (exp (* (- 1 eps) x)) (* (- (pow (/ 1 eps) 3) (pow 1 3)) (exp 0))))

prune2.3s

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.5b

localize37.0ms

Local error

Found 2 expressions with local error:

7.0b
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))
0.1b
(* 2/3 (pow x 3))

rewrite20.0ms

Algorithm
rewrite-expression-head
Counts
2 → 29
Calls

2 calls. Slowest were:

18.0ms
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))
1.0ms
(* 2/3 (pow x 3))

series38.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

22.0ms
(* 2/3 (pow x 3))
16.0ms
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))

simplify408.0ms

Counts
17 → 35
Calls

17 calls. Slowest were:

93.0ms
(/ (exp (+ (* 2/3 (pow x 3)) 2)) (exp (pow x 2)))
73.0ms
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))
63.0ms
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))

prune409.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.5b

localize15.0ms

Local error

Found 4 expressions with local error:

10.4b
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
10.4b
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
10.4b
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
7.0b
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))

rewrite34.0ms

Algorithm
rewrite-expression-head
Counts
4 → 64
Calls

4 calls. Slowest were:

13.0ms
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))
7.0ms
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
7.0ms
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))

series212.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

81.0ms
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
55.0ms
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
52.0ms
(cbrt (- (+ (* 2/3 (pow x 3)) 2) (pow x 2)))
24.0ms
(- (+ (* 2/3 (pow x 3)) 2) (pow x 2))

simplify4.6s

Counts
43 → 76
Calls

43 calls. Slowest were:

422.0ms
(- (+ (* 1/9 (* (pow x 3) (pow 2 1/3))) (pow 2 1/3)) (* 1/6 (* (pow x 2) (pow 2 1/3))))
375.0ms
(- (+ (* 1/9 (* (pow x 3) (pow 2 1/3))) (pow 2 1/3)) (* 1/6 (* (pow x 2) (pow 2 1/3))))
354.0ms
(- (+ (* 1/9 (* (pow x 3) (pow 2 1/3))) (pow 2 1/3)) (* 1/6 (* (pow x 2) (pow 2 1/3))))

prune831.0ms

Pruning

4 alts after pruning (2 fresh and 2 done)

Merged error: 0.5b

localize18.0ms

Local error

Found 4 expressions with local error:

4.4b
(- (* (+ 1 (/ 1 eps)) (* (* (cbrt (exp (- (* (- 1 eps) x)))) (cbrt (exp (- (* (- 1 eps) x))))) (cbrt (exp (- (* (- 1 eps) x)))))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x)))))
0.0b
(* (* (cbrt (exp (- (* (- 1 eps) x)))) (cbrt (exp (- (* (- 1 eps) x))))) (cbrt (exp (- (* (- 1 eps) x)))))
0.0b
(exp (- (* (- 1 eps) x)))
0.0b
(exp (- (* (- 1 eps) x)))

rewrite223.0ms

Algorithm
rewrite-expression-head
Counts
4 → 822
Calls

4 calls. Slowest were:

120.0ms
(- (* (+ 1 (/ 1 eps)) (* (* (cbrt (exp (- (* (- 1 eps) x)))) (cbrt (exp (- (* (- 1 eps) x))))) (cbrt (exp (- (* (- 1 eps) x)))))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x)))))
38.0ms
(* (* (cbrt (exp (- (* (- 1 eps) x)))) (cbrt (exp (- (* (- 1 eps) x))))) (cbrt (exp (- (* (- 1 eps) x)))))
3.0ms
(exp (- (* (- 1 eps) x)))

series200.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

133.0ms
(- (* (+ 1 (/ 1 eps)) (* (* (cbrt (exp (- (* (- 1 eps) x)))) (cbrt (exp (- (* (- 1 eps) x))))) (cbrt (exp (- (* (- 1 eps) x)))))) (* (- (/ 1 eps) 1) (exp (- (* (+ 1 eps) x)))))
23.0ms
(* (* (cbrt (exp (- (* (- 1 eps) x)))) (cbrt (exp (- (* (- 1 eps) x))))) (cbrt (exp (- (* (- 1 eps) x)))))
23.0ms
(exp (- (* (- 1 eps) x)))
21.0ms
(exp (- (* (- 1 eps) x)))

simplify4.7m

Counts
1537 → 834
Calls

1537 calls. Slowest were:

993.0ms
(- (* (* (- (* 1 1) (* (/ 1 eps) (/ 1 eps))) (* (* (cbrt 1) (cbrt 1)) (cbrt 1))) (exp (* (+ 1 eps) x))) (* (* (- 1 (/ 1 eps)) (* (* (cbrt (exp (* (- 1 eps) x))) (cbrt (exp (* (- 1 eps) x)))) (cbrt (exp (* (- 1 eps) x))))) (- (/ 1 eps) 1)))
896.0ms
(* (* (- 1 (/ 1 eps)) (* (cbrt (exp (* (- 1 eps) x))) (cbrt (exp (* (- 1 eps) x))))) (* (+ (/ 1 eps) 1) (exp (* (+ 1 eps) x))))
840.0ms
(- (* (* (- (* 1 1) (* (/ 1 eps) (/ 1 eps))) (* (* (cbrt (exp 0)) (cbrt 1)) (cbrt (exp 0)))) (exp (* (+ 1 eps) x))) (* (* (- 1 (/ 1 eps)) (* (* (cbrt (exp (* (- 1 eps) x))) (cbrt (exp (* (- 1 eps) x)))) (cbrt (exp (* (- 1 eps) x))))) (* (- (/ 1 eps) 1) 1)))

prune12.2s

Pruning

5 alts after pruning (3 fresh and 2 done)

Merged error: 0.5b

regimes87.0ms

Accuracy

96.7% (0.6b remaining)

Error of 1.0b against oracle of 0.4b and baseline of 17.0b

bsearch312.0ms

end0.0ms

sample7.9s

Algorithm
intervals