Average Error: 0.6 → 0.6
Time: 10.5s
Precision: 64
Internal Precision: 128
\[\frac{e^{a}}{e^{a} + e^{b}}\]
\[\frac{e^{a}}{(\left(\sqrt{e^{a}}\right) \cdot \left(\sqrt{e^{a}}\right) + \left(e^{b}\right))_*}\]

Error

Bits error versus a

Bits error versus b

Target

Original0.6
Target0.0
Herbie0.6
\[\frac{1}{1 + e^{b - a}}\]

Derivation

  1. Initial program 0.6

    \[\frac{e^{a}}{e^{a} + e^{b}}\]
  2. Using strategy rm
  3. Applied add-sqr-sqrt0.6

    \[\leadsto \frac{e^{a}}{\color{blue}{\sqrt{e^{a}} \cdot \sqrt{e^{a}}} + e^{b}}\]
  4. Applied fma-def0.6

    \[\leadsto \frac{e^{a}}{\color{blue}{(\left(\sqrt{e^{a}}\right) \cdot \left(\sqrt{e^{a}}\right) + \left(e^{b}\right))_*}}\]
  5. Final simplification0.6

    \[\leadsto \frac{e^{a}}{(\left(\sqrt{e^{a}}\right) \cdot \left(\sqrt{e^{a}}\right) + \left(e^{b}\right))_*}\]

Reproduce

herbie shell --seed 2018360 +o rules:numerics
(FPCore (a b)
  :name "Quotient of sum of exps"

  :herbie-target
  (/ 1 (+ 1 (exp (- b a))))

  (/ (exp a) (+ (exp a) (exp b))))

Details

Time bar (total: 3.2s)Debug log

start141.0ms

Algorithm
intervals

setup19.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 0.5b

localize52.0ms

Local error

Found 2 expressions with local error:

0.5b
(/ (exp a) (+ (exp a) (exp b)))
0.0b
(+ (exp a) (exp b))

rewrite23.0ms

Algorithm
rewrite-expression-head
Counts
2 → 52
Calls

2 calls. Slowest were:

15.0ms
(/ (exp a) (+ (exp a) (exp b)))
7.0ms
(+ (exp a) (exp b))

series98.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

64.0ms
(/ (exp a) (+ (exp a) (exp b)))
35.0ms
(+ (exp a) (exp b))

simplify620.0ms

Counts
44 → 58
Calls

44 calls. Slowest were:

254.0ms
(/ (* (* (exp a) (exp a)) (exp a)) (* (* (+ (exp a) (exp b)) (+ (exp a) (exp b))) (+ (exp a) (exp b))))
110.0ms
(+ (* (exp a) (exp a)) (- (* (exp b) (exp b)) (* (exp a) (exp b))))
72.0ms
(- (+ (* 1/4 a) 1/2) (* 1/4 b))

prune532.0ms

Pruning

2 alts after pruning (2 fresh and 0 done)

Merged error: 0.5b

localize22.0ms

Local error

Found 4 expressions with local error:

0.5b
(/ (exp a) (fma (sqrt (exp a)) (sqrt (exp a)) (exp b)))
0.0b
(fma (sqrt (exp a)) (sqrt (exp a)) (exp b))
0.0b
(sqrt (exp a))
0.0b
(sqrt (exp a))

rewrite11.0ms

Algorithm
rewrite-expression-head
Counts
4 → 67
Calls

4 calls. Slowest were:

6.0ms
(/ (exp a) (fma (sqrt (exp a)) (sqrt (exp a)) (exp b)))
2.0ms
(sqrt (exp a))
1.0ms
(sqrt (exp a))

series177.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

86.0ms
(/ (exp a) (fma (sqrt (exp a)) (sqrt (exp a)) (exp b)))
61.0ms
(fma (sqrt (exp a)) (sqrt (exp a)) (exp b))
17.0ms
(sqrt (exp a))
12.0ms
(sqrt (exp a))

simplify558.0ms

Counts
45 → 79
Calls

45 calls. Slowest were:

105.0ms
(/ (* (* (exp a) (exp a)) (exp a)) (* (* (fma (sqrt (exp a)) (sqrt (exp a)) (exp b)) (fma (sqrt (exp a)) (sqrt (exp a)) (exp b))) (fma (sqrt (exp a)) (sqrt (exp a)) (exp b))))
56.0ms
(- (+ (* 1/4 a) 1/2) (* 1/4 b))
34.0ms
(/ (* (cbrt (exp a)) (cbrt (exp a))) (* (cbrt (fma (sqrt (exp a)) (sqrt (exp a)) (exp b))) (cbrt (fma (sqrt (exp a)) (sqrt (exp a)) (exp b)))))

prune895.0ms

Pruning

2 alts after pruning (1 fresh and 1 done)

Merged error: 0.5b

localize9.0ms

Local error

Found 0 expressions with local error:

rewrite0.0ms

Algorithm
rewrite-expression-head
Counts
0 → 0
Calls

0 calls. Slowest were:

series0.0ms

Counts
0 → 0
Calls

0 calls. Slowest were:

simplify0.0ms

Counts
0 → 0
Calls

0 calls. Slowest were:

prune0.0ms

Pruning

2 alts after pruning (0 fresh and 2 done)

Merged error: 0.5b

regimes86.0ms

Accuracy

0% (0.0b remaining)

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

bsearch1.0ms