Average Error: 39.5 → 0.5
Time: 7.6s
Precision: 64
Internal Precision: 128
\[\frac{e^{x}}{e^{x} - 1}\]
\[\frac{e^{x}}{(e^{x} - 1)^*}\]

Error

Bits error versus x

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original39.5
Target39.0
Herbie0.5
\[\frac{1}{1 - e^{-x}}\]

Derivation

  1. Initial program 39.5

    \[\frac{e^{x}}{e^{x} - 1}\]
  2. Simplified0.5

    \[\leadsto \color{blue}{\frac{e^{x}}{(e^{x} - 1)^*}}\]
  3. Final simplification0.5

    \[\leadsto \frac{e^{x}}{(e^{x} - 1)^*}\]

Reproduce

herbie shell --seed 2019016 +o rules:numerics
(FPCore (x)
  :name "expq2 (section 3.11)"

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

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

Details

Time bar (total: 7.3s)Debug log

sample133.0ms

Algorithm
intervals
Results
315×(pre true 80)
109×(body real 80)
64×(body real 1280)
58×(body exit 10240)
46×(body real 640)
26×(body real 320)
12×(body real 160)

simplify5.0ms

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

prune16.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.3b

localize16.0ms

Local error

Found 1 expressions with local error:

0.3b
(/ (exp x) (expm1 x))

rewrite7.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
times-frac
*-un-lft-identity
add-sqr-sqrt
associate-/l*
add-cbrt-cube
associate-/r*
add-exp-log
add-log-exp
div-inv
log1p-expm1-u
div-exp
frac-2neg
clear-num
cbrt-undiv
pow1
expm1-log1p-u
Counts
1 → 29
Calls
1 calls:
Slowest
6.0ms
(/ (exp x) (expm1 x))

series36.0ms

Counts
1 → 3
Calls
1 calls:
Slowest
36.0ms
(/ (exp x) (expm1 x))

simplify335.0ms

Counts
28 → 32
Calls
28 calls:
Slowest
190.0ms
(/ (* (* (exp x) (exp x)) (exp x)) (* (* (expm1 x) (expm1 x)) (expm1 x)))
29.0ms
(/ (* (cbrt (exp x)) (cbrt (exp x))) (* (cbrt (expm1 x)) (cbrt (expm1 x))))
21.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
19.0ms
(/ (* (cbrt (exp x)) (cbrt (exp x))) 1)
12.0ms
(/ (* (cbrt (exp x)) (cbrt (exp x))) (sqrt (expm1 x)))

prune247.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0.2b

localize5.0ms

Local error

Found 2 expressions with local error:

0.3b
(/ (expm1 x) (exp x))
0.0b
(/ 1 (/ (expm1 x) (exp x)))

rewrite5.0ms

Algorithm
rewrite-expression-head
Rules
18×times-frac
17×add-cube-cbrt
17×*-un-lft-identity
17×add-sqr-sqrt
16×associate-/r*
add-exp-log
add-cbrt-cube
associate-/l*
div-inv
pow1
add-log-exp
log1p-expm1-u
div-exp
frac-2neg
clear-num
rec-exp
expm1-log1p-u
expm1-udef
inv-pow
pow-flip
associate-/r/
div-sub
cbrt-undiv
Counts
2 → 60
Calls
2 calls:
Slowest
3.0ms
(/ (expm1 x) (exp x))
1.0ms
(/ 1 (/ (expm1 x) (exp x)))

series46.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
24.0ms
(/ 1 (/ (expm1 x) (exp x)))
21.0ms
(/ (expm1 x) (exp x))

simplify567.0ms

Counts
47 → 66
Calls
47 calls:
Slowest
329.0ms
(- (+ x (* 1/6 (pow x 3))) (* 1/2 (pow x 2)))
119.0ms
(/ (* (* (expm1 x) (expm1 x)) (expm1 x)) (* (* (exp x) (exp x)) (exp x)))
15.0ms
(/ (* (cbrt (expm1 x)) (cbrt (expm1 x))) (* (cbrt (exp x)) (cbrt (exp x))))
11.0ms
(/ (* (cbrt (expm1 x)) (cbrt (expm1 x))) 1)
9.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))

prune556.0ms

Pruning

3 alts after pruning (2 fresh and 1 done)

Merged error: 0b

localize19.0ms

Local error

Found 2 expressions with local error:

0.1b
(fma 1/12 x 1/2)
0.0b
(+ (fma 1/12 x 1/2) (/ 1 x))

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity
add-log-exp
add-cube-cbrt
fma-def
add-sqr-sqrt
distribute-lft-out
log1p-expm1-u
fma-udef
add-exp-log
add-cbrt-cube
pow1
expm1-log1p-u
div-inv
flip-+
flip3-+
sum-log
associate-+l+
+-commutative
Counts
2 → 29
Calls
2 calls:
Slowest
7.0ms
(+ (fma 1/12 x 1/2) (/ 1 x))
0.0ms
(fma 1/12 x 1/2)

series37.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
24.0ms
(fma 1/12 x 1/2)
12.0ms
(+ (fma 1/12 x 1/2) (/ 1 x))

simplify135.0ms

Counts
12 → 35
Calls
12 calls:
Slowest
45.0ms
(* (exp (fma 1/12 x 1/2)) (exp (/ 1 x)))
17.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
15.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
13.0ms
(+ (fma 1/12 x 1/2) (/ 1 x))
10.0ms
(* (cbrt (fma 1/12 x 1/2)) (cbrt (fma 1/12 x 1/2)))

prune282.0ms

Pruning

3 alts after pruning (1 fresh and 2 done)

Merged error: 0b

localize15.0ms

Local error

Found 3 expressions with local error:

4.2b
(- 1 (/ 1 (exp x)))
0.0b
(/ 1 (- 1 (/ 1 (exp x))))
0.0b
(/ 1 (exp x))

rewrite7.0ms

Algorithm
rewrite-expression-head
Rules
associate-/r*
add-cube-cbrt
*-un-lft-identity
pow1
add-sqr-sqrt
add-exp-log
add-log-exp
log1p-expm1-u
add-cbrt-cube
expm1-log1p-u
inv-pow
flip--
pow-flip
div-inv
associate-/r/
flip3--
frac-2neg
clear-num
rec-exp
sub-neg
Counts
3 → 51
Calls
3 calls:
Slowest
3.0ms
(/ 1 (- 1 (/ 1 (exp x))))
2.0ms
(- 1 (/ 1 (exp x)))
1.0ms
(/ 1 (exp x))

series53.0ms

Counts
3 → 9
Calls
3 calls:
Slowest
25.0ms
(- 1 (/ 1 (exp x)))
21.0ms
(/ 1 (- 1 (/ 1 (exp x))))
8.0ms
(/ 1 (exp x))

simplify510.0ms

Counts
19 → 60
Calls
19 calls:
Slowest
269.0ms
(- (+ x (* 1/6 (pow x 3))) (* 1/2 (pow x 2)))
130.0ms
(+ (* 1 1) (+ (* (/ 1 (exp x)) (/ 1 (exp x))) (* 1 (/ 1 (exp x)))))
43.0ms
(- (+ (* 1/2 (pow x 2)) 1) x)
10.0ms
(+ (* 1/12 x) (+ (/ 1 x) 1/2))
7.0ms
(- 1 (/ 1 (exp x)))

prune459.0ms

Pruning

3 alts after pruning (0 fresh and 3 done)

Merged error: 0b

regimes58.0ms

Accuracy

0% (0.5b remaining)

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

bsearch0.0ms

end0.0ms

sample3.7s

Algorithm
intervals
Results
10554×(pre true 80)
2927×(body real 80)
2551×(body exit 10240)
2224×(body real 1280)
1655×(body real 640)
781×(body real 320)
416×(body real 160)