Average Error: 24.1 → 12.3
Time: 24.0s
Precision: binary64
Cost: 33536
\[\left(\alpha > -1 \land \beta > -1\right) \land i > 0\]
\[\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2} \]
\[\frac{\sqrt{{\left(\mathsf{fma}\left(\alpha + \beta, \frac{\frac{\beta - \alpha}{\beta + \mathsf{fma}\left(2, i, \alpha\right)}}{\mathsf{fma}\left(2, i, \alpha + \left(\beta + 2\right)\right)}, 1\right)\right)}^{2}}}{2} \]
(FPCore (alpha beta i)
 :precision binary64
 (/
  (+
   (/
    (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2.0 i)))
    (+ (+ (+ alpha beta) (* 2.0 i)) 2.0))
   1.0)
  2.0))
(FPCore (alpha beta i)
 :precision binary64
 (/
  (sqrt
   (pow
    (fma
     (+ alpha beta)
     (/
      (/ (- beta alpha) (+ beta (fma 2.0 i alpha)))
      (fma 2.0 i (+ alpha (+ beta 2.0))))
     1.0)
    2.0))
  2.0))
double code(double alpha, double beta, double i) {
	return (((((alpha + beta) * (beta - alpha)) / ((alpha + beta) + (2.0 * i))) / (((alpha + beta) + (2.0 * i)) + 2.0)) + 1.0) / 2.0;
}
double code(double alpha, double beta, double i) {
	return sqrt(pow(fma((alpha + beta), (((beta - alpha) / (beta + fma(2.0, i, alpha))) / fma(2.0, i, (alpha + (beta + 2.0)))), 1.0), 2.0)) / 2.0;
}
function code(alpha, beta, i)
	return Float64(Float64(Float64(Float64(Float64(Float64(alpha + beta) * Float64(beta - alpha)) / Float64(Float64(alpha + beta) + Float64(2.0 * i))) / Float64(Float64(Float64(alpha + beta) + Float64(2.0 * i)) + 2.0)) + 1.0) / 2.0)
end
function code(alpha, beta, i)
	return Float64(sqrt((fma(Float64(alpha + beta), Float64(Float64(Float64(beta - alpha) / Float64(beta + fma(2.0, i, alpha))) / fma(2.0, i, Float64(alpha + Float64(beta + 2.0)))), 1.0) ^ 2.0)) / 2.0)
end
code[alpha_, beta_, i_] := N[(N[(N[(N[(N[(N[(alpha + beta), $MachinePrecision] * N[(beta - alpha), $MachinePrecision]), $MachinePrecision] / N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(alpha + beta), $MachinePrecision] + N[(2.0 * i), $MachinePrecision]), $MachinePrecision] + 2.0), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision] / 2.0), $MachinePrecision]
code[alpha_, beta_, i_] := N[(N[Sqrt[N[Power[N[(N[(alpha + beta), $MachinePrecision] * N[(N[(N[(beta - alpha), $MachinePrecision] / N[(beta + N[(2.0 * i + alpha), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(2.0 * i + N[(alpha + N[(beta + 2.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + 1.0), $MachinePrecision], 2.0], $MachinePrecision]], $MachinePrecision] / 2.0), $MachinePrecision]
\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}
\frac{\sqrt{{\left(\mathsf{fma}\left(\alpha + \beta, \frac{\frac{\beta - \alpha}{\beta + \mathsf{fma}\left(2, i, \alpha\right)}}{\mathsf{fma}\left(2, i, \alpha + \left(\beta + 2\right)\right)}, 1\right)\right)}^{2}}}{2}

Error

Derivation

  1. Initial program 24.1

    \[\frac{\frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{\left(\alpha + \beta\right) + 2 \cdot i}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2} \]
  2. Simplified12.5

    \[\leadsto \color{blue}{\frac{\mathsf{fma}\left(\alpha + \beta, \frac{\frac{\beta - \alpha}{\alpha + \mathsf{fma}\left(2, i, \beta\right)}}{\alpha + \mathsf{fma}\left(2, i, \beta + 2\right)}, 1\right)}{2}} \]
    Proof
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 alpha (fma.f64 2 i beta))) (+.f64 alpha (fma.f64 2 i (+.f64 beta 2)))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 alpha (Rewrite<= fma-def_binary64 (+.f64 (*.f64 2 i) beta)))) (+.f64 alpha (fma.f64 2 i (+.f64 beta 2)))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 alpha (Rewrite<= +-commutative_binary64 (+.f64 beta (*.f64 2 i))))) (+.f64 alpha (fma.f64 2 i (+.f64 beta 2)))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (Rewrite<= associate-+l+_binary64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)))) (+.f64 alpha (fma.f64 2 i (+.f64 beta 2)))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 alpha (Rewrite<= fma-def_binary64 (+.f64 (*.f64 2 i) (+.f64 beta 2))))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 alpha (Rewrite<= associate-+l+_binary64 (+.f64 (+.f64 (*.f64 2 i) beta) 2)))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 alpha (+.f64 (Rewrite<= +-commutative_binary64 (+.f64 beta (*.f64 2 i))) 2))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (Rewrite<= associate-+l+_binary64 (+.f64 (+.f64 alpha (+.f64 beta (*.f64 2 i))) 2))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (/.f64 (-.f64 beta alpha) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 (Rewrite<= associate-+l+_binary64 (+.f64 (+.f64 alpha beta) (*.f64 2 i))) 2)) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (Rewrite=> associate-/l/_binary64 (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i))))) 1) 2): 56 points increase in error, 20 points decrease in error
    (/.f64 (fma.f64 (+.f64 alpha beta) (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i)))) (Rewrite<= metadata-eval (neg.f64 -1))) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (Rewrite<= fma-neg_binary64 (-.f64 (*.f64 (+.f64 alpha beta) (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i))))) -1)) 2): 13 points increase in error, 14 points decrease in error
    (/.f64 (-.f64 (Rewrite<= *-commutative_binary64 (*.f64 (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i)))) (+.f64 alpha beta))) -1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (Rewrite=> fma-neg_binary64 (fma.f64 (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i)))) (+.f64 alpha beta) (neg.f64 -1))) 2): 14 points increase in error, 13 points decrease in error
    (/.f64 (fma.f64 (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i)))) (+.f64 alpha beta) (Rewrite=> metadata-eval 1)) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (Rewrite<= fma-def_binary64 (+.f64 (*.f64 (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i)))) (+.f64 alpha beta)) 1)) 2): 13 points increase in error, 14 points decrease in error
    (/.f64 (+.f64 (Rewrite=> *-commutative_binary64 (*.f64 (+.f64 alpha beta) (/.f64 (-.f64 beta alpha) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i)))))) 1) 2): 0 points increase in error, 0 points decrease in error
    (/.f64 (+.f64 (Rewrite=> associate-*r/_binary64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (*.f64 (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2) (+.f64 (+.f64 alpha beta) (*.f64 2 i))))) 1) 2): 78 points increase in error, 3 points decrease in error
    (/.f64 (+.f64 (Rewrite<= associate-/l/_binary64 (/.f64 (/.f64 (*.f64 (+.f64 alpha beta) (-.f64 beta alpha)) (+.f64 (+.f64 alpha beta) (*.f64 2 i))) (+.f64 (+.f64 (+.f64 alpha beta) (*.f64 2 i)) 2))) 1) 2): 1 points increase in error, 3 points decrease in error
  3. Applied egg-rr12.7

    \[\leadsto \frac{\mathsf{fma}\left(\alpha + \beta, \frac{\color{blue}{{\left(\sqrt[3]{\beta - \alpha}\right)}^{2} \cdot \left(\sqrt[3]{\beta - \alpha} \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}\right)}}{\alpha + \mathsf{fma}\left(2, i, \beta + 2\right)}, 1\right)}{2} \]
  4. Applied egg-rr12.3

    \[\leadsto \frac{\color{blue}{\sqrt{{\left(\mathsf{fma}\left(\alpha + \beta, \frac{\frac{\beta - \alpha}{\mathsf{fma}\left(2, i, \alpha\right) + \beta}}{\mathsf{fma}\left(2, i, \left(\beta + 2\right) + \alpha\right)}, 1\right)\right)}^{2}}}}{2} \]
  5. Final simplification12.3

    \[\leadsto \frac{\sqrt{{\left(\mathsf{fma}\left(\alpha + \beta, \frac{\frac{\beta - \alpha}{\beta + \mathsf{fma}\left(2, i, \alpha\right)}}{\mathsf{fma}\left(2, i, \alpha + \left(\beta + 2\right)\right)}, 1\right)\right)}^{2}}}{2} \]

Alternatives

Alternative 1
Error12.4
Cost27072
\[\frac{e^{\mathsf{log1p}\left(\left(\alpha + \beta\right) \cdot \frac{\frac{\beta - \alpha}{\alpha + \mathsf{fma}\left(2, i, \beta\right)}}{\alpha + \left(2 + \mathsf{fma}\left(2, i, \beta\right)\right)}\right)}}{2} \]
Alternative 2
Error12.4
Cost14400
\[\frac{1 + \left(\alpha + \beta\right) \cdot \frac{\frac{\beta - \alpha}{\alpha + \mathsf{fma}\left(2, i, \beta\right)}}{\alpha + \left(2 + \mathsf{fma}\left(2, i, \beta\right)\right)}}{2} \]
Alternative 3
Error12.4
Cost8256
\[\frac{1 + \frac{\left(\beta - \alpha\right) \cdot \left(\left(\alpha + \beta\right) \cdot \frac{1}{\mathsf{fma}\left(2, i, \alpha + \beta\right)}\right)}{2 + \left(\left(\alpha + \beta\right) + 2 \cdot i\right)}}{2} \]
Alternative 4
Error12.4
Cost8128
\[\frac{1 + \frac{\left(\alpha + \beta\right) \cdot \frac{\beta - \alpha}{\alpha + \mathsf{fma}\left(2, i, \beta\right)}}{\left(\alpha + \beta\right) + \left(2 + 2 \cdot i\right)}}{2} \]
Alternative 5
Error24.1
Cost1856
\[\begin{array}{l} t_0 := \left(\alpha + \beta\right) + 2 \cdot i\\ \frac{1 + \frac{\frac{\left(\alpha + \beta\right) \cdot \left(\beta - \alpha\right)}{t_0}}{2 + t_0}}{2} \end{array} \]
Alternative 6
Error12.4
Cost1856
\[\frac{1 + \frac{\frac{\alpha + \beta}{\frac{\alpha + \left(\beta + 2 \cdot i\right)}{\beta - \alpha}}}{\left(\alpha + \beta\right) + \left(2 + 2 \cdot i\right)}}{2} \]

Error

Reproduce

herbie shell --seed 2022334 
(FPCore (alpha beta i)
  :name "Octave 3.8, jcobi/2"
  :precision binary64
  :pre (and (and (> alpha -1.0) (> beta -1.0)) (> i 0.0))
  (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2.0 i))) (+ (+ (+ alpha beta) (* 2.0 i)) 2.0)) 1.0) 2.0))