Average Error: 23.6 → 11.3
Time: 12.3s
Precision: 64
\[\alpha \gt -1 \land \beta \gt -1 \land i \gt 0.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}\]
\[\begin{array}{l} \mathbf{if}\;\alpha \le 5.7374949380522437 \cdot 10^{160}:\\ \;\;\;\;\frac{\frac{\frac{\alpha + \beta}{\mathsf{fma}\left(i, 2, \alpha + \beta\right) \cdot \frac{1}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(2, \frac{1}{\alpha}, 8 \cdot \frac{1}{{\alpha}^{3}} - 4 \cdot \frac{1}{{\alpha}^{2}}\right)}{2}\\ \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} + 1}{2}
\begin{array}{l}
\mathbf{if}\;\alpha \le 5.7374949380522437 \cdot 10^{160}:\\
\;\;\;\;\frac{\frac{\frac{\alpha + \beta}{\mathsf{fma}\left(i, 2, \alpha + \beta\right) \cdot \frac{1}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\\

\mathbf{else}:\\
\;\;\;\;\frac{\mathsf{fma}\left(2, \frac{1}{\alpha}, 8 \cdot \frac{1}{{\alpha}^{3}} - 4 \cdot \frac{1}{{\alpha}^{2}}\right)}{2}\\

\end{array}
double f(double alpha, double beta, double i) {
        double r116683 = alpha;
        double r116684 = beta;
        double r116685 = r116683 + r116684;
        double r116686 = r116684 - r116683;
        double r116687 = r116685 * r116686;
        double r116688 = 2.0;
        double r116689 = i;
        double r116690 = r116688 * r116689;
        double r116691 = r116685 + r116690;
        double r116692 = r116687 / r116691;
        double r116693 = r116691 + r116688;
        double r116694 = r116692 / r116693;
        double r116695 = 1.0;
        double r116696 = r116694 + r116695;
        double r116697 = r116696 / r116688;
        return r116697;
}

double f(double alpha, double beta, double i) {
        double r116698 = alpha;
        double r116699 = 5.737494938052244e+160;
        bool r116700 = r116698 <= r116699;
        double r116701 = beta;
        double r116702 = r116698 + r116701;
        double r116703 = i;
        double r116704 = 2.0;
        double r116705 = fma(r116703, r116704, r116702);
        double r116706 = 1.0;
        double r116707 = r116701 - r116698;
        double r116708 = r116706 / r116707;
        double r116709 = r116705 * r116708;
        double r116710 = r116702 / r116709;
        double r116711 = r116704 * r116703;
        double r116712 = r116702 + r116711;
        double r116713 = r116712 + r116704;
        double r116714 = r116710 / r116713;
        double r116715 = 1.0;
        double r116716 = r116714 + r116715;
        double r116717 = r116716 / r116704;
        double r116718 = r116706 / r116698;
        double r116719 = 8.0;
        double r116720 = 3.0;
        double r116721 = pow(r116698, r116720);
        double r116722 = r116706 / r116721;
        double r116723 = r116719 * r116722;
        double r116724 = 4.0;
        double r116725 = 2.0;
        double r116726 = pow(r116698, r116725);
        double r116727 = r116706 / r116726;
        double r116728 = r116724 * r116727;
        double r116729 = r116723 - r116728;
        double r116730 = fma(r116704, r116718, r116729);
        double r116731 = r116730 / r116704;
        double r116732 = r116700 ? r116717 : r116731;
        return r116732;
}

Error

Bits error versus alpha

Bits error versus beta

Bits error versus i

Derivation

  1. Split input into 2 regimes
  2. if alpha < 5.737494938052244e+160

    1. Initial program 16.3

      \[\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. Using strategy rm
    3. Applied associate-/l*5.8

      \[\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} + 1}{2}\]
    4. Simplified5.8

      \[\leadsto \frac{\frac{\frac{\alpha + \beta}{\color{blue}{\frac{\mathsf{fma}\left(i, 2, \alpha + \beta\right)}{\beta - \alpha}}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\]
    5. Using strategy rm
    6. Applied div-inv5.8

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

    if 5.737494938052244e+160 < alpha

    1. Initial program 64.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}\]
    2. Taylor expanded around inf 42.2

      \[\leadsto \frac{\color{blue}{\left(2 \cdot \frac{1}{\alpha} + 8 \cdot \frac{1}{{\alpha}^{3}}\right) - 4 \cdot \frac{1}{{\alpha}^{2}}}}{2}\]
    3. Simplified42.2

      \[\leadsto \frac{\color{blue}{\mathsf{fma}\left(2, \frac{1}{\alpha}, 8 \cdot \frac{1}{{\alpha}^{3}} - 4 \cdot \frac{1}{{\alpha}^{2}}\right)}}{2}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification11.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;\alpha \le 5.7374949380522437 \cdot 10^{160}:\\ \;\;\;\;\frac{\frac{\frac{\alpha + \beta}{\mathsf{fma}\left(i, 2, \alpha + \beta\right) \cdot \frac{1}{\beta - \alpha}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(2, \frac{1}{\alpha}, 8 \cdot \frac{1}{{\alpha}^{3}} - 4 \cdot \frac{1}{{\alpha}^{2}}\right)}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2020083 +o rules:numerics
(FPCore (alpha beta i)
  :name "Octave 3.8, jcobi/2"
  :precision binary64
  :pre (and (> alpha -1) (> beta -1) (> i 0.0))
  (/ (+ (/ (/ (* (+ alpha beta) (- beta alpha)) (+ (+ alpha beta) (* 2 i))) (+ (+ (+ alpha beta) (* 2 i)) 2)) 1) 2))