Average Error: 26.9 → 0.7
Time: 6.2s
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 -1.74032442839244311 \cdot 10^{61} \lor \neg \left(x \le 27074635474235478000\right):\\ \;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\ \mathbf{else}:\\ \;\;\;\;\left(x - 2\right) \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(\frac{\left(\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) - 263.50507472100003 \cdot 263.50507472100003\right) \cdot x}{\left(x + 43.3400022514000014\right) \cdot x - 263.50507472100003} + 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 -1.74032442839244311 \cdot 10^{61} \lor \neg \left(x \le 27074635474235478000\right):\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\

\mathbf{else}:\\
\;\;\;\;\left(x - 2\right) \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(\frac{\left(\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) - 263.50507472100003 \cdot 263.50507472100003\right) \cdot x}{\left(x + 43.3400022514000014\right) \cdot x - 263.50507472100003} + 313.399215894\right) \cdot x + 47.066876606000001}\\

\end{array}
double f(double x, double y, double z) {
        double r509586 = x;
        double r509587 = 2.0;
        double r509588 = r509586 - r509587;
        double r509589 = 4.16438922228;
        double r509590 = r509586 * r509589;
        double r509591 = 78.6994924154;
        double r509592 = r509590 + r509591;
        double r509593 = r509592 * r509586;
        double r509594 = 137.519416416;
        double r509595 = r509593 + r509594;
        double r509596 = r509595 * r509586;
        double r509597 = y;
        double r509598 = r509596 + r509597;
        double r509599 = r509598 * r509586;
        double r509600 = z;
        double r509601 = r509599 + r509600;
        double r509602 = r509588 * r509601;
        double r509603 = 43.3400022514;
        double r509604 = r509586 + r509603;
        double r509605 = r509604 * r509586;
        double r509606 = 263.505074721;
        double r509607 = r509605 + r509606;
        double r509608 = r509607 * r509586;
        double r509609 = 313.399215894;
        double r509610 = r509608 + r509609;
        double r509611 = r509610 * r509586;
        double r509612 = 47.066876606;
        double r509613 = r509611 + r509612;
        double r509614 = r509602 / r509613;
        return r509614;
}

double f(double x, double y, double z) {
        double r509615 = x;
        double r509616 = -1.740324428392443e+61;
        bool r509617 = r509615 <= r509616;
        double r509618 = 2.707463547423548e+19;
        bool r509619 = r509615 <= r509618;
        double r509620 = !r509619;
        bool r509621 = r509617 || r509620;
        double r509622 = y;
        double r509623 = 2.0;
        double r509624 = pow(r509615, r509623);
        double r509625 = r509622 / r509624;
        double r509626 = 4.16438922228;
        double r509627 = r509626 * r509615;
        double r509628 = r509625 + r509627;
        double r509629 = 110.1139242984811;
        double r509630 = r509628 - r509629;
        double r509631 = 2.0;
        double r509632 = r509615 - r509631;
        double r509633 = r509615 * r509626;
        double r509634 = 78.6994924154;
        double r509635 = r509633 + r509634;
        double r509636 = r509635 * r509615;
        double r509637 = 137.519416416;
        double r509638 = r509636 + r509637;
        double r509639 = r509638 * r509615;
        double r509640 = r509639 + r509622;
        double r509641 = r509640 * r509615;
        double r509642 = z;
        double r509643 = r509641 + r509642;
        double r509644 = 43.3400022514;
        double r509645 = r509615 + r509644;
        double r509646 = r509645 * r509615;
        double r509647 = r509646 * r509646;
        double r509648 = 263.505074721;
        double r509649 = r509648 * r509648;
        double r509650 = r509647 - r509649;
        double r509651 = r509650 * r509615;
        double r509652 = r509646 - r509648;
        double r509653 = r509651 / r509652;
        double r509654 = 313.399215894;
        double r509655 = r509653 + r509654;
        double r509656 = r509655 * r509615;
        double r509657 = 47.066876606;
        double r509658 = r509656 + r509657;
        double r509659 = r509643 / r509658;
        double r509660 = r509632 * r509659;
        double r509661 = r509621 ? r509630 : r509660;
        return r509661;
}

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.9
Target0.5
Herbie0.7
\[\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 < -1.740324428392443e+61 or 2.707463547423548e+19 < x

    1. Initial program 59.9

      \[\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 inf 1.1

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

    if -1.740324428392443e+61 < x < 2.707463547423548e+19

    1. Initial program 1.1

      \[\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 *-un-lft-identity1.1

      \[\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}{1 \cdot \left(\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001\right)}}\]
    4. Applied times-frac0.5

      \[\leadsto \color{blue}{\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(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}}\]
    5. Simplified0.5

      \[\leadsto \color{blue}{\left(x - 2\right)} \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(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
    6. Using strategy rm
    7. Applied flip-+0.5

      \[\leadsto \left(x - 2\right) \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(\color{blue}{\frac{\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) - 263.50507472100003 \cdot 263.50507472100003}{\left(x + 43.3400022514000014\right) \cdot x - 263.50507472100003}} \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\]
    8. Applied associate-*l/0.5

      \[\leadsto \left(x - 2\right) \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(\color{blue}{\frac{\left(\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) - 263.50507472100003 \cdot 263.50507472100003\right) \cdot x}{\left(x + 43.3400022514000014\right) \cdot x - 263.50507472100003}} + 313.399215894\right) \cdot x + 47.066876606000001}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -1.74032442839244311 \cdot 10^{61} \lor \neg \left(x \le 27074635474235478000\right):\\ \;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\ \mathbf{else}:\\ \;\;\;\;\left(x - 2\right) \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(\frac{\left(\left(\left(x + 43.3400022514000014\right) \cdot x\right) \cdot \left(\left(x + 43.3400022514000014\right) \cdot x\right) - 263.50507472100003 \cdot 263.50507472100003\right) \cdot x}{\left(x + 43.3400022514000014\right) \cdot x - 263.50507472100003} + 313.399215894\right) \cdot x + 47.066876606000001}\\ \end{array}\]

Reproduce

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

  :herbie-target
  (if (< x -3.326128725870005e+62) (- (+ (/ y (* x x)) (* 4.16438922228 x)) 110.1139242984811) (if (< x 9.429991714554673e+55) (* (/ (- x 2) 1) (/ (+ (* (+ (* (+ (* (+ (* 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) (+ (* (+ (* (+ (* (+ (* x 4.16438922228) 78.6994924154) x) 137.519416416) x) y) x) z)) (+ (* (+ (* (+ (* (+ x 43.3400022514) x) 263.505074721) x) 313.399215894) x) 47.066876606)))