Average Error: 16.6 → 6.1
Time: 32.6s
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 1.7988363204301253 \cdot 10^{+19}:\\ \;\;\;\;\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - (\alpha \cdot \left(\frac{1}{\left(\alpha + \beta\right) + 2.0}\right) + \left(-1.0\right))_*}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\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 < 1.7988363204301253e+19

    1. Initial program 0.7

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

      \[\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.7

      \[\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 clear-num0.7

      \[\leadsto \frac{\color{blue}{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}}} - \left(\frac{\alpha}{\left(\alpha + \beta\right) + 2.0} - 1.0\right)}{2.0}\]
    7. Using strategy rm
    8. Applied div-inv0.7

      \[\leadsto \frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - \left(\color{blue}{\alpha \cdot \frac{1}{\left(\alpha + \beta\right) + 2.0}} - 1.0\right)}{2.0}\]
    9. Applied fma-neg0.7

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

    if 1.7988363204301253e+19 < alpha

    1. Initial program 50.8

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

      \[\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-49.2

      \[\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 clear-num49.2

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

      \[\leadsto \frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - \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.8

      \[\leadsto \frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - \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 simplification6.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 1.7988363204301253 \cdot 10^{+19}:\\ \;\;\;\;\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\beta}} - (\alpha \cdot \left(\frac{1}{\left(\alpha + \beta\right) + 2.0}\right) + \left(-1.0\right))_*}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{\left(\alpha + \beta\right) + 2.0}{\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 2018362 +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.0s)Debug log

start121.0ms

Algorithm
intervals

setup98.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 15.1b

localize17.0ms

Local error

Found 2 expressions with local error:

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

rewrite36.0ms

Algorithm
rewrite-expression-head
Counts
2 → 62
Calls

2 calls. Slowest were:

30.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
5.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

series93.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

52.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
41.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

simplify2.4s

Counts
51 → 68
Calls

51 calls. Slowest were:

508.0ms
(/ (- beta alpha) (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
211.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 2.0) (* 2.0 (/ 1 beta)))
188.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 1) (* 2.0 (/ 1 beta)))

prune937.0ms

Pruning

10 alts after pruning (9 fresh and 1 done)

Merged error: 14.3b

localize26.0ms

Local error

Found 4 expressions with local error:

1.4b
(- (/ 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))

rewrite44.0ms

Algorithm
rewrite-expression-head
Counts
4 → 98
Calls

4 calls. Slowest were:

23.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
13.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
3.0ms
(/ beta (+ (+ alpha beta) 2.0))

series185.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

56.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
51.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
39.0ms
(/ beta (+ (+ alpha beta) 2.0))
39.0ms
(/ alpha (+ (+ alpha beta) 2.0))

simplify10.0s

Counts
76 → 110
Calls

76 calls. Slowest were:

669.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))))
595.0ms
(/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
577.0ms
(/ alpha (+ (pow (+ alpha beta) 3) (pow 2.0 3)))

prune1.5s

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 3.4b

localize11.0ms

Local error

Found 4 expressions with local error:

1.4b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
0.4b
(/ 1 (/ (+ (+ alpha beta) 2.0) beta))
0.0b
(/ (+ (+ alpha beta) 2.0) beta)
0.0b
(/ alpha (+ (+ alpha beta) 2.0))

rewrite29.0ms

Algorithm
rewrite-expression-head
Counts
4 → 73
Calls

4 calls. Slowest were:

15.0ms
(/ (+ (+ alpha beta) 2.0) beta)
6.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
4.0ms
(/ 1 (/ (+ (+ alpha beta) 2.0) beta))

series136.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

46.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
40.0ms
(/ 1 (/ (+ (+ alpha beta) 2.0) beta))
33.0ms
(/ alpha (+ (+ alpha beta) 2.0))
18.0ms
(/ (+ (+ alpha beta) 2.0) beta)

simplify3.4s

Counts
30 → 85
Calls

30 calls. Slowest were:

956.0ms
(+ (pow (+ alpha beta) 3) (pow 2.0 3))
452.0ms
(- (* 0.5 beta) (+ (* 0.25 (pow beta 2)) (* 0.25 (* beta alpha))))
447.0ms
(/ alpha (+ (pow (+ alpha beta) 3) (pow 2.0 3)))

prune1.3s

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 3.4b

localize29.0ms

Local error

Found 4 expressions with local error:

5.2b
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
5.2b
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
5.2b
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
1.4b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)

rewrite18.0ms

Algorithm
rewrite-expression-head
Counts
4 → 70
Calls

4 calls. Slowest were:

12.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
1.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
1.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))

series422.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

154.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
109.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
95.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
64.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)

simplify4.8s

Counts
37 → 82
Calls

37 calls. Slowest were:

609.0ms
(/ alpha (+ (pow (+ alpha beta) 3) (pow 2.0 3)))
544.0ms
(cbrt (/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3))))
542.0ms
(cbrt (/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3))))

prune1.2s

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 3.4b

regimes195.0ms

Accuracy

76.5% (3.1b remaining)

Error of 6.1b against oracle of 3.0b and baseline of 16.2b

bsearch84.0ms