Average Error: 29.3 → 0.6
Time: 1.1m
Precision: 64
Internal Precision: 128
\[\left(e^{x} - 2\right) + e^{-x}\]
\[(\frac{1}{12} \cdot \left({x}^{4}\right) + \left((\frac{1}{360} \cdot \left({x}^{6}\right) + \left(x \cdot x\right))_*\right))_*\]

Error

Bits error versus x

Target

Original29.3
Target0.0
Herbie0.6
\[4 \cdot {\left(\sinh \left(\frac{x}{2}\right)\right)}^{2}\]

Derivation

  1. Initial program 29.3

    \[\left(e^{x} - 2\right) + e^{-x}\]
  2. Taylor expanded around 0 0.6

    \[\leadsto \color{blue}{{x}^{2} + \left(\frac{1}{12} \cdot {x}^{4} + \frac{1}{360} \cdot {x}^{6}\right)}\]
  3. Simplified0.6

    \[\leadsto \color{blue}{(\frac{1}{12} \cdot \left({x}^{4}\right) + \left((\frac{1}{360} \cdot \left({x}^{6}\right) + \left(x \cdot x\right))_*\right))_*}\]
  4. Final simplification0.6

    \[\leadsto (\frac{1}{12} \cdot \left({x}^{4}\right) + \left((\frac{1}{360} \cdot \left({x}^{6}\right) + \left(x \cdot x\right))_*\right))_*\]

Reproduce

herbie shell --seed 2019004 +o rules:numerics
(FPCore (x)
  :name "exp2 (problem 3.3.7)"

  :herbie-target
  (* 4 (pow (sinh (/ x 2)) 2))

  (+ (- (exp x) 2) (exp (- x))))

Details

Time bar (total: 1.1m)Debug log

sample236.0ms

Algorithm
intervals

simplify39.0ms

Counts
1 → 1
Calls

1 calls. Slowest were:

39.0ms
(+ (- (exp x) 2) (exp (- x)))

prune9.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 27.7b

localize24.0ms

Local error

Found 2 expressions with local error:

4.3b
(+ (- (exp x) 2) (exp (- x)))
0.0b
(- (exp x) 2)

rewrite36.0ms

Algorithm
rewrite-expression-head
Counts
2 → 40
Calls

2 calls. Slowest were:

32.0ms
(+ (- (exp x) 2) (exp (- x)))
3.0ms
(- (exp x) 2)

series90.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

81.0ms
(+ (- (exp x) 2) (exp (- x)))
9.0ms
(- (exp x) 2)

simplify1.4s

Counts
23 → 46
Calls

23 calls. Slowest were:

336.0ms
(+ (* (- (pow (exp x) 3) (pow 2 3)) (exp x)) (* (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2))) (exp 0)))
217.0ms
(+ (* (- (* (exp x) (exp x)) (* 2 2)) (exp x)) (* (+ (exp x) 2) (exp 0)))
196.0ms
(+ (* (- (pow (exp x) 3) (pow 2 3)) (exp x)) (* (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2))) 1))

prune413.0ms

Pruning

3 alts after pruning (3 fresh and 0 done)

Merged error: 0.0b

localize28.0ms

Local error

Found 2 expressions with local error:

0.0b
(fma 1/12 (pow x 4) (fma 1/360 (pow x 6) (* x x)))
0.0b
(fma 1/360 (pow x 6) (* x x))

rewrite1.0ms

Algorithm
rewrite-expression-head
Counts
2 → 20
Calls

2 calls. Slowest were:

0.0ms
(fma 1/12 (pow x 4) (fma 1/360 (pow x 6) (* x x)))
0.0ms
(fma 1/360 (pow x 6) (* x x))

series75.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

52.0ms
(fma 1/360 (pow x 6) (* x x))
23.0ms
(fma 1/12 (pow x 4) (fma 1/360 (pow x 6) (* x x)))

simplify95.0ms

Counts
6 → 26
Calls

6 calls. Slowest were:

29.0ms
(+ (pow x 2) (+ (* 1/12 (pow x 4)) (* 1/360 (pow x 6))))
26.0ms
(+ (pow x 2) (+ (* 1/12 (pow x 4)) (* 1/360 (pow x 6))))
26.0ms
(+ (pow x 2) (+ (* 1/12 (pow x 4)) (* 1/360 (pow x 6))))

prune261.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.0b

localize15.0ms

Local error

Found 4 expressions with local error:

4.3b
(+ (- (exp x) 2) (exp (- x)))
4.3b
(+ (- (exp x) 2) (exp (- x)))
4.3b
(+ (- (exp x) 2) (exp (- x)))
0.1b
(cbrt (+ (- (exp x) 2) (exp (- x))))

rewrite60.0ms

Algorithm
rewrite-expression-head
Counts
4 → 92
Calls

4 calls. Slowest were:

18.0ms
(+ (- (exp x) 2) (exp (- x)))
15.0ms
(+ (- (exp x) 2) (exp (- x)))
15.0ms
(+ (- (exp x) 2) (exp (- x)))

series473.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

248.0ms
(cbrt (+ (- (exp x) 2) (exp (- x))))
83.0ms
(+ (- (exp x) 2) (exp (- x)))
78.0ms
(+ (- (exp x) 2) (exp (- x)))
64.0ms
(+ (- (exp x) 2) (exp (- x)))

simplify6.2s

Counts
67 → 104
Calls

67 calls. Slowest were:

519.0ms
(cbrt (+ (* (- (* (exp x) (exp x)) (* 2 2)) (exp x)) (* (+ (exp x) 2) 1)))
453.0ms
(+ (* (- (pow (exp x) 3) (pow 2 3)) (exp x)) (* (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2))) (exp 0)))
422.0ms
(+ (* (- (pow (exp x) 3) (pow 2 3)) (exp x)) (* (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2))) (exp 0)))

prune1.2s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

localize40.0ms

Local error

Found 4 expressions with local error:

4.3b
(+ (- (exp x) 2) (exp (- x)))
4.3b
(+ (- (exp x) 2) (exp (- x)))
4.3b
(- (* (- (exp x) 2) (- (exp x) 2)) (* (exp (- x)) (exp (- x))))
0.1b
(cbrt (+ (- (exp x) 2) (exp (- x))))

rewrite68.0ms

Algorithm
rewrite-expression-head
Counts
4 → 161
Calls

4 calls. Slowest were:

25.0ms
(- (* (- (exp x) 2) (- (exp x) 2)) (* (exp (- x)) (exp (- x))))
16.0ms
(+ (- (exp x) 2) (exp (- x)))
15.0ms
(+ (- (exp x) 2) (exp (- x)))

series515.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

274.0ms
(cbrt (+ (- (exp x) 2) (exp (- x))))
83.0ms
(+ (- (exp x) 2) (exp (- x)))
80.0ms
(+ (- (exp x) 2) (exp (- x)))
78.0ms
(- (* (- (exp x) 2) (- (exp x) 2)) (* (exp (- x)) (exp (- x))))

simplify47.2s

Counts
206 → 173
Calls

206 calls. Slowest were:

1.1s
(- (* (* (- (* (exp x) (exp x)) (* 2 2)) (- (* (exp x) (exp x)) (* 2 2))) (exp x)) (* (* (+ (exp x) 2) (+ (exp x) 2)) (* 1 (exp (- x)))))
875.0ms
(* (* (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2))) (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2)))) (* (exp x) (exp x)))
855.0ms
(* (* (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2))) (+ (* (exp x) (exp x)) (+ (* 2 2) (* (exp x) 2)))) (exp x))

prune1.8s

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.0b

regimes27.0ms

Accuracy

0% (0.6b remaining)

Error of 0.6b against oracle of 0.0b and baseline of 0.6b

bsearch1.0ms

end0.0ms

sample3.6s

Algorithm
intervals