Average Error: 29.4 → 1.4
Time: 21.3s
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 -3240660210645078190185871572992:\\ \;\;\;\;\left(\left(\frac{\frac{t}{z} \cdot y}{z} + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\ \mathbf{elif}\;z \le 587734457247325707726001012736:\\ \;\;\;\;x + \frac{y}{\frac{z \cdot \left(11.94009057210000079862766142468899488449 + \left(31.46901157490000144889563671313226222992 + z \cdot \left(z + 15.2346874069999991263557603815570473671\right)\right) \cdot z\right) + 0.6077713877710000378584709324059076607227}{b + \left(z \cdot \left(\left(3.130605476229999961645944495103321969509 \cdot z + 11.16675412620000074070958362426608800888\right) \cdot z + t\right) + a\right) \cdot z}}\\ \mathbf{else}:\\ \;\;\;\;x + \left(\left(y \cdot \frac{t}{z \cdot z} + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right)\\ \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 -3240660210645078190185871572992:\\
\;\;\;\;\left(\left(\frac{\frac{t}{z} \cdot y}{z} + 3.130605476229999961645944495103321969509 \cdot y\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right) + x\\

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

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r20540056 = x;
        double r20540057 = y;
        double r20540058 = z;
        double r20540059 = 3.13060547623;
        double r20540060 = r20540058 * r20540059;
        double r20540061 = 11.1667541262;
        double r20540062 = r20540060 + r20540061;
        double r20540063 = r20540062 * r20540058;
        double r20540064 = t;
        double r20540065 = r20540063 + r20540064;
        double r20540066 = r20540065 * r20540058;
        double r20540067 = a;
        double r20540068 = r20540066 + r20540067;
        double r20540069 = r20540068 * r20540058;
        double r20540070 = b;
        double r20540071 = r20540069 + r20540070;
        double r20540072 = r20540057 * r20540071;
        double r20540073 = 15.234687407;
        double r20540074 = r20540058 + r20540073;
        double r20540075 = r20540074 * r20540058;
        double r20540076 = 31.4690115749;
        double r20540077 = r20540075 + r20540076;
        double r20540078 = r20540077 * r20540058;
        double r20540079 = 11.9400905721;
        double r20540080 = r20540078 + r20540079;
        double r20540081 = r20540080 * r20540058;
        double r20540082 = 0.607771387771;
        double r20540083 = r20540081 + r20540082;
        double r20540084 = r20540072 / r20540083;
        double r20540085 = r20540056 + r20540084;
        return r20540085;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r20540086 = z;
        double r20540087 = -3.240660210645078e+30;
        bool r20540088 = r20540086 <= r20540087;
        double r20540089 = t;
        double r20540090 = r20540089 / r20540086;
        double r20540091 = y;
        double r20540092 = r20540090 * r20540091;
        double r20540093 = r20540092 / r20540086;
        double r20540094 = 3.13060547623;
        double r20540095 = r20540094 * r20540091;
        double r20540096 = r20540093 + r20540095;
        double r20540097 = 36.527041698806414;
        double r20540098 = r20540086 / r20540091;
        double r20540099 = r20540097 / r20540098;
        double r20540100 = r20540096 - r20540099;
        double r20540101 = x;
        double r20540102 = r20540100 + r20540101;
        double r20540103 = 5.877344572473257e+29;
        bool r20540104 = r20540086 <= r20540103;
        double r20540105 = 11.9400905721;
        double r20540106 = 31.4690115749;
        double r20540107 = 15.234687407;
        double r20540108 = r20540086 + r20540107;
        double r20540109 = r20540086 * r20540108;
        double r20540110 = r20540106 + r20540109;
        double r20540111 = r20540110 * r20540086;
        double r20540112 = r20540105 + r20540111;
        double r20540113 = r20540086 * r20540112;
        double r20540114 = 0.607771387771;
        double r20540115 = r20540113 + r20540114;
        double r20540116 = b;
        double r20540117 = r20540094 * r20540086;
        double r20540118 = 11.1667541262;
        double r20540119 = r20540117 + r20540118;
        double r20540120 = r20540119 * r20540086;
        double r20540121 = r20540120 + r20540089;
        double r20540122 = r20540086 * r20540121;
        double r20540123 = a;
        double r20540124 = r20540122 + r20540123;
        double r20540125 = r20540124 * r20540086;
        double r20540126 = r20540116 + r20540125;
        double r20540127 = r20540115 / r20540126;
        double r20540128 = r20540091 / r20540127;
        double r20540129 = r20540101 + r20540128;
        double r20540130 = r20540086 * r20540086;
        double r20540131 = r20540089 / r20540130;
        double r20540132 = r20540091 * r20540131;
        double r20540133 = r20540132 + r20540095;
        double r20540134 = r20540133 - r20540099;
        double r20540135 = r20540101 + r20540134;
        double r20540136 = r20540104 ? r20540129 : r20540135;
        double r20540137 = r20540088 ? r20540102 : r20540136;
        return r20540137;
}

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.4
Target0.8
Herbie1.4
\[\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 3 regimes
  2. if z < -3.240660210645078e+30

    1. Initial program 58.8

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

      \[\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. Simplified1.4

      \[\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 associate-*l/2.7

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

    if -3.240660210645078e+30 < z < 5.877344572473257e+29

    1. Initial program 1.1

      \[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 associate-/l*0.5

      \[\leadsto x + \color{blue}{\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}}}\]

    if 5.877344572473257e+29 < z

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

      \[\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. Simplified1.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. Taylor expanded around 0 10.1

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

      \[\leadsto x + \left(\left(3.130605476229999961645944495103321969509 \cdot y + \color{blue}{\frac{t}{z \cdot z} \cdot y}\right) - \frac{36.52704169880641416057187598198652267456}{\frac{z}{y}}\right)\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.4

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

Reproduce

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