Average Error: 30.2 → 1.0
Time: 26.8s
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 -3.807302090294030027556419953822894801612 \cdot 10^{70}:\\ \;\;\;\;\left(\left(\frac{\frac{t}{z}}{z} \cdot y + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\ \mathbf{elif}\;z \le 548437100344291305854952900722667028480:\\ \;\;\;\;x + \frac{z \cdot \left(a + \left(\left(11.16675412620000074070958362426608800888 + 3.130605476229999961645944495103321969509 \cdot z\right) \cdot z + t\right) \cdot z\right) + b}{0.6077713877710000378584709324059076607227 + \left(z \cdot \left(31.46901157490000144889563671313226222992 + \left(z + 15.2346874069999991263557603815570473671\right) \cdot z\right) + 11.94009057210000079862766142468899488449\right) \cdot z} \cdot y\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\frac{\frac{t}{z}}{z} \cdot y + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\ \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 -3.807302090294030027556419953822894801612 \cdot 10^{70}:\\
\;\;\;\;\left(\left(\frac{\frac{t}{z}}{z} \cdot y + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\

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

\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{\frac{t}{z}}{z} \cdot y + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r18178114 = x;
        double r18178115 = y;
        double r18178116 = z;
        double r18178117 = 3.13060547623;
        double r18178118 = r18178116 * r18178117;
        double r18178119 = 11.1667541262;
        double r18178120 = r18178118 + r18178119;
        double r18178121 = r18178120 * r18178116;
        double r18178122 = t;
        double r18178123 = r18178121 + r18178122;
        double r18178124 = r18178123 * r18178116;
        double r18178125 = a;
        double r18178126 = r18178124 + r18178125;
        double r18178127 = r18178126 * r18178116;
        double r18178128 = b;
        double r18178129 = r18178127 + r18178128;
        double r18178130 = r18178115 * r18178129;
        double r18178131 = 15.234687407;
        double r18178132 = r18178116 + r18178131;
        double r18178133 = r18178132 * r18178116;
        double r18178134 = 31.4690115749;
        double r18178135 = r18178133 + r18178134;
        double r18178136 = r18178135 * r18178116;
        double r18178137 = 11.9400905721;
        double r18178138 = r18178136 + r18178137;
        double r18178139 = r18178138 * r18178116;
        double r18178140 = 0.607771387771;
        double r18178141 = r18178139 + r18178140;
        double r18178142 = r18178130 / r18178141;
        double r18178143 = r18178114 + r18178142;
        return r18178143;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r18178144 = z;
        double r18178145 = -3.80730209029403e+70;
        bool r18178146 = r18178144 <= r18178145;
        double r18178147 = t;
        double r18178148 = r18178147 / r18178144;
        double r18178149 = r18178148 / r18178144;
        double r18178150 = y;
        double r18178151 = r18178149 * r18178150;
        double r18178152 = 3.13060547623;
        double r18178153 = r18178152 * r18178150;
        double r18178154 = r18178151 + r18178153;
        double r18178155 = 36.527041698806414;
        double r18178156 = r18178144 / r18178150;
        double r18178157 = r18178155 / r18178156;
        double r18178158 = r18178154 - r18178157;
        double r18178159 = x;
        double r18178160 = r18178158 + r18178159;
        double r18178161 = 5.484371003442913e+38;
        bool r18178162 = r18178144 <= r18178161;
        double r18178163 = a;
        double r18178164 = 11.1667541262;
        double r18178165 = r18178152 * r18178144;
        double r18178166 = r18178164 + r18178165;
        double r18178167 = r18178166 * r18178144;
        double r18178168 = r18178167 + r18178147;
        double r18178169 = r18178168 * r18178144;
        double r18178170 = r18178163 + r18178169;
        double r18178171 = r18178144 * r18178170;
        double r18178172 = b;
        double r18178173 = r18178171 + r18178172;
        double r18178174 = 0.607771387771;
        double r18178175 = 31.4690115749;
        double r18178176 = 15.234687407;
        double r18178177 = r18178144 + r18178176;
        double r18178178 = r18178177 * r18178144;
        double r18178179 = r18178175 + r18178178;
        double r18178180 = r18178144 * r18178179;
        double r18178181 = 11.9400905721;
        double r18178182 = r18178180 + r18178181;
        double r18178183 = r18178182 * r18178144;
        double r18178184 = r18178174 + r18178183;
        double r18178185 = r18178173 / r18178184;
        double r18178186 = r18178185 * r18178150;
        double r18178187 = r18178159 + r18178186;
        double r18178188 = r18178162 ? r18178187 : r18178160;
        double r18178189 = r18178146 ? r18178160 : r18178188;
        return r18178189;
}

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

Original30.2
Target0.8
Herbie1.0
\[\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 < -3.80730209029403e+70 or 5.484371003442913e+38 < 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. Taylor expanded around inf 8.6

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

      \[\leadsto x + \color{blue}{\left(\left(3.130605476229999961645944495103321969509 \cdot y + \frac{y}{z} \cdot \frac{t}{z}\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right)}\]
    4. Using strategy rm
    5. Applied div-inv0.8

      \[\leadsto x + \left(\left(3.130605476229999961645944495103321969509 \cdot y + \color{blue}{\left(y \cdot \frac{1}{z}\right)} \cdot \frac{t}{z}\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right)\]
    6. Applied associate-*l*0.7

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

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

    if -3.80730209029403e+70 < z < 5.484371003442913e+38

    1. Initial program 2.9

      \[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-identity2.9

      \[\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.3

      \[\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.3

      \[\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.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -3.807302090294030027556419953822894801612 \cdot 10^{70}:\\ \;\;\;\;\left(\left(\frac{\frac{t}{z}}{z} \cdot y + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\ \mathbf{elif}\;z \le 548437100344291305854952900722667028480:\\ \;\;\;\;x + \frac{z \cdot \left(a + \left(\left(11.16675412620000074070958362426608800888 + 3.130605476229999961645944495103321969509 \cdot z\right) \cdot z + t\right) \cdot z\right) + b}{0.6077713877710000378584709324059076607227 + \left(z \cdot \left(31.46901157490000144889563671313226222992 + \left(z + 15.2346874069999991263557603815570473671\right) \cdot z\right) + 11.94009057210000079862766142468899488449\right) \cdot z} \cdot y\\ \mathbf{else}:\\ \;\;\;\;\left(\left(\frac{\frac{t}{z}}{z} \cdot y + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< z -6.499344996252632e+53) (+ x (* (+ (- 3.13060547623 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1.0))) (if (< z 7.066965436914287e+59) (+ x (/ y (/ (+ (* (+ (* (+ (* (+ z 15.234687407) z) 31.4690115749) z) 11.9400905721) z) 0.607771387771) (+ (* (+ (* (+ (* (+ (* z 3.13060547623) 11.1667541262) z) t) z) a) z) b)))) (+ x (* (+ (- 3.13060547623 (/ 36.527041698806414 z)) (/ t (* z z))) (/ y 1.0)))))

  (+ x (/ (* y (+ (* (+ (* (+ (* (+ (* z 3.13060547623) 11.1667541262) z) t) z) a) z) b)) (+ (* (+ (* (+ (* (+ z 15.234687407) z) 31.4690115749) z) 11.9400905721) z) 0.607771387771))))