Average Error: 20.3 → 0.1
Time: 21.9s
Precision: 64
\[x + \frac{y \cdot \left(\left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) \cdot z + 0.2791953179185249767080279070796677842736\right)}{\left(z + 6.012459259764103336465268512256443500519\right) \cdot z + 3.350343815022303939343828460550867021084}\]
\[\begin{array}{l} \mathbf{if}\;z \le -3346074214531689086976 \lor \neg \left(z \le \frac{6033680699424451}{33554432}\right):\\ \;\;\;\;x + \left(\frac{1353279196958449}{18014398509481984} \cdot \frac{y}{z} + \frac{4992947066835229}{72057594037927936} \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \left(\frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\left(\left({z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}\right) \cdot z\right) \cdot 2251799813685248 + \left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 7544303578448747} \cdot \left(\left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 2251799813685248\right)\right)\\ \end{array}\]
x + \frac{y \cdot \left(\left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) \cdot z + 0.2791953179185249767080279070796677842736\right)}{\left(z + 6.012459259764103336465268512256443500519\right) \cdot z + 3.350343815022303939343828460550867021084}
\begin{array}{l}
\mathbf{if}\;z \le -3346074214531689086976 \lor \neg \left(z \le \frac{6033680699424451}{33554432}\right):\\
\;\;\;\;x + \left(\frac{1353279196958449}{18014398509481984} \cdot \frac{y}{z} + \frac{4992947066835229}{72057594037927936} \cdot y\right)\\

\mathbf{else}:\\
\;\;\;\;x + y \cdot \left(\frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\left(\left({z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}\right) \cdot z\right) \cdot 2251799813685248 + \left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 7544303578448747} \cdot \left(\left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 2251799813685248\right)\right)\\

\end{array}
double f(double x, double y, double z) {
        double r469838 = x;
        double r469839 = y;
        double r469840 = z;
        double r469841 = 0.0692910599291889;
        double r469842 = r469840 * r469841;
        double r469843 = 0.4917317610505968;
        double r469844 = r469842 + r469843;
        double r469845 = r469844 * r469840;
        double r469846 = 0.279195317918525;
        double r469847 = r469845 + r469846;
        double r469848 = r469839 * r469847;
        double r469849 = 6.012459259764103;
        double r469850 = r469840 + r469849;
        double r469851 = r469850 * r469840;
        double r469852 = 3.350343815022304;
        double r469853 = r469851 + r469852;
        double r469854 = r469848 / r469853;
        double r469855 = r469838 + r469854;
        return r469855;
}

double f(double x, double y, double z) {
        double r469856 = z;
        double r469857 = -3.346074214531689e+21;
        bool r469858 = r469856 <= r469857;
        double r469859 = 6033680699424451.0;
        double r469860 = 33554432.0;
        double r469861 = r469859 / r469860;
        bool r469862 = r469856 <= r469861;
        double r469863 = !r469862;
        bool r469864 = r469858 || r469863;
        double r469865 = x;
        double r469866 = 1353279196958449.0;
        double r469867 = 18014398509481984.0;
        double r469868 = r469866 / r469867;
        double r469869 = y;
        double r469870 = r469869 / r469856;
        double r469871 = r469868 * r469870;
        double r469872 = 4992947066835229.0;
        double r469873 = 7.205759403792794e+16;
        double r469874 = r469872 / r469873;
        double r469875 = r469874 * r469869;
        double r469876 = r469871 + r469875;
        double r469877 = r469865 + r469876;
        double r469878 = r469856 * r469874;
        double r469879 = 4429125951667411.0;
        double r469880 = 9007199254740992.0;
        double r469881 = r469879 / r469880;
        double r469882 = r469878 + r469881;
        double r469883 = r469882 * r469856;
        double r469884 = 5029535718965825.0;
        double r469885 = r469884 / r469867;
        double r469886 = r469883 + r469885;
        double r469887 = 3.0;
        double r469888 = pow(r469856, r469887);
        double r469889 = 1692356830115869.0;
        double r469890 = 281474976710656.0;
        double r469891 = r469889 / r469890;
        double r469892 = pow(r469891, r469887);
        double r469893 = r469888 + r469892;
        double r469894 = r469893 * r469856;
        double r469895 = 2251799813685248.0;
        double r469896 = r469894 * r469895;
        double r469897 = r469856 * r469856;
        double r469898 = r469891 * r469891;
        double r469899 = r469856 * r469891;
        double r469900 = r469898 - r469899;
        double r469901 = r469897 + r469900;
        double r469902 = 7544303578448747.0;
        double r469903 = r469901 * r469902;
        double r469904 = r469896 + r469903;
        double r469905 = r469886 / r469904;
        double r469906 = r469901 * r469895;
        double r469907 = r469905 * r469906;
        double r469908 = r469869 * r469907;
        double r469909 = r469865 + r469908;
        double r469910 = r469864 ? r469877 : r469909;
        return r469910;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original20.3
Target0.1
Herbie0.1
\[\begin{array}{l} \mathbf{if}\;z \lt -8120153.6524566747248172760009765625:\\ \;\;\;\;\left(\frac{0.07512208616047560960637952121032867580652}{z} + 0.06929105992918889456166908757950295694172\right) \cdot y - \left(\frac{0.4046220386999212492717958866705885156989 \cdot y}{z \cdot z} - x\right)\\ \mathbf{elif}\;z \lt 657611897278737678336:\\ \;\;\;\;x + \left(y \cdot \left(\left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) \cdot z + 0.2791953179185249767080279070796677842736\right)\right) \cdot \frac{1}{\left(z + 6.012459259764103336465268512256443500519\right) \cdot z + 3.350343815022303939343828460550867021084}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{0.07512208616047560960637952121032867580652}{z} + 0.06929105992918889456166908757950295694172\right) \cdot y - \left(\frac{0.4046220386999212492717958866705885156989 \cdot y}{z \cdot z} - x\right)\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -3.346074214531689e+21 or 179817697.38866243 < z

    1. Initial program 42.1

      \[x + \frac{y \cdot \left(\left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) \cdot z + 0.2791953179185249767080279070796677842736\right)}{\left(z + 6.012459259764103336465268512256443500519\right) \cdot z + 3.350343815022303939343828460550867021084}\]
    2. Simplified42.1

      \[\leadsto \color{blue}{x + \frac{y \cdot \left(\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}\right)}{\left(z + \frac{1692356830115869}{281474976710656}\right) \cdot z + \frac{7544303578448747}{2251799813685248}}}\]
    3. Taylor expanded around inf 0.0

      \[\leadsto \color{blue}{x + \left(0.07512208616047560960637952121032867580652 \cdot \frac{y}{z} + 0.06929105992918889456166908757950295694172 \cdot y\right)}\]
    4. Simplified0.0

      \[\leadsto \color{blue}{x + \left(\frac{1353279196958449}{18014398509481984} \cdot \frac{y}{z} + \frac{4992947066835229}{72057594037927936} \cdot y\right)}\]

    if -3.346074214531689e+21 < z < 179817697.38866243

    1. Initial program 0.2

      \[x + \frac{y \cdot \left(\left(z \cdot 0.06929105992918889456166908757950295694172 + 0.4917317610505967939715787906607147306204\right) \cdot z + 0.2791953179185249767080279070796677842736\right)}{\left(z + 6.012459259764103336465268512256443500519\right) \cdot z + 3.350343815022303939343828460550867021084}\]
    2. Simplified0.2

      \[\leadsto \color{blue}{x + \frac{y \cdot \left(\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}\right)}{\left(z + \frac{1692356830115869}{281474976710656}\right) \cdot z + \frac{7544303578448747}{2251799813685248}}}\]
    3. Using strategy rm
    4. Applied *-un-lft-identity0.2

      \[\leadsto x + \frac{y \cdot \left(\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}\right)}{\color{blue}{1 \cdot \left(\left(z + \frac{1692356830115869}{281474976710656}\right) \cdot z + \frac{7544303578448747}{2251799813685248}\right)}}\]
    5. Applied times-frac0.1

      \[\leadsto x + \color{blue}{\frac{y}{1} \cdot \frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\left(z + \frac{1692356830115869}{281474976710656}\right) \cdot z + \frac{7544303578448747}{2251799813685248}}}\]
    6. Simplified0.1

      \[\leadsto x + \color{blue}{y} \cdot \frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\left(z + \frac{1692356830115869}{281474976710656}\right) \cdot z + \frac{7544303578448747}{2251799813685248}}\]
    7. Using strategy rm
    8. Applied flip3-+0.1

      \[\leadsto x + y \cdot \frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\color{blue}{\frac{{z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}}{z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)}} \cdot z + \frac{7544303578448747}{2251799813685248}}\]
    9. Applied associate-*l/0.1

      \[\leadsto x + y \cdot \frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\color{blue}{\frac{\left({z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}\right) \cdot z}{z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)}} + \frac{7544303578448747}{2251799813685248}}\]
    10. Applied frac-add0.1

      \[\leadsto x + y \cdot \frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\color{blue}{\frac{\left(\left({z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}\right) \cdot z\right) \cdot 2251799813685248 + \left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 7544303578448747}{\left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 2251799813685248}}}\]
    11. Applied associate-/r/0.1

      \[\leadsto x + y \cdot \color{blue}{\left(\frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\left(\left({z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}\right) \cdot z\right) \cdot 2251799813685248 + \left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 7544303578448747} \cdot \left(\left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 2251799813685248\right)\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.1

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -3346074214531689086976 \lor \neg \left(z \le \frac{6033680699424451}{33554432}\right):\\ \;\;\;\;x + \left(\frac{1353279196958449}{18014398509481984} \cdot \frac{y}{z} + \frac{4992947066835229}{72057594037927936} \cdot y\right)\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \left(\frac{\left(z \cdot \frac{4992947066835229}{72057594037927936} + \frac{4429125951667411}{9007199254740992}\right) \cdot z + \frac{5029535718965825}{18014398509481984}}{\left(\left({z}^{3} + {\left(\frac{1692356830115869}{281474976710656}\right)}^{3}\right) \cdot z\right) \cdot 2251799813685248 + \left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 7544303578448747} \cdot \left(\left(z \cdot z + \left(\frac{1692356830115869}{281474976710656} \cdot \frac{1692356830115869}{281474976710656} - z \cdot \frac{1692356830115869}{281474976710656}\right)\right) \cdot 2251799813685248\right)\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2019303 
(FPCore (x y z)
  :name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, B"
  :precision binary64

  :herbie-target
  (if (< z -8120153.6524566747) (- (* (+ (/ 0.07512208616047561 z) 0.0692910599291888946) y) (- (/ (* 0.404622038699921249 y) (* z z)) x)) (if (< z 657611897278737680000) (+ x (* (* y (+ (* (+ (* z 0.0692910599291888946) 0.49173176105059679) z) 0.279195317918524977)) (/ 1 (+ (* (+ z 6.0124592597641033) z) 3.35034381502230394)))) (- (* (+ (/ 0.07512208616047561 z) 0.0692910599291888946) y) (- (/ (* 0.404622038699921249 y) (* z z)) x))))

  (+ x (/ (* y (+ (* (+ (* z 0.0692910599291888946) 0.49173176105059679) z) 0.279195317918524977)) (+ (* (+ z 6.0124592597641033) z) 3.35034381502230394))))