Average Error: 23.5 → 7.3
Time: 1.1m
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 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.0} + 1.0}{2.0}\]
\[\begin{array}{l} \mathbf{if}\;\frac{\frac{\left(\beta + \alpha\right) \cdot \left(\beta - \alpha\right)}{2 \cdot i + \left(\beta + \alpha\right)}}{2.0 + \left(2 \cdot i + \left(\beta + \alpha\right)\right)} \le -0.9999999999999999:\\ \;\;\;\;\frac{\frac{8.0}{\alpha \cdot \left(\alpha \cdot \alpha\right)} + \left(\frac{2.0}{\alpha} - \frac{4.0}{\alpha \cdot \alpha}\right)}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{\frac{2 \cdot i + \left(\beta + \alpha\right)}{\beta - \alpha}}}{2.0 + \left(2 \cdot i + \left(\beta + \alpha\right)\right)} \cdot \left(\beta + \alpha\right) + 1.0}{2.0}\\ \end{array}\]
\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.0} + 1.0}{2.0}
\begin{array}{l}
\mathbf{if}\;\frac{\frac{\left(\beta + \alpha\right) \cdot \left(\beta - \alpha\right)}{2 \cdot i + \left(\beta + \alpha\right)}}{2.0 + \left(2 \cdot i + \left(\beta + \alpha\right)\right)} \le -0.9999999999999999:\\
\;\;\;\;\frac{\frac{8.0}{\alpha \cdot \left(\alpha \cdot \alpha\right)} + \left(\frac{2.0}{\alpha} - \frac{4.0}{\alpha \cdot \alpha}\right)}{2.0}\\

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

\end{array}
double f(double alpha, double beta, double i) {
        double r3385460 = alpha;
        double r3385461 = beta;
        double r3385462 = r3385460 + r3385461;
        double r3385463 = r3385461 - r3385460;
        double r3385464 = r3385462 * r3385463;
        double r3385465 = 2.0;
        double r3385466 = i;
        double r3385467 = r3385465 * r3385466;
        double r3385468 = r3385462 + r3385467;
        double r3385469 = r3385464 / r3385468;
        double r3385470 = 2.0;
        double r3385471 = r3385468 + r3385470;
        double r3385472 = r3385469 / r3385471;
        double r3385473 = 1.0;
        double r3385474 = r3385472 + r3385473;
        double r3385475 = r3385474 / r3385470;
        return r3385475;
}

double f(double alpha, double beta, double i) {
        double r3385476 = beta;
        double r3385477 = alpha;
        double r3385478 = r3385476 + r3385477;
        double r3385479 = r3385476 - r3385477;
        double r3385480 = r3385478 * r3385479;
        double r3385481 = 2.0;
        double r3385482 = i;
        double r3385483 = r3385481 * r3385482;
        double r3385484 = r3385483 + r3385478;
        double r3385485 = r3385480 / r3385484;
        double r3385486 = 2.0;
        double r3385487 = r3385486 + r3385484;
        double r3385488 = r3385485 / r3385487;
        double r3385489 = -0.9999999999999999;
        bool r3385490 = r3385488 <= r3385489;
        double r3385491 = 8.0;
        double r3385492 = r3385477 * r3385477;
        double r3385493 = r3385477 * r3385492;
        double r3385494 = r3385491 / r3385493;
        double r3385495 = r3385486 / r3385477;
        double r3385496 = 4.0;
        double r3385497 = r3385496 / r3385492;
        double r3385498 = r3385495 - r3385497;
        double r3385499 = r3385494 + r3385498;
        double r3385500 = r3385499 / r3385486;
        double r3385501 = 1.0;
        double r3385502 = r3385484 / r3385479;
        double r3385503 = r3385501 / r3385502;
        double r3385504 = r3385503 / r3385487;
        double r3385505 = r3385504 * r3385478;
        double r3385506 = 1.0;
        double r3385507 = r3385505 + r3385506;
        double r3385508 = r3385507 / r3385486;
        double r3385509 = r3385490 ? r3385500 : r3385508;
        return r3385509;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

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)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2.0)) < -0.9999999999999999

    1. Initial program 62.8

      \[\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.0} + 1.0}{2.0}\]
    2. Taylor expanded around -inf 32.7

      \[\leadsto \frac{\color{blue}{\left(2.0 \cdot \frac{1}{\alpha} + 8.0 \cdot \frac{1}{{\alpha}^{3}}\right) - 4.0 \cdot \frac{1}{{\alpha}^{2}}}}{2.0}\]
    3. Simplified32.7

      \[\leadsto \frac{\color{blue}{\frac{8.0}{\alpha \cdot \left(\alpha \cdot \alpha\right)} + \left(\frac{2.0}{\alpha} - \frac{4.0}{\alpha \cdot \alpha}\right)}}{2.0}\]

    if -0.9999999999999999 < (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2.0))

    1. Initial program 12.6

      \[\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.0} + 1.0}{2.0}\]
    2. Using strategy rm
    3. Applied associate-/l*0.3

      \[\leadsto \frac{\frac{\color{blue}{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0} + 1.0}{2.0}\]
    4. Using strategy rm
    5. Applied *-un-lft-identity0.3

      \[\leadsto \frac{\frac{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + \color{blue}{1 \cdot 2.0}} + 1.0}{2.0}\]
    6. Applied *-un-lft-identity0.3

      \[\leadsto \frac{\frac{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}{\color{blue}{1 \cdot \left(\left(\alpha + \beta\right) + 2 \cdot i\right)} + 1 \cdot 2.0} + 1.0}{2.0}\]
    7. Applied distribute-lft-out0.3

      \[\leadsto \frac{\frac{\frac{\alpha + \beta}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}{\color{blue}{1 \cdot \left(\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0\right)}} + 1.0}{2.0}\]
    8. Applied div-inv0.3

      \[\leadsto \frac{\frac{\color{blue}{\left(\alpha + \beta\right) \cdot \frac{1}{\frac{\left(\alpha + \beta\right) + 2 \cdot i}{\beta - \alpha}}}}{1 \cdot \left(\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2.0\right)} + 1.0}{2.0}\]
    9. Applied times-frac0.3

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\frac{\left(\beta + \alpha\right) \cdot \left(\beta - \alpha\right)}{2 \cdot i + \left(\beta + \alpha\right)}}{2.0 + \left(2 \cdot i + \left(\beta + \alpha\right)\right)} \le -0.9999999999999999:\\ \;\;\;\;\frac{\frac{8.0}{\alpha \cdot \left(\alpha \cdot \alpha\right)} + \left(\frac{2.0}{\alpha} - \frac{4.0}{\alpha \cdot \alpha}\right)}{2.0}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{\frac{1}{\frac{2 \cdot i + \left(\beta + \alpha\right)}{\beta - \alpha}}}{2.0 + \left(2 \cdot i + \left(\beta + \alpha\right)\right)} \cdot \left(\beta + \alpha\right) + 1.0}{2.0}\\ \end{array}\]

Reproduce

herbie shell --seed 2019129 
(FPCore (alpha beta i)
  :name "Octave 3.8, jcobi/2"
  :pre (and (> alpha -1) (> beta -1) (> i 0))
  (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2.0)) 1.0) 2.0))