Average Error: 28.9 → 1.7
Time: 20.9s
Precision: 64
\[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
\[\begin{array}{l} \mathbf{if}\;z \le -8.355580014785396 \cdot 10^{+24}:\\ \;\;\;\;\left(3.13060547623 \cdot y + \left(\frac{\frac{t}{z}}{z} \cdot y - \frac{y \cdot 36.527041698806414}{z}\right)\right) + x\\ \mathbf{elif}\;z \le 5.826555097007075 \cdot 10^{+25}:\\ \;\;\;\;x + \frac{y \cdot \left(b + \left(z \cdot \left(\left(z \cdot 11.1667541262 + \left(3.13060547623 \cdot z\right) \cdot z\right) + t\right) + a\right) \cdot z\right)}{0.607771387771 + z \cdot \left(11.9400905721 + \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right) \cdot z\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(3.13060547623 \cdot y + \left(\frac{t}{\frac{z \cdot z}{y}} - \frac{y \cdot 36.527041698806414}{z}\right)\right) + x\\ \end{array}\]
x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}
\begin{array}{l}
\mathbf{if}\;z \le -8.355580014785396 \cdot 10^{+24}:\\
\;\;\;\;\left(3.13060547623 \cdot y + \left(\frac{\frac{t}{z}}{z} \cdot y - \frac{y \cdot 36.527041698806414}{z}\right)\right) + x\\

\mathbf{elif}\;z \le 5.826555097007075 \cdot 10^{+25}:\\
\;\;\;\;x + \frac{y \cdot \left(b + \left(z \cdot \left(\left(z \cdot 11.1667541262 + \left(3.13060547623 \cdot z\right) \cdot z\right) + t\right) + a\right) \cdot z\right)}{0.607771387771 + z \cdot \left(11.9400905721 + \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right) \cdot z\right)}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r19635231 = x;
        double r19635232 = y;
        double r19635233 = z;
        double r19635234 = 3.13060547623;
        double r19635235 = r19635233 * r19635234;
        double r19635236 = 11.1667541262;
        double r19635237 = r19635235 + r19635236;
        double r19635238 = r19635237 * r19635233;
        double r19635239 = t;
        double r19635240 = r19635238 + r19635239;
        double r19635241 = r19635240 * r19635233;
        double r19635242 = a;
        double r19635243 = r19635241 + r19635242;
        double r19635244 = r19635243 * r19635233;
        double r19635245 = b;
        double r19635246 = r19635244 + r19635245;
        double r19635247 = r19635232 * r19635246;
        double r19635248 = 15.234687407;
        double r19635249 = r19635233 + r19635248;
        double r19635250 = r19635249 * r19635233;
        double r19635251 = 31.4690115749;
        double r19635252 = r19635250 + r19635251;
        double r19635253 = r19635252 * r19635233;
        double r19635254 = 11.9400905721;
        double r19635255 = r19635253 + r19635254;
        double r19635256 = r19635255 * r19635233;
        double r19635257 = 0.607771387771;
        double r19635258 = r19635256 + r19635257;
        double r19635259 = r19635247 / r19635258;
        double r19635260 = r19635231 + r19635259;
        return r19635260;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r19635261 = z;
        double r19635262 = -8.355580014785396e+24;
        bool r19635263 = r19635261 <= r19635262;
        double r19635264 = 3.13060547623;
        double r19635265 = y;
        double r19635266 = r19635264 * r19635265;
        double r19635267 = t;
        double r19635268 = r19635267 / r19635261;
        double r19635269 = r19635268 / r19635261;
        double r19635270 = r19635269 * r19635265;
        double r19635271 = 36.527041698806414;
        double r19635272 = r19635265 * r19635271;
        double r19635273 = r19635272 / r19635261;
        double r19635274 = r19635270 - r19635273;
        double r19635275 = r19635266 + r19635274;
        double r19635276 = x;
        double r19635277 = r19635275 + r19635276;
        double r19635278 = 5.826555097007075e+25;
        bool r19635279 = r19635261 <= r19635278;
        double r19635280 = b;
        double r19635281 = 11.1667541262;
        double r19635282 = r19635261 * r19635281;
        double r19635283 = r19635264 * r19635261;
        double r19635284 = r19635283 * r19635261;
        double r19635285 = r19635282 + r19635284;
        double r19635286 = r19635285 + r19635267;
        double r19635287 = r19635261 * r19635286;
        double r19635288 = a;
        double r19635289 = r19635287 + r19635288;
        double r19635290 = r19635289 * r19635261;
        double r19635291 = r19635280 + r19635290;
        double r19635292 = r19635265 * r19635291;
        double r19635293 = 0.607771387771;
        double r19635294 = 11.9400905721;
        double r19635295 = 31.4690115749;
        double r19635296 = 15.234687407;
        double r19635297 = r19635261 + r19635296;
        double r19635298 = r19635261 * r19635297;
        double r19635299 = r19635295 + r19635298;
        double r19635300 = r19635299 * r19635261;
        double r19635301 = r19635294 + r19635300;
        double r19635302 = r19635261 * r19635301;
        double r19635303 = r19635293 + r19635302;
        double r19635304 = r19635292 / r19635303;
        double r19635305 = r19635276 + r19635304;
        double r19635306 = r19635261 * r19635261;
        double r19635307 = r19635306 / r19635265;
        double r19635308 = r19635267 / r19635307;
        double r19635309 = r19635308 - r19635273;
        double r19635310 = r19635266 + r19635309;
        double r19635311 = r19635310 + r19635276;
        double r19635312 = r19635279 ? r19635305 : r19635311;
        double r19635313 = r19635263 ? r19635277 : r19635312;
        return r19635313;
}

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

Original28.9
Target1.0
Herbie1.7
\[\begin{array}{l} \mathbf{if}\;z \lt -6.499344996252632 \cdot 10^{+53}:\\ \;\;\;\;x + \left(\left(3.13060547623 - \frac{36.527041698806414}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \mathbf{elif}\;z \lt 7.066965436914287 \cdot 10^{+59}:\\ \;\;\;\;x + \frac{y}{\frac{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}{\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}}\\ \mathbf{else}:\\ \;\;\;\;x + \left(\left(3.13060547623 - \frac{36.527041698806414}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if z < -8.355580014785396e+24

    1. Initial program 57.3

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    2. Taylor expanded around inf 8.7

      \[\leadsto x + \color{blue}{\left(\left(\frac{t \cdot y}{{z}^{2}} + 3.13060547623 \cdot y\right) - 36.527041698806414 \cdot \frac{y}{z}\right)}\]
    3. Simplified2.2

      \[\leadsto x + \color{blue}{\left(3.13060547623 \cdot y + \left(\frac{t}{z \cdot z} \cdot y - \frac{y \cdot 36.527041698806414}{z}\right)\right)}\]
    4. Using strategy rm
    5. Applied associate-/r*2.2

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

    if -8.355580014785396e+24 < z < 5.826555097007075e+25

    1. Initial program 0.7

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    2. Taylor expanded around 0 0.7

      \[\leadsto x + \frac{y \cdot \left(\left(\left(\color{blue}{\left(11.1667541262 \cdot z + 3.13060547623 \cdot {z}^{2}\right)} + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    3. Simplified0.7

      \[\leadsto x + \frac{y \cdot \left(\left(\left(\color{blue}{\left(11.1667541262 \cdot z + \left(3.13060547623 \cdot z\right) \cdot z\right)} + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]

    if 5.826555097007075e+25 < z

    1. Initial program 56.3

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    2. Taylor expanded around inf 9.7

      \[\leadsto x + \color{blue}{\left(\left(\frac{t \cdot y}{{z}^{2}} + 3.13060547623 \cdot y\right) - 36.527041698806414 \cdot \frac{y}{z}\right)}\]
    3. Simplified2.5

      \[\leadsto x + \color{blue}{\left(3.13060547623 \cdot y + \left(\frac{t}{z \cdot z} \cdot y - \frac{y \cdot 36.527041698806414}{z}\right)\right)}\]
    4. Using strategy rm
    5. Applied associate-/r*2.5

      \[\leadsto x + \left(3.13060547623 \cdot y + \left(\color{blue}{\frac{\frac{t}{z}}{z}} \cdot y - \frac{y \cdot 36.527041698806414}{z}\right)\right)\]
    6. Taylor expanded around 0 9.8

      \[\leadsto x + \left(3.13060547623 \cdot y + \left(\color{blue}{\frac{t \cdot y}{{z}^{2}}} - \frac{y \cdot 36.527041698806414}{z}\right)\right)\]
    7. Simplified2.9

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -8.355580014785396 \cdot 10^{+24}:\\ \;\;\;\;\left(3.13060547623 \cdot y + \left(\frac{\frac{t}{z}}{z} \cdot y - \frac{y \cdot 36.527041698806414}{z}\right)\right) + x\\ \mathbf{elif}\;z \le 5.826555097007075 \cdot 10^{+25}:\\ \;\;\;\;x + \frac{y \cdot \left(b + \left(z \cdot \left(\left(z \cdot 11.1667541262 + \left(3.13060547623 \cdot z\right) \cdot z\right) + t\right) + a\right) \cdot z\right)}{0.607771387771 + z \cdot \left(11.9400905721 + \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right) \cdot z\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(3.13060547623 \cdot y + \left(\frac{t}{\frac{z \cdot z}{y}} - \frac{y \cdot 36.527041698806414}{z}\right)\right) + x\\ \end{array}\]

Reproduce

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

  (+ 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))))