Average Error: 29.1 → 1.2
Time: 9.5s
Precision: 64
\[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\]
\[\begin{array}{l} \mathbf{if}\;z \le -5.529459923355985229411890016657604954072 \cdot 10^{74} \lor \neg \left(z \le 7218106116288501178668675409183118056227000\right):\\ \;\;\;\;x + y \cdot \left(\left(\frac{t}{{z}^{2}} + 3.130605476229999961645944495103321969509\right) - 36.52704169880641416057187598198652267456 \cdot \frac{1}{z}\right)\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\\ \end{array}\]
x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}
\begin{array}{l}
\mathbf{if}\;z \le -5.529459923355985229411890016657604954072 \cdot 10^{74} \lor \neg \left(z \le 7218106116288501178668675409183118056227000\right):\\
\;\;\;\;x + y \cdot \left(\left(\frac{t}{{z}^{2}} + 3.130605476229999961645944495103321969509\right) - 36.52704169880641416057187598198652267456 \cdot \frac{1}{z}\right)\\

\mathbf{else}:\\
\;\;\;\;x + y \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r256067 = x;
        double r256068 = y;
        double r256069 = z;
        double r256070 = 3.13060547623;
        double r256071 = r256069 * r256070;
        double r256072 = 11.1667541262;
        double r256073 = r256071 + r256072;
        double r256074 = r256073 * r256069;
        double r256075 = t;
        double r256076 = r256074 + r256075;
        double r256077 = r256076 * r256069;
        double r256078 = a;
        double r256079 = r256077 + r256078;
        double r256080 = r256079 * r256069;
        double r256081 = b;
        double r256082 = r256080 + r256081;
        double r256083 = r256068 * r256082;
        double r256084 = 15.234687407;
        double r256085 = r256069 + r256084;
        double r256086 = r256085 * r256069;
        double r256087 = 31.4690115749;
        double r256088 = r256086 + r256087;
        double r256089 = r256088 * r256069;
        double r256090 = 11.9400905721;
        double r256091 = r256089 + r256090;
        double r256092 = r256091 * r256069;
        double r256093 = 0.607771387771;
        double r256094 = r256092 + r256093;
        double r256095 = r256083 / r256094;
        double r256096 = r256067 + r256095;
        return r256096;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r256097 = z;
        double r256098 = -5.529459923355985e+74;
        bool r256099 = r256097 <= r256098;
        double r256100 = 7.218106116288501e+42;
        bool r256101 = r256097 <= r256100;
        double r256102 = !r256101;
        bool r256103 = r256099 || r256102;
        double r256104 = x;
        double r256105 = y;
        double r256106 = t;
        double r256107 = 2.0;
        double r256108 = pow(r256097, r256107);
        double r256109 = r256106 / r256108;
        double r256110 = 3.13060547623;
        double r256111 = r256109 + r256110;
        double r256112 = 36.527041698806414;
        double r256113 = 1.0;
        double r256114 = r256113 / r256097;
        double r256115 = r256112 * r256114;
        double r256116 = r256111 - r256115;
        double r256117 = r256105 * r256116;
        double r256118 = r256104 + r256117;
        double r256119 = r256097 * r256110;
        double r256120 = 11.1667541262;
        double r256121 = r256119 + r256120;
        double r256122 = r256121 * r256097;
        double r256123 = r256122 + r256106;
        double r256124 = r256123 * r256097;
        double r256125 = a;
        double r256126 = r256124 + r256125;
        double r256127 = r256126 * r256097;
        double r256128 = b;
        double r256129 = r256127 + r256128;
        double r256130 = 15.234687407;
        double r256131 = r256097 + r256130;
        double r256132 = r256131 * r256097;
        double r256133 = 31.4690115749;
        double r256134 = r256132 + r256133;
        double r256135 = r256134 * r256097;
        double r256136 = 11.9400905721;
        double r256137 = r256135 + r256136;
        double r256138 = r256137 * r256097;
        double r256139 = 0.607771387771;
        double r256140 = r256138 + r256139;
        double r256141 = r256129 / r256140;
        double r256142 = r256105 * r256141;
        double r256143 = r256104 + r256142;
        double r256144 = r256103 ? r256118 : r256143;
        return r256144;
}

Error

Bits error versus x

Bits error versus y

Bits error versus z

Bits error versus t

Bits error versus a

Bits error versus b

Try it out

Your Program's Arguments

Results

Enter valid numbers for all inputs

Target

Original29.1
Target1.0
Herbie1.2
\[\begin{array}{l} \mathbf{if}\;z \lt -6.499344996252631754123144978817242590467 \cdot 10^{53}:\\ \;\;\;\;x + \left(\left(3.130605476229999961645944495103321969509 - \frac{36.52704169880641416057187598198652267456}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \mathbf{elif}\;z \lt 7.066965436914286795694558389038333165002 \cdot 10^{59}:\\ \;\;\;\;x + \frac{y}{\frac{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}}\\ \mathbf{else}:\\ \;\;\;\;x + \left(\left(3.130605476229999961645944495103321969509 - \frac{36.52704169880641416057187598198652267456}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -5.529459923355985e+74 or 7.218106116288501e+42 < z

    1. Initial program 61.7

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity61.7

      \[\leadsto x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\color{blue}{1 \cdot \left(\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227\right)}}\]
    4. Applied times-frac60.5

      \[\leadsto x + \color{blue}{\frac{y}{1} \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}}\]
    5. Simplified60.5

      \[\leadsto x + \color{blue}{y} \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\]
    6. Taylor expanded around inf 0.8

      \[\leadsto x + y \cdot \color{blue}{\left(\left(\frac{t}{{z}^{2}} + 3.130605476229999961645944495103321969509\right) - 36.52704169880641416057187598198652267456 \cdot \frac{1}{z}\right)}\]

    if -5.529459923355985e+74 < z < 7.218106116288501e+42

    1. Initial program 3.4

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity3.4

      \[\leadsto x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\color{blue}{1 \cdot \left(\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227\right)}}\]
    4. Applied times-frac1.5

      \[\leadsto x + \color{blue}{\frac{y}{1} \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}}\]
    5. Simplified1.5

      \[\leadsto x + \color{blue}{y} \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification1.2

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -5.529459923355985229411890016657604954072 \cdot 10^{74} \lor \neg \left(z \le 7218106116288501178668675409183118056227000\right):\\ \;\;\;\;x + y \cdot \left(\left(\frac{t}{{z}^{2}} + 3.130605476229999961645944495103321969509\right) - 36.52704169880641416057187598198652267456 \cdot \frac{1}{z}\right)\\ \mathbf{else}:\\ \;\;\;\;x + y \cdot \frac{\left(\left(\left(z \cdot 3.130605476229999961645944495103321969509 + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}{\left(\left(\left(z + 15.2346874069999991263557603815570473671\right) \cdot z + 31.46901157490000144889563671313226222992\right) \cdot z + 11.94009057210000079862766142468899488449\right) \cdot z + 0.6077713877710000378584709324059076607227}\\ \end{array}\]

Reproduce

herbie shell --seed 1978988140 
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, D"
  :precision binary64

  :herbie-target
  (if (< z -6.4993449962526318e53) (+ x (* (+ (- 3.13060547622999996 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1))) (if (< z 7.0669654369142868e59) (+ x (/ y (/ (+ (* (+ (* (+ (* (+ z 15.234687406999999) z) 31.469011574900001) z) 11.940090572100001) z) 0.60777138777100004) (+ (* (+ (* (+ (* (+ (* z 3.13060547622999996) 11.166754126200001) z) t) z) a) z) b)))) (+ x (* (+ (- 3.13060547622999996 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1)))))

  (+ x (/ (* y (+ (* (+ (* (+ (* (+ (* z 3.13060547622999996) 11.166754126200001) z) t) z) a) z) b)) (+ (* (+ (* (+ (* (+ z 15.234687406999999) z) 31.469011574900001) z) 11.940090572100001) z) 0.60777138777100004))))