Average Error: 3.9 → 1.4
Time: 9.1m
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1\]
\[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1} \le 7.9304048996115863 \cdot 10^{-30}:\\ \;\;\;\;\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\alpha + \left(1 + \beta\right)}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \end{array}\]
\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}
\begin{array}{l}
\mathbf{if}\;\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1} \le 7.9304048996115863 \cdot 10^{-30}:\\
\;\;\;\;\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{\frac{\alpha + \left(1 + \beta\right)}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\

\end{array}
double f(double alpha, double beta) {
        double r1025372 = alpha;
        double r1025373 = beta;
        double r1025374 = r1025372 + r1025373;
        double r1025375 = r1025373 * r1025372;
        double r1025376 = r1025374 + r1025375;
        double r1025377 = 1.0;
        double r1025378 = r1025376 + r1025377;
        double r1025379 = 2.0;
        double r1025380 = r1025379 * r1025377;
        double r1025381 = r1025374 + r1025380;
        double r1025382 = r1025378 / r1025381;
        double r1025383 = r1025382 / r1025381;
        double r1025384 = r1025381 + r1025377;
        double r1025385 = r1025383 / r1025384;
        return r1025385;
}

double f(double alpha, double beta) {
        double r1025386 = alpha;
        double r1025387 = beta;
        double r1025388 = r1025386 + r1025387;
        double r1025389 = r1025387 * r1025386;
        double r1025390 = r1025388 + r1025389;
        double r1025391 = 1.0;
        double r1025392 = r1025390 + r1025391;
        double r1025393 = 2.0;
        double r1025394 = r1025393 * r1025391;
        double r1025395 = r1025388 + r1025394;
        double r1025396 = r1025392 / r1025395;
        double r1025397 = r1025396 / r1025395;
        double r1025398 = r1025395 + r1025391;
        double r1025399 = r1025397 / r1025398;
        double r1025400 = 7.930404899611586e-30;
        bool r1025401 = r1025399 <= r1025400;
        double r1025402 = r1025391 + r1025387;
        double r1025403 = r1025386 + r1025402;
        double r1025404 = r1025403 / r1025395;
        double r1025405 = r1025404 / r1025395;
        double r1025406 = r1025405 / r1025398;
        double r1025407 = r1025401 ? r1025399 : r1025406;
        return r1025407;
}

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 beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ (+ alpha beta) (* 2.0 1.0)) 1.0)) < 7.930404899611586e-30

    1. Initial program 0.1

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]

    if 7.930404899611586e-30 < (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ (+ alpha beta) (* 2.0 1.0)) 1.0))

    1. Initial program 7.4

      \[\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
    2. Taylor expanded around 0 2.6

      \[\leadsto \frac{\frac{\frac{\color{blue}{\alpha + \left(1 + \beta\right)}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.4

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1} \le 7.9304048996115863 \cdot 10^{-30}:\\ \;\;\;\;\frac{\frac{\frac{\left(\left(\alpha + \beta\right) + \beta \cdot \alpha\right) + 1}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{\alpha + \left(1 + \beta\right)}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\alpha + \beta\right) + 2 \cdot 1}}{\left(\left(\alpha + \beta\right) + 2 \cdot 1\right) + 1}\\ \end{array}\]

Reproduce

herbie shell --seed 2019198 
(FPCore (alpha beta)
  :name "Octave 3.8, jcobi/3"
  :pre (and (> alpha -1.0) (> beta -1.0))
  (/ (/ (/ (+ (+ (+ alpha beta) (* beta alpha)) 1.0) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ alpha beta) (* 2.0 1.0))) (+ (+ (+ alpha beta) (* 2.0 1.0)) 1.0)))