Average Error: 40.5 → 1.1
Time: 11.5s
Precision: 64
Internal Precision: 128
\[\frac{e^{x}}{e^{x} - 1}\]
\[\frac{e^{x}}{x + \left(x \cdot \frac{1}{6} + \frac{1}{2}\right) \cdot \left(x \cdot x\right)}\]

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original40.5
Target40.1
Herbie1.1
\[\frac{1}{1 - e^{-x}}\]

Derivation

  1. Initial program 40.5

    \[\frac{e^{x}}{e^{x} - 1}\]
  2. Taylor expanded around 0 11.2

    \[\leadsto \frac{e^{x}}{\color{blue}{x + \left(\frac{1}{6} \cdot {x}^{3} + \frac{1}{2} \cdot {x}^{2}\right)}}\]
  3. Simplified1.1

    \[\leadsto \frac{e^{x}}{\color{blue}{x + \left(x \cdot \frac{1}{6} + \frac{1}{2}\right) \cdot \left(x \cdot x\right)}}\]
  4. Final simplification1.1

    \[\leadsto \frac{e^{x}}{x + \left(x \cdot \frac{1}{6} + \frac{1}{2}\right) \cdot \left(x \cdot x\right)}\]

Reproduce

herbie shell --seed 2019022 
(FPCore (x)
  :name "expq2 (section 3.11)"

  :herbie-target
  (/ 1 (- 1 (exp (- x))))

  (/ (exp x) (- (exp x) 1)))

Details

Time bar (total: 10.8s)Debug log

sample101.0ms

Algorithm
intervals
Results
38.0ms85×body10240exit
30.0ms81×body1280valid
15.0ms51×body640valid
5.0ms26×body320valid
5.0ms89×body80valid
1.0ms10×body160valid

simplify4.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
4.0ms
(/ (exp x) (- (exp x) 1))

prune5.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 41.5b

localize13.0ms

Local error

Found 2 expressions with local error:

4.6b
(- (exp x) 1)
1.0b
(/ (exp x) (- (exp x) 1))

rewrite15.0ms

Algorithm
rewrite-expression-head
Rules
16×add-sqr-sqrt
12×times-frac
11×add-cube-cbrt
11×*-un-lft-identity
difference-of-sqr-1
add-cbrt-cube
associate-/r*
associate-/l*
add-exp-log
add-log-exp
flip--
associate-/r/
flip3--
pow1
div-inv
div-exp
frac-2neg
sub-neg
clear-num
cbrt-undiv
Counts
2 → 45
Calls
2 calls:
Slowest
9.0ms
(/ (exp x) (- (exp x) 1))
5.0ms
(- (exp x) 1)

series44.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
27.0ms
(/ (exp x) (- (exp x) 1))
16.0ms
(- (exp x) 1)

simplify652.0ms

Counts
41 → 51
Calls
41 calls:
Slowest
311.0ms
(/ (* (* (exp x) (exp x)) (exp x)) (* (* (- (exp x) 1) (- (exp x) 1)) (- (exp x) 1)))
93.0ms
(+ x (+ (* 1/6 (pow x 3)) (* 1/2 (pow x 2))))
55.0ms
(+ (* (exp x) (exp x)) (+ (* 1 1) (* (exp x) 1)))
20.0ms
(/ (* (cbrt (exp x)) (cbrt (exp x))) (* (cbrt (- (exp x) 1)) (cbrt (- (exp x) 1))))
9.0ms
(/ (* (cbrt (exp x)) (cbrt (exp x))) 1)

prune316.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 0.9b

localize20.0ms

Local error

Found 4 expressions with local error:

0.3b
(* x 1/6)
0.1b
(* (+ (* x 1/6) 1/2) (* x x))
0.0b
(+ (* x 1/6) 1/2)
0.0b
(/ (exp x) (+ x (* (+ (* x 1/6) 1/2) (* x x))))

rewrite20.0ms

Algorithm
rewrite-expression-head
Rules
13×add-cube-cbrt
13×*-un-lft-identity
13×add-sqr-sqrt
times-frac
add-cbrt-cube
add-exp-log
pow1
add-log-exp
associate-/l*
flip-+
associate-*l*
flip3-+
associate-/r*
*-commutative
associate-/r/
associate-*l/
div-inv
cbrt-unprod
prod-exp
pow-prod-down
associate-*r*
div-exp
frac-2neg
clear-num
+-commutative
cbrt-undiv
Counts
4 → 64
Calls
4 calls:
Slowest
10.0ms
(* (+ (* x 1/6) 1/2) (* x x))
6.0ms
(/ (exp x) (+ x (* (+ (* x 1/6) 1/2) (* x x))))
3.0ms
(+ (* x 1/6) 1/2)
0.0ms
(* x 1/6)

series103.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
46.0ms
(* (+ (* x 1/6) 1/2) (* x x))
23.0ms
(+ (* x 1/6) 1/2)
22.0ms
(/ (exp x) (+ x (* (+ (* x 1/6) 1/2) (* x x))))
12.0ms
(* x 1/6)

simplify2.9s

Counts
46 → 76
Calls
46 calls:
Slowest
386.0ms
(* (- (* (* x 1/6) (* x 1/6)) (* 1/2 1/2)) (* x x))
272.0ms
(* (+ (pow (* x 1/6) 3) (pow 1/2 3)) (* x x))
164.0ms
(- x (* (+ (* x 1/6) 1/2) (* x x)))
150.0ms
(- (+ (* 18 (/ (exp x) (pow x 5))) (* 6 (/ (exp x) (pow x 3)))) (* 18 (/ (exp x) (pow x 4))))
127.0ms
(- (+ (* 18 (/ (exp x) (pow x 5))) (* 6 (/ (exp x) (pow x 3)))) (* 18 (/ (exp x) (pow x 4))))

prune671.0ms

Pruning

4 alts after pruning (3 fresh and 1 done)

Merged error: 0.9b

localize10.0ms

Local error

Found 3 expressions with local error:

0.3b
(* 1/12 x)
0.0b
(+ (/ 1 x) 1/2)
0.0b
(+ (* 1/12 x) (+ (/ 1 x) 1/2))

rewrite9.0ms

Algorithm
rewrite-expression-head
Rules
add-log-exp
add-cube-cbrt
add-exp-log
add-cbrt-cube
*-un-lft-identity
pow1
add-sqr-sqrt
flip-+
flip3-+
+-commutative
*-commutative
sum-log
associate-+r+
Counts
3 → 30
Calls
3 calls:
Slowest
6.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
2.0ms
(+ (/ 1 x) 1/2)
0.0ms
(* 1/12 x)

series32.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
15.0ms
(+ (/ 1 x) 1/2)
9.0ms
(* 1/12 x)
8.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))

simplify89.0ms

Counts
10 → 39
Calls
10 calls:
Slowest
22.0ms
(* (exp (* 1/12 x)) (exp (+ (/ 1 x) 1/2)))
17.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
16.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
16.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
3.0ms
(+ (/ 1 x) 1/2)

prune282.0ms

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0.9b

localize11.0ms

Local error

Found 4 expressions with local error:

0.6b
(cbrt (* 1/12 x))
0.6b
(cbrt (* 1/12 x))
0.6b
(cbrt (* 1/12 x))
0.4b
(* (cbrt (* 1/12 x)) (cbrt (* 1/12 x)))

rewrite6.0ms

Algorithm
rewrite-expression-head
Rules
pow1
pow1/3
add-cube-cbrt
add-exp-log
*-un-lft-identity
add-sqr-sqrt
cbrt-prod
add-log-exp
associate-*l*
associate-*r*
add-cbrt-cube
pow-prod-up
pow-prod-down
cbrt-unprod
*-commutative
prod-exp
pow-plus
pow2
Counts
4 → 51
Calls
4 calls:
Slowest
4.0ms
(* (cbrt (* 1/12 x)) (cbrt (* 1/12 x)))
0.0ms
(cbrt (* 1/12 x))
0.0ms
(cbrt (* 1/12 x))
0.0ms
(cbrt (* 1/12 x))

series1.4s

Counts
4 → 12
Calls
4 calls:
Slowest
365.0ms
(* (cbrt (* 1/12 x)) (cbrt (* 1/12 x)))
344.0ms
(cbrt (* 1/12 x))
332.0ms
(cbrt (* 1/12 x))
328.0ms
(cbrt (* 1/12 x))

simplify137.0ms

Counts
31 → 63
Calls
31 calls:
Slowest
12.0ms
(* (pow (pow x 2) 1/3) (pow (cbrt 1/12) 2))
12.0ms
(* (* 1/12 x) (* 1/12 x))
12.0ms
(* (pow (* x -1) 1/3) (cbrt -1/12))
10.0ms
(* (pow (pow x 2) 1/3) (pow (cbrt 1/12) 2))
10.0ms
(* (pow (* x -1) 1/3) (cbrt -1/12))

prune470.0ms

Pruning

6 alts after pruning (5 fresh and 1 done)

Merged error: 0.9b

regimes126.0ms

Accuracy

0% (0.6b remaining)

Error of 1.1b against oracle of 0.4b and baseline of 1.1b

bsearch2.0ms

end0.0ms

sample3.4s

Algorithm
intervals
Results
1.1s2250×body1280valid
953.0ms2600×body10240exit
892.0ms1685×body640valid
165.0ms883×body320valid
154.0ms2806×body80valid
44.0ms379×body160valid