Average Error: 26.3 → 0.9
Time: 25.6s
Precision: 64
\[\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
\[\begin{array}{l} \mathbf{if}\;x \le -3.1485706152712823 \cdot 10^{38} \lor \neg \left(x \le 2.9239076483770014 \cdot 10^{28}\right):\\ \;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848115\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right) + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\frac{\left({\left(\left(x + 43.3400022514000014\right) \cdot x\right)}^{3} + {263.50507472100003}^{3}\right) \cdot x}{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) + \left(263.50507472100003 \cdot 263.50507472100003 - \left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot 263.50507472100003\right)} + 313.399215894\right) \cdot x + 47.066876606000001}\\ \end{array}\]
\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}
\begin{array}{l}
\mathbf{if}\;x \le -3.1485706152712823 \cdot 10^{38} \lor \neg \left(x \le 2.9239076483770014 \cdot 10^{28}\right):\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848115\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right) + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\frac{\left({\left(\left(x + 43.3400022514000014\right) \cdot x\right)}^{3} + {263.50507472100003}^{3}\right) \cdot x}{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) + \left(263.50507472100003 \cdot 263.50507472100003 - \left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot 263.50507472100003\right)} + 313.399215894\right) \cdot x + 47.066876606000001}\\

\end{array}
double f(double x, double y, double z) {
        double r313331 = x;
        double r313332 = 2.0;
        double r313333 = r313331 - r313332;
        double r313334 = 4.16438922228;
        double r313335 = r313331 * r313334;
        double r313336 = 78.6994924154;
        double r313337 = r313335 + r313336;
        double r313338 = r313337 * r313331;
        double r313339 = 137.519416416;
        double r313340 = r313338 + r313339;
        double r313341 = r313340 * r313331;
        double r313342 = y;
        double r313343 = r313341 + r313342;
        double r313344 = r313343 * r313331;
        double r313345 = z;
        double r313346 = r313344 + r313345;
        double r313347 = r313333 * r313346;
        double r313348 = 43.3400022514;
        double r313349 = r313331 + r313348;
        double r313350 = r313349 * r313331;
        double r313351 = 263.505074721;
        double r313352 = r313350 + r313351;
        double r313353 = r313352 * r313331;
        double r313354 = 313.399215894;
        double r313355 = r313353 + r313354;
        double r313356 = r313355 * r313331;
        double r313357 = 47.066876606;
        double r313358 = r313356 + r313357;
        double r313359 = r313347 / r313358;
        return r313359;
}

double f(double x, double y, double z) {
        double r313360 = x;
        double r313361 = -3.1485706152712823e+38;
        bool r313362 = r313360 <= r313361;
        double r313363 = 2.9239076483770014e+28;
        bool r313364 = r313360 <= r313363;
        double r313365 = !r313364;
        bool r313366 = r313362 || r313365;
        double r313367 = y;
        double r313368 = 2.0;
        double r313369 = pow(r313360, r313368);
        double r313370 = r313367 / r313369;
        double r313371 = 4.16438922228;
        double r313372 = r313371 * r313360;
        double r313373 = r313370 + r313372;
        double r313374 = 110.11392429848115;
        double r313375 = r313373 - r313374;
        double r313376 = 2.0;
        double r313377 = r313360 - r313376;
        double r313378 = r313371 * r313369;
        double r313379 = 78.6994924154;
        double r313380 = r313379 * r313360;
        double r313381 = r313378 + r313380;
        double r313382 = 137.519416416;
        double r313383 = r313381 + r313382;
        double r313384 = r313383 * r313360;
        double r313385 = r313384 + r313367;
        double r313386 = r313385 * r313360;
        double r313387 = z;
        double r313388 = r313386 + r313387;
        double r313389 = r313377 * r313388;
        double r313390 = 43.3400022514;
        double r313391 = r313360 + r313390;
        double r313392 = r313391 * r313360;
        double r313393 = 3.0;
        double r313394 = pow(r313392, r313393);
        double r313395 = 263.505074721;
        double r313396 = pow(r313395, r313393);
        double r313397 = r313394 + r313396;
        double r313398 = r313397 * r313360;
        double r313399 = r313392 * r313392;
        double r313400 = r313395 * r313395;
        double r313401 = r313392 * r313395;
        double r313402 = r313400 - r313401;
        double r313403 = r313399 + r313402;
        double r313404 = r313398 / r313403;
        double r313405 = 313.399215894;
        double r313406 = r313404 + r313405;
        double r313407 = r313406 * r313360;
        double r313408 = 47.066876606;
        double r313409 = r313407 + r313408;
        double r313410 = r313389 / r313409;
        double r313411 = r313366 ? r313375 : r313410;
        return r313411;
}

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

Original26.3
Target0.5
Herbie0.9
\[\begin{array}{l} \mathbf{if}\;x \lt -3.3261287258700048 \cdot 10^{62}:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\ \mathbf{elif}\;x \lt 9.4299917145546727 \cdot 10^{55}:\\ \;\;\;\;\frac{x - 2}{1} \cdot \frac{\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z}{\left(\left(263.50507472100003 \cdot x + \left(43.3400022514000014 \cdot \left(x \cdot x\right) + x \cdot \left(x \cdot x\right)\right)\right) + 313.399215894\right) \cdot x + 47.066876606000001}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -3.1485706152712823e+38 or 2.9239076483770014e+28 < x

    1. Initial program 58.7

      \[\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
    2. Using strategy rm
    3. Applied flip3-+64.0

      \[\leadsto \frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\color{blue}{\frac{{\left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right)}^{3} + {47.066876606000001}^{3}}{\left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right) \cdot \left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right) + \left(47.066876606000001 \cdot 47.066876606000001 - \left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right) \cdot 47.066876606000001\right)}}}\]
    4. Applied associate-/r/64.0

      \[\leadsto \color{blue}{\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{{\left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right)}^{3} + {47.066876606000001}^{3}} \cdot \left(\left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right) \cdot \left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right) + \left(47.066876606000001 \cdot 47.066876606000001 - \left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x\right) \cdot 47.066876606000001\right)\right)}\]
    5. Taylor expanded around inf 1.3

      \[\leadsto \color{blue}{\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848115}\]

    if -3.1485706152712823e+38 < x < 2.9239076483770014e+28

    1. Initial program 0.6

      \[\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
    2. Taylor expanded around 0 0.6

      \[\leadsto \frac{\left(x - 2\right) \cdot \left(\left(\left(\color{blue}{\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right)} + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
    3. Using strategy rm
    4. Applied flip3-+0.6

      \[\leadsto \frac{\left(x - 2\right) \cdot \left(\left(\left(\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right) + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\color{blue}{\frac{{\left(\left(x + 43.3400022514000014\right) \cdot x\right)}^{3} + {263.50507472100003}^{3}}{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) + \left(263.50507472100003 \cdot 263.50507472100003 - \left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot 263.50507472100003\right)}} \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
    5. Applied associate-*l/0.6

      \[\leadsto \frac{\left(x - 2\right) \cdot \left(\left(\left(\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right) + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\color{blue}{\frac{\left({\left(\left(x + 43.3400022514000014\right) \cdot x\right)}^{3} + {263.50507472100003}^{3}\right) \cdot x}{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) + \left(263.50507472100003 \cdot 263.50507472100003 - \left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot 263.50507472100003\right)}} + 313.399215894\right) \cdot x + 47.066876606000001}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -3.1485706152712823 \cdot 10^{38} \lor \neg \left(x \le 2.9239076483770014 \cdot 10^{28}\right):\\ \;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848115\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(4.16438922227999964 \cdot {x}^{2} + 78.6994924154000017 \cdot x\right) + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right)}{\left(\frac{\left({\left(\left(x + 43.3400022514000014\right) \cdot x\right)}^{3} + {263.50507472100003}^{3}\right) \cdot x}{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) + \left(263.50507472100003 \cdot 263.50507472100003 - \left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot 263.50507472100003\right)} + 313.399215894\right) \cdot x + 47.066876606000001}\\ \end{array}\]

Reproduce

herbie shell --seed 2019198 
(FPCore (x y z)
  :name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, C"

  :herbie-target
  (if (< x -3.326128725870005e+62) (- (+ (/ y (* x x)) (* 4.16438922228 x)) 110.1139242984811) (if (< x 9.429991714554673e+55) (* (/ (- x 2.0) 1.0) (/ (+ (* (+ (* (+ (* (+ (* x 4.16438922228) 78.6994924154) x) 137.519416416) x) y) x) z) (+ (* (+ (+ (* 263.505074721 x) (+ (* 43.3400022514 (* x x)) (* x (* x x)))) 313.399215894) x) 47.066876606))) (- (+ (/ y (* x x)) (* 4.16438922228 x)) 110.1139242984811)))

  (/ (* (- x 2.0) (+ (* (+ (* (+ (* (+ (* x 4.16438922228) 78.6994924154) x) 137.519416416) x) y) x) z)) (+ (* (+ (* (+ (* (+ x 43.3400022514) x) 263.505074721) x) 313.399215894) x) 47.066876606)))