Average Error: 16.8 → 6.3
Time: 47.8s
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 6.673179515756449 \cdot 10^{+22}:\\ \;\;\;\;\frac{e^{\log \left(\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\alpha}{2.0 + \left(\beta + \alpha\right)} - 1.0\right)\right)}}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \frac{\left(\frac{4.0}{\alpha} - 2.0\right) - \frac{8.0}{\alpha \cdot \alpha}}{\alpha}}{2.0}\\ \end{array}\]

Error

Bits error versus alpha

Bits error versus beta

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Derivation

  1. Split input into 2 regimes
  2. if alpha < 6.673179515756449e+22

    1. Initial program 0.8

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
    2. Using strategy rm
    3. Applied div-sub0.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-0.8

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

      \[\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}\]

    if 6.673179515756449e+22 < alpha

    1. Initial program 51.3

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

      \[\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.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 add-log-exp49.5

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

      \[\leadsto \frac{\frac{\beta}{\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. Simplified18.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 6.673179515756449 \cdot 10^{+22}:\\ \;\;\;\;\frac{e^{\log \left(\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\alpha}{2.0 + \left(\beta + \alpha\right)} - 1.0\right)\right)}}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \frac{\left(\frac{4.0}{\alpha} - 2.0\right) - \frac{8.0}{\alpha \cdot \alpha}}{\alpha}}{2.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2018360 
(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: 42.4s)Debug log

start89.0ms

Algorithm
intervals

setup88.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 16.6b

localize15.0ms

Local error

Found 2 expressions with local error:

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

rewrite44.0ms

Algorithm
rewrite-expression-head
Counts
2 → 43
Calls

2 calls. Slowest were:

33.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
10.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

series99.0ms

Counts
2 → 6
Calls

2 calls. Slowest were:

57.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
42.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

simplify1.2s

Counts
37 → 49
Calls

37 calls. Slowest were:

154.0ms
(+ (* (+ alpha beta) (+ alpha beta)) (- (* 2.0 2.0) (* (+ alpha beta) 2.0)))
117.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 1) (* 2.0 (/ 1 beta)))
116.0ms
(/ (* (* (- beta alpha) (- beta alpha)) (- beta alpha)) (* (* (+ (+ alpha beta) 2.0) (+ (+ alpha beta) 2.0)) (+ (+ alpha beta) 2.0)))

prune633.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 15.6b

localize22.0ms

Local error

Found 4 expressions with local error:

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

rewrite21.0ms

Algorithm
rewrite-expression-head
Counts
4 → 60
Calls

4 calls. Slowest were:

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

series192.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

57.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
57.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
39.0ms
(/ beta (+ (+ alpha beta) 2.0))
38.0ms
(/ alpha (+ (+ alpha beta) 2.0))

simplify3.0s

Counts
32 → 72
Calls

32 calls. Slowest were:

522.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))))
372.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
340.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))

prune980.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 4.9b

localize17.0ms

Local error

Found 4 expressions with local error:

1.5b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
1.5b
(log (exp (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
0.0b
(/ alpha (+ (+ alpha beta) 2.0))
0.0b
(/ beta (+ (+ alpha beta) 2.0))

rewrite24.0ms

Algorithm
rewrite-expression-head
Counts
4 → 59
Calls

4 calls. Slowest were:

11.0ms
(log (exp (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
5.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
5.0ms
(/ beta (+ (+ alpha beta) 2.0))

series142.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

55.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
38.0ms
(log (exp (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
25.0ms
(/ beta (+ (+ alpha beta) 2.0))
24.0ms
(/ alpha (+ (+ alpha beta) 2.0))

simplify2.3s

Counts
32 → 71
Calls

32 calls. Slowest were:

372.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
313.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
282.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))

prune1.0s

Pruning

7 alts after pruning (7 fresh and 0 done)

Merged error: 4.9b

localize72.0ms

Local error

Found 4 expressions with local error:

1.5b
(- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3))
0.1b
(/ (- (* beta (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))) (* (+ (+ alpha beta) 2.0) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3)))) (* (+ (+ alpha beta) 2.0) (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))))
0.1b
(pow (/ alpha (+ (+ alpha beta) 2.0)) 3)
0.0b
(* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0)))

rewrite74.0ms

Algorithm
rewrite-expression-head
Counts
4 → 186
Calls

4 calls. Slowest were:

47.0ms
(/ (- (* beta (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))) (* (+ (+ alpha beta) 2.0) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3)))) (* (+ (+ alpha beta) 2.0) (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))))
11.0ms
(- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3))
4.0ms
(* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0)))

series512.0ms

Counts
4 → 12
Calls

4 calls. Slowest were:

334.0ms
(/ (- (* beta (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))) (* (+ (+ alpha beta) 2.0) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3)))) (* (+ (+ alpha beta) 2.0) (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))))
78.0ms
(- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3))
52.0ms
(* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0)))
47.0ms
(pow (/ alpha (+ (+ alpha beta) 2.0)) 3)

simplify25.8s

Counts
164 → 198
Calls

164 calls. Slowest were:

851.0ms
(pow (/ alpha (- (* (+ alpha beta) (+ alpha beta)) (* 2.0 2.0))) 3)
757.0ms
(/ (* (* (- (* beta (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))) (* (+ (+ alpha beta) 2.0) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3)))) (- (* beta (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))) (* (+ (+ alpha beta) 2.0) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3))))) (- (* beta (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))) (* (+ (+ alpha beta) 2.0) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3))))) (* (* (* (+ (+ alpha beta) 2.0) (+ (* (/ alpha (+ (+ alpha beta) 2.0)) (/ alpha (+ (+ alpha beta) 2.0))) (+ (* 1.0 1.0) (* (/ 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) (* (/ 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) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))))
688.0ms
(- (* (* beta (+ (* (* alpha alpha) (- (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0))) (* (* (+ (+ alpha beta) 2.0) (+ (+ alpha beta) 2.0)) (- (* (* 1.0 1.0) (* 1.0 1.0)) (* (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))))) (- (+ alpha beta) 2.0)) (* (* (* (+ (+ alpha beta) 2.0) (+ (+ alpha beta) 2.0)) (- (* 1.0 1.0) (* (/ alpha (+ (+ alpha beta) 2.0)) 1.0))) (* (- (* (+ alpha beta) (+ alpha beta)) (* 2.0 2.0)) (- (pow (/ alpha (+ (+ alpha beta) 2.0)) 3) (pow 1.0 3)))))

prune5.8s

Pruning

6 alts after pruning (6 fresh and 0 done)

Merged error: 4.7b

regimes210.0ms

Accuracy

76.1% (3.1b remaining)

Error of 6.3b against oracle of 3.2b and baseline of 16.3b

bsearch120.0ms