Average Error: 16.3 → 6.8
Time: 21.3s
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 1141425.55002668 \lor \neg \left(\alpha \le 1.097513178925152 \cdot 10^{+47}\right) \land \alpha \le 2.1957474934551214 \cdot 10^{+75}:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\frac{\alpha}{\sqrt{2.0 + \left(\beta + \alpha\right)}}}{\sqrt{2.0 + \left(\beta + \alpha\right)}} - 1.0\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 < 1141425.55002668 or 1.097513178925152e+47 < alpha < 2.1957474934551214e+75

    1. Initial program 2.1

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

      \[\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-sqr-sqrt2.0

      \[\leadsto \frac{\frac{\beta}{\left(\alpha + \beta\right) + 2.0} - \left(\frac{\alpha}{\color{blue}{\sqrt{\left(\alpha + \beta\right) + 2.0} \cdot \sqrt{\left(\alpha + \beta\right) + 2.0}}} - 1.0\right)}{2.0}\]
    7. Applied associate-/r*2.0

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

    if 1141425.55002668 < alpha < 1.097513178925152e+47 or 2.1957474934551214e+75 < alpha

    1. Initial program 49.7

      \[\frac{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2.0} + 1.0}{2.0}\]
    2. Using strategy rm
    3. Applied div-sub49.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-48.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. Taylor expanded around -inf 17.9

      \[\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}\]
    6. Simplified17.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 1141425.55002668 \lor \neg \left(\alpha \le 1.097513178925152 \cdot 10^{+47}\right) \land \alpha \le 2.1957474934551214 \cdot 10^{+75}:\\ \;\;\;\;\frac{\frac{\beta}{2.0 + \left(\beta + \alpha\right)} - \left(\frac{\frac{\alpha}{\sqrt{2.0 + \left(\beta + \alpha\right)}}}{\sqrt{2.0 + \left(\beta + \alpha\right)}} - 1.0\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 2019018 
(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: 20.2s)Debug log

sample390.0ms

Algorithm
intervals
Results
355.0ms192×body80valid
9.0ms24×body1280valid
6.0ms20×body640valid
6.0ms256×pre80true
2.0ms10×body320valid
1.0ms10×body160valid

simplify45.0ms

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

prune4.0ms

Pruning

1 alts after pruning (1 fresh and 0 done)

Merged error: 15.1b

localize27.0ms

Local error

Found 2 expressions with local error:

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

rewrite19.0ms

Algorithm
rewrite-expression-head
Rules
10×add-cube-cbrt
10×*-un-lft-identity
10×add-sqr-sqrt
times-frac
add-exp-log
add-cbrt-cube
associate-/l*
associate-/r*
associate-/l/
add-log-exp
flip-+
associate-/r/
div-sub
flip3-+
pow1
flip--
div-inv
associate-+l-
div-exp
flip3--
frac-2neg
clear-num
+-commutative
cbrt-undiv
Counts
2 → 43
Calls
2 calls:
Slowest
14.0ms
(+ (/ (- beta alpha) (+ (+ alpha beta) 2.0)) 1.0)
5.0ms
(/ (- beta alpha) (+ (+ alpha beta) 2.0))

series66.0ms

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

simplify1.3s

Counts
37 → 49
Calls
37 calls:
Slowest
168.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 2.0) (* 2.0 (/ 1 beta)))
149.0ms
(+ (* (+ alpha beta) (+ alpha beta)) (- (* 2.0 2.0) (* (+ alpha beta) 2.0)))
132.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 2.0) (* 2.0 (/ 1 beta)))
126.0ms
(- (+ (* 4.0 (/ 1 (pow beta 2))) 1) (* 2.0 (/ 1 beta)))
109.0ms
(/ (* (* (- beta alpha) (- beta alpha)) (- beta alpha)) (* (* (+ (+ alpha beta) 2.0) (+ (+ alpha beta) 2.0)) (+ (+ alpha beta) 2.0)))

prune498.0ms

Pruning

10 alts after pruning (10 fresh and 0 done)

Merged error: 14.3b

localize13.0ms

Local error

Found 4 expressions with local error:

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

rewrite30.0ms

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity
add-sqr-sqrt
add-log-exp
add-cube-cbrt
associate-/r*
associate-/r/
add-exp-log
add-cbrt-cube
pow1
flip--
flip3--
sub-neg
associate--r+
div-inv
flip-+
frac-sub
flip3-+
frac-2neg
clear-num
difference-of-squares
associate--r-
distribute-lft-out--
diff-log
Counts
4 → 60
Calls
4 calls:
Slowest
15.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
8.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
3.0ms
(/ alpha (+ (+ alpha beta) 2.0))
3.0ms
(/ beta (+ (+ alpha beta) 2.0))

series184.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
56.0ms
(- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))
49.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
40.0ms
(/ alpha (+ (+ alpha beta) 2.0))
38.0ms
(/ beta (+ (+ alpha beta) 2.0))

simplify3.1s

Counts
32 → 72
Calls
32 calls:
Slowest
507.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))))
406.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
341.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
253.0ms
(- (* 0.5 beta) (+ (* 0.25 (pow beta 2)) (* 0.25 (* beta alpha))))
224.0ms
(- (* 0.5 alpha) (+ (* 0.25 (pow alpha 2)) (* 0.25 (* beta alpha))))

prune747.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 3.2b

localize14.0ms

Local error

Found 4 expressions with local error:

6.3b
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
6.3b
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
6.3b
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
2.6b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)

rewrite8.0ms

Algorithm
rewrite-expression-head
Rules
18×cbrt-prod
add-cube-cbrt
*-un-lft-identity
add-sqr-sqrt
associate-/r/
add-log-exp
add-exp-log
add-cbrt-cube
pow1
div-inv
flip-+
pow1/3
flip3-+
cbrt-div
flip--
flip3--
sub-neg
Counts
4 → 56
Calls
4 calls:
Slowest
5.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
1.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
1.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
1.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))

series408.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
146.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
130.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
95.0ms
(cbrt (/ beta (+ (+ alpha beta) 2.0)))
37.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)

simplify4.5s

Counts
33 → 68
Calls
33 calls:
Slowest
441.0ms
(cbrt (/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3))))
432.0ms
(cbrt (/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3))))
416.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
406.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
389.0ms
(cbrt (/ beta (+ (pow (+ alpha beta) 3) (pow 2.0 3))))

prune840.0ms

Pruning

8 alts after pruning (8 fresh and 0 done)

Merged error: 3.2b

localize20.0ms

Local error

Found 4 expressions with local error:

10.2b
(log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
2.6b
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
0.6b
(exp (log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))
0.0b
(/ beta (+ (+ alpha beta) 2.0))

rewrite60.0ms

Algorithm
rewrite-expression-head
Rules
12×*-un-lft-identity
12×add-sqr-sqrt
10×log-prod
add-cube-cbrt
log-div
pow1
flip--
add-exp-log
exp-sum
flip3--
add-log-exp
frac-sub
exp-diff
add-cbrt-cube
exp-prod
associate-/r*
difference-of-squares
distribute-lft-out--
log-pow
associate-/r/
rem-exp-log
div-inv
flip-+
rem-log-exp
flip3-+
frac-2neg
sub-neg
clear-num
Counts
4 → 65
Calls
4 calls:
Slowest
24.0ms
(exp (log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))
21.0ms
(log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
10.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
3.0ms
(/ beta (+ (+ alpha beta) 2.0))

series222.0ms

Counts
4 → 12
Calls
4 calls:
Slowest
67.0ms
(log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)))
59.0ms
(- (/ alpha (+ (+ alpha beta) 2.0)) 1.0)
56.0ms
(exp (log (- (/ beta (+ (+ alpha beta) 2.0)) (- (/ alpha (+ (+ alpha beta) 2.0)) 1.0))))
40.0ms
(/ beta (+ (+ alpha beta) 2.0))

simplify4.2s

Counts
41 → 77
Calls
41 calls:
Slowest
648.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)))))
510.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))))))
411.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
325.0ms
(- (* 4.0 (/ 1 (pow alpha 2))) (+ (* 2.0 (/ 1 alpha)) (* 8.0 (/ 1 (pow alpha 3)))))
263.0ms
(- (* 0.5 beta) (+ (* 0.25 (pow beta 2)) (* 0.25 (* beta alpha))))

prune915.0ms

Pruning

9 alts after pruning (9 fresh and 0 done)

Merged error: 3.2b

regimes170.0ms

Accuracy

70.5% (3.9b remaining)

Error of 6.8b against oracle of 2.9b and baseline of 16.1b

bsearch261.0ms

end0.0ms

sample2.2s

Algorithm
intervals
Results
989.0ms5831×body80valid
389.0ms813×body1280valid
265.0ms719×body640valid
263.0ms8000×pre80true
119.0ms419×body320valid
36.0ms218×body160valid