Average Error: 23.9 → 7.6
Time: 24.1s
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}\;\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} \le -1:\\ \;\;\;\;\frac{\left(2 \cdot \frac{1}{\alpha} + 8 \cdot \frac{1}{{\alpha}^{3}}\right) - 4 \cdot \frac{1}{{\alpha}^{2}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(e^{\frac{\frac{\alpha + \beta}{1}}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}} + 1}\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}\;\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} \le -1:\\
\;\;\;\;\frac{\left(2 \cdot \frac{1}{\alpha} + 8 \cdot \frac{1}{{\alpha}^{3}}\right) - 4 \cdot \frac{1}{{\alpha}^{2}}}{2}\\

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

\end{array}
double f(double alpha, double beta, double i) {
        double r175829 = alpha;
        double r175830 = beta;
        double r175831 = r175829 + r175830;
        double r175832 = r175830 - r175829;
        double r175833 = r175831 * r175832;
        double r175834 = 2.0;
        double r175835 = i;
        double r175836 = r175834 * r175835;
        double r175837 = r175831 + r175836;
        double r175838 = r175833 / r175837;
        double r175839 = r175837 + r175834;
        double r175840 = r175838 / r175839;
        double r175841 = 1.0;
        double r175842 = r175840 + r175841;
        double r175843 = r175842 / r175834;
        return r175843;
}

double f(double alpha, double beta, double i) {
        double r175844 = alpha;
        double r175845 = beta;
        double r175846 = r175844 + r175845;
        double r175847 = r175845 - r175844;
        double r175848 = r175846 * r175847;
        double r175849 = 2.0;
        double r175850 = i;
        double r175851 = r175849 * r175850;
        double r175852 = r175846 + r175851;
        double r175853 = r175848 / r175852;
        double r175854 = r175852 + r175849;
        double r175855 = r175853 / r175854;
        double r175856 = -1.0;
        bool r175857 = r175855 <= r175856;
        double r175858 = 1.0;
        double r175859 = r175858 / r175844;
        double r175860 = r175849 * r175859;
        double r175861 = 8.0;
        double r175862 = 3.0;
        double r175863 = pow(r175844, r175862);
        double r175864 = r175858 / r175863;
        double r175865 = r175861 * r175864;
        double r175866 = r175860 + r175865;
        double r175867 = 4.0;
        double r175868 = 2.0;
        double r175869 = pow(r175844, r175868);
        double r175870 = r175858 / r175869;
        double r175871 = r175867 * r175870;
        double r175872 = r175866 - r175871;
        double r175873 = r175872 / r175849;
        double r175874 = r175846 / r175858;
        double r175875 = r175847 / r175852;
        double r175876 = r175854 / r175875;
        double r175877 = r175874 / r175876;
        double r175878 = 1.0;
        double r175879 = r175877 + r175878;
        double r175880 = exp(r175879);
        double r175881 = log(r175880);
        double r175882 = r175881 / r175849;
        double r175883 = r175857 ? r175873 : r175882;
        return r175883;
}

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.0 i))) (+ (+ (+ alpha beta) (* 2.0 i)) 2.0)) < -1.0

    1. Initial program 63.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. Taylor expanded around inf 32.9

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

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

    1. Initial program 12.9

      \[\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 *-un-lft-identity12.9

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

      \[\leadsto \frac{\frac{\color{blue}{\frac{\alpha + \beta}{1} \cdot \frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}}{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2} + 1}{2}\]
    5. Applied associate-/l*0.5

      \[\leadsto \frac{\color{blue}{\frac{\frac{\alpha + \beta}{1}}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}}} + 1}{2}\]
    6. Using strategy rm
    7. Applied add-log-exp0.5

      \[\leadsto \frac{\frac{\frac{\alpha + \beta}{1}}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}} + \color{blue}{\log \left(e^{1}\right)}}{2}\]
    8. Applied add-log-exp0.5

      \[\leadsto \frac{\color{blue}{\log \left(e^{\frac{\frac{\alpha + \beta}{1}}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}}}\right)} + \log \left(e^{1}\right)}{2}\]
    9. Applied sum-log0.5

      \[\leadsto \frac{\color{blue}{\log \left(e^{\frac{\frac{\alpha + \beta}{1}}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}}} \cdot e^{1}\right)}}{2}\]
    10. Simplified0.5

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;\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} \le -1:\\ \;\;\;\;\frac{\left(2 \cdot \frac{1}{\alpha} + 8 \cdot \frac{1}{{\alpha}^{3}}\right) - 4 \cdot \frac{1}{{\alpha}^{2}}}{2}\\ \mathbf{else}:\\ \;\;\;\;\frac{\log \left(e^{\frac{\frac{\alpha + \beta}{1}}{\frac{\left(\left(\alpha + \beta\right) + 2 \cdot i\right) + 2}{\frac{\beta - \alpha}{\left(\alpha + \beta\right) + 2 \cdot i}}} + 1}\right)}{2}\\ \end{array}\]

Reproduce

herbie shell --seed 2020035 
(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))