Average Error: 16.3 → 5.7
Time: 28.7s
Precision: 64
Internal Precision: 128
\[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
\[\begin{array}{l} \mathbf{if}\;\alpha \le 3166370434.8112526:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\alpha}{2.0 + \left(\beta + \alpha\right)} - 1.0\right)}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{2.0 + \left(\beta + \alpha\right)} \cdot \beta - (\left(\frac{1}{\alpha \cdot \alpha}\right) \cdot \left(4.0 - \frac{8.0}{\alpha}\right) + \left(\frac{-2.0}{\alpha}\right))_*}{2.0}\\ \end{array}\]

Error

Bits error versus alpha

Bits error versus beta

Derivation

  1. Split input into 2 regimes
  2. if alpha < 3166370434.8112526

    1. Initial program 0.1

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
    2. Using strategy rm
    3. Applied div-sub0.1

      \[\leadsto \frac{\color{blue}{\left(\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \frac{\alpha}{\left(\alpha + \beta\right) + 2.0}\right)} + 1.0}{2.0}\]
    4. Applied associate-+l-0.1

      \[\leadsto \frac{\color{blue}{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}}{2.0}\]
    5. Using strategy rm
    6. Applied add-exp-log0.1

      \[\leadsto \frac{\color{blue}{e^{\log \left(\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)\right)}}}{2.0}\]
    7. Using strategy rm
    8. Applied rem-exp-log0.1

      \[\leadsto \frac{\color{blue}{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}}{2.0}\]

    if 3166370434.8112526 < alpha

    1. Initial program 50.0

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
    2. Using strategy rm
    3. Applied div-sub50.0

      \[\leadsto \frac{\color{blue}{\left(\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \frac{\alpha}{\left(\alpha + \beta\right) + 2.0}\right)} + 1.0}{2.0}\]
    4. Applied associate-+l-48.5

      \[\leadsto \frac{\color{blue}{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}}{2.0}\]
    5. Using strategy rm
    6. Applied div-inv48.5

      \[\leadsto \frac{\color{blue}{\beta \cdot \frac{1}{\left(\alpha + \beta\right) + 2.0}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\]
    7. Taylor expanded around inf 17.3

      \[\leadsto \frac{\beta \cdot \frac{1}{\left(\alpha + \beta\right) + 2.0} - \color{blue}{\left(4.0 \cdot \frac{1}{{\alpha}^{2}} - \left(2.0 \cdot \frac{1}{\alpha} + 8.0 \cdot \frac{1}{{\alpha}^{3}}\right)\right)}}{2.0}\]
    8. Simplified17.3

      \[\leadsto \frac{\beta \cdot \frac{1}{\left(\alpha + \beta\right) + 2.0} - \color{blue}{(\left(\frac{1}{\alpha \cdot \alpha}\right) \cdot \left(4.0 - \frac{8.0}{\alpha}\right) + \left(-\frac{2.0}{\alpha}\right))_*}}{2.0}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification5.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 3166370434.8112526:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\alpha}{2.0 + \left(\beta + \alpha\right)} - 1.0\right)}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{2.0 + \left(\beta + \alpha\right)} \cdot \beta - (\left(\frac{1}{\alpha \cdot \alpha}\right) \cdot \left(4.0 - \frac{8.0}{\alpha}\right) + \left(\frac{-2.0}{\alpha}\right))_*}{2.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2019016 +o rules:numerics
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/1"
  :pre (and (> alpha -1) (> beta -1))
  (/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0))

Details

Time bar (total: 27.9s)Debug log

sample73.0ms

Algorithm
intervals
Results
256×(pre true 80)
195×(body real 80)
23×(body real 1280)
20×(body real 640)
(body real 320)
(body real 160)

simplify77.0ms

Counts
1 → 1
Calls
1 calls:
Slowest
77.0ms
(/ (+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0) 2.0)

prune9.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 13.9b

localize33.0ms

Local error

Found 2 expressions with local error:

2.1b
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
0.0b
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

rewrite46.0ms

Algorithm
rewrite-expression-head
Rules
18×times-frac
17×add-cube-cbrt
17×*-un-lft-identity
17×add-sqr-sqrt
15×fma-def
associate-/r/
add-exp-log
add-cbrt-cube
associate-/l*
flip-+
flip3-+
associate-/r*
associate-/l/
add-log-exp
div-inv
log1p-expm1-u
div-sub
pow1
expm1-log1p-u
flip--
associate-+l-
div-exp
flip3--
frac-2neg
clear-num
+-commutative
cbrt-undiv
Counts
2 → 62
Calls
2 calls:
Slowest
34.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
10.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

series103.0ms

Counts
2 → 6
Calls
2 calls:
Slowest
62.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
42.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

simplify2.8s

Counts
51 → 68
Calls
51 calls:
Slowest
451.0ms
(/ (- beta alpha) (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
217.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 1) (* 2.0 (/ 1 beta)))
207.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 1) (* 2.0 (/ 1 beta)))
204.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 2.0) (* 2.0 (/ 1 beta)))
195.0ms
(/ (* (* (- beta alpha) (- beta alpha)) (- beta alpha)) (* (* (+ (+ alpha beta) 2.0) (+ (+ alpha beta) 2.0)) (+ (+ alpha beta) 2.0)))

prune624.0ms

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 13.4b

localize26.0ms

Local error

Found 4 expressions with local error:

2.1b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
0.0b
(/ alpha (+ (+ alpha beta) 2.0))
0.0b
(/ beta (+ (+ alpha beta) 2.0))
0.0b
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))

rewrite59.0ms

Algorithm
rewrite-expression-head
Rules
19×*-un-lft-identity
19×add-sqr-sqrt
18×prod-diff
17×add-cube-cbrt
14×associate-/r/
12×fma-neg
div-inv
flip-+
flip3-+
add-log-exp
associate-/r*
log1p-expm1-u
add-exp-log
add-cbrt-cube
pow1
expm1-log1p-u
flip--
flip3--
sub-neg
associate--r+
frac-sub
frac-2neg
clear-num
difference-of-squares
associate--r-
distribute-lft-out--
diff-log
Counts
4 → 98
Calls
4 calls:
Slowest
36.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
13.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
4.0ms
(/ beta (+ (+ alpha beta) 2.0))
3.0ms
(/ alpha (+ (+ alpha beta) 2.0))

series139.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
50.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
33.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
31.0ms
(/ alpha (+ (+ alpha beta) 2.0))
25.0ms
(/ beta (+ (+ alpha beta) 2.0))

simplify10.0s

Counts
76 → 110
Calls
76 calls:
Slowest
652.0ms
(- (* beta (+ (/ alpha (+ (+ alpha beta) 2.0)) 1.0)) (* (+ (+ alpha beta) 2.0) (- (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (* 1.0 1.0))))
607.0ms
(* (+ (+ alpha beta) 2.0) (+ (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
587.0ms
(/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
552.0ms
(/ alpha (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
531.0ms
(fma (/ beta (- (* (+ alpha beta) (+ alpha beta)) (* 2.0 2.0))) (- (+ alpha beta) 2.0) (- (* (cbrt (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)) (* (cbrt (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)) (cbrt (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))))

prune1.0s

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 1.3b

localize22.0ms

Local error

Found 4 expressions with local error:

2.1b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
0.1b
(* beta (/ 1 (+ (+ alpha beta) 2.0)))
0.0b
(/ 1 (+ (+ alpha beta) 2.0))
0.0b
(/ alpha (+ (+ alpha beta) 2.0))

rewrite26.0ms

Algorithm
rewrite-expression-head
Rules
add-cube-cbrt
associate-/r/
*-un-lft-identity
add-sqr-sqrt
associate-*r*
fma-neg
associate-/r*
add-exp-log
pow1
add-log-exp
div-inv
log1p-expm1-u
flip-+
add-cbrt-cube
flip3-+
expm1-log1p-u
frac-2neg
clear-num
inv-pow
flip--
pow-flip
*-commutative
un-div-inv
associate-*r/
flip3--
sub-neg
rec-exp
Counts
4 → 74
Calls
4 calls:
Slowest
13.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
5.0ms
(/ 1 (+ (+ alpha beta) 2.0))
4.0ms
(/ alpha (+ (+ alpha beta) 2.0))
3.0ms
(* beta (/ 1 (+ (+ alpha beta) 2.0)))

series110.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
40.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
27.0ms
(/ alpha (+ (+ alpha beta) 2.0))
26.0ms
(* beta (/ 1 (+ (+ alpha beta) 2.0)))
18.0ms
(/ 1 (+ (+ alpha beta) 2.0))

simplify2.9s

Counts
35 → 86
Calls
35 calls:
Slowest
589.0ms
(/ alpha (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
405.0ms
(- (* 0.5 beta) (+ (* 0.25 (pow beta 2)) (* 0.25 (* beta alpha))))
269.0ms
(- (* 0.5 alpha) (+ (* 0.25 (pow alpha 2)) (* 0.25 (* beta alpha))))
246.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
225.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))

prune840.0ms

Pruning

4 alts after pruning (4 fresh and 0 done)

Merged error: 1.3b

localize9.0ms

Local error

Found 4 expressions with local error:

11.9b
(log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
2.1b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
0.5b
(exp (log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))
0.0b
(/ alpha (+ (+ alpha beta) 2.0))

rewrite58.0ms

Algorithm
rewrite-expression-head
Rules
13×*-un-lft-identity
13×add-sqr-sqrt
10×log-prod
add-cube-cbrt
log-div
fma-neg
pow1
flip--
add-exp-log
exp-sum
flip3--
add-log-exp
log1p-expm1-u
frac-sub
associate-/r/
exp-diff
add-cbrt-cube
exp-prod
expm1-log1p-u
associate-/r*
difference-of-squares
distribute-lft-out--
div-inv
flip-+
log-pow
flip3-+
rem-exp-log
rem-log-exp
frac-2neg
sub-neg
clear-num
Counts
4 → 79
Calls
4 calls:
Slowest
26.0ms
(exp (log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))
15.0ms
(log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
11.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
4.0ms
(/ alpha (+ (+ alpha beta) 2.0))

series234.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
93.0ms
(log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
53.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
49.0ms
(exp (log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))
38.0ms
(/ alpha (+ (+ alpha beta) 2.0))

simplify5.0s

Counts
45 → 91
Calls
45 calls:
Slowest
618.0ms
(exp (log (- (* beta (+ (/ alpha (+ (+ alpha beta) 2.0)) 1.0)) (* (+ (+ alpha beta) 2.0) (- (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (* 1.0 1.0))))))
581.0ms
(log (- (* beta (+ (/ alpha (+ (+ alpha beta) 2.0)) 1.0)) (* (+ (+ alpha beta) 2.0) (- (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (* 1.0 1.0)))))
401.0ms
(/ alpha (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
318.0ms
(- (* 0.5 alpha) (+ (* 0.25 (pow alpha 2)) (* 0.25 (* beta alpha))))
258.0ms
(log (- (pow (/ beta (+ (+ alpha beta) 2.0)) 3) (pow (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0) 3)))

prune1.2s

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 1.3b

regimes157.0ms

Accuracy

77.6% (2.9b remaining)

Error of 5.7b against oracle of 2.8b and baseline of 15.8b

bsearch80.0ms

end0.0ms

sample2.3s

Algorithm
intervals
Results
8000×(pre true 80)
5831×(body real 80)
830×(body real 1280)
727×(body real 640)
419×(body real 320)
193×(body real 160)