Average Error: 26.9 → 1.0
Time: 7.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 -5.30632711353810765 \cdot 10^{24}:\\ \;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\ \mathbf{elif}\;x \le 3.111579507262274 \cdot 10^{42}:\\ \;\;\;\;\left(x - 2\right) \cdot \left(\left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right) \cdot \frac{1}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x - 2\right) \cdot \left(\left(\frac{y}{{x}^{3}} + 4.16438922227999964\right) - 101.785145853921094 \cdot \frac{1}{x}\right)\\ \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 -5.30632711353810765 \cdot 10^{24}:\\
\;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\

\mathbf{elif}\;x \le 3.111579507262274 \cdot 10^{42}:\\
\;\;\;\;\left(x - 2\right) \cdot \left(\left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right) \cdot \frac{1}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\right)\\

\mathbf{else}:\\
\;\;\;\;\left(x - 2\right) \cdot \left(\left(\frac{y}{{x}^{3}} + 4.16438922227999964\right) - 101.785145853921094 \cdot \frac{1}{x}\right)\\

\end{array}
double f(double x, double y, double z) {
        double r356650 = x;
        double r356651 = 2.0;
        double r356652 = r356650 - r356651;
        double r356653 = 4.16438922228;
        double r356654 = r356650 * r356653;
        double r356655 = 78.6994924154;
        double r356656 = r356654 + r356655;
        double r356657 = r356656 * r356650;
        double r356658 = 137.519416416;
        double r356659 = r356657 + r356658;
        double r356660 = r356659 * r356650;
        double r356661 = y;
        double r356662 = r356660 + r356661;
        double r356663 = r356662 * r356650;
        double r356664 = z;
        double r356665 = r356663 + r356664;
        double r356666 = r356652 * r356665;
        double r356667 = 43.3400022514;
        double r356668 = r356650 + r356667;
        double r356669 = r356668 * r356650;
        double r356670 = 263.505074721;
        double r356671 = r356669 + r356670;
        double r356672 = r356671 * r356650;
        double r356673 = 313.399215894;
        double r356674 = r356672 + r356673;
        double r356675 = r356674 * r356650;
        double r356676 = 47.066876606;
        double r356677 = r356675 + r356676;
        double r356678 = r356666 / r356677;
        return r356678;
}

double f(double x, double y, double z) {
        double r356679 = x;
        double r356680 = -5.306327113538108e+24;
        bool r356681 = r356679 <= r356680;
        double r356682 = y;
        double r356683 = 2.0;
        double r356684 = pow(r356679, r356683);
        double r356685 = r356682 / r356684;
        double r356686 = 4.16438922228;
        double r356687 = r356686 * r356679;
        double r356688 = r356685 + r356687;
        double r356689 = 110.1139242984811;
        double r356690 = r356688 - r356689;
        double r356691 = 3.111579507262274e+42;
        bool r356692 = r356679 <= r356691;
        double r356693 = 2.0;
        double r356694 = r356679 - r356693;
        double r356695 = r356679 * r356686;
        double r356696 = 78.6994924154;
        double r356697 = r356695 + r356696;
        double r356698 = r356697 * r356679;
        double r356699 = 137.519416416;
        double r356700 = r356698 + r356699;
        double r356701 = r356700 * r356679;
        double r356702 = r356701 + r356682;
        double r356703 = r356702 * r356679;
        double r356704 = z;
        double r356705 = r356703 + r356704;
        double r356706 = 1.0;
        double r356707 = 43.3400022514;
        double r356708 = r356679 + r356707;
        double r356709 = r356708 * r356679;
        double r356710 = 263.505074721;
        double r356711 = r356709 + r356710;
        double r356712 = r356711 * r356679;
        double r356713 = 313.399215894;
        double r356714 = r356712 + r356713;
        double r356715 = r356714 * r356679;
        double r356716 = 47.066876606;
        double r356717 = r356715 + r356716;
        double r356718 = r356706 / r356717;
        double r356719 = r356705 * r356718;
        double r356720 = r356694 * r356719;
        double r356721 = 3.0;
        double r356722 = pow(r356679, r356721);
        double r356723 = r356682 / r356722;
        double r356724 = r356723 + r356686;
        double r356725 = 101.7851458539211;
        double r356726 = r356706 / r356679;
        double r356727 = r356725 * r356726;
        double r356728 = r356724 - r356727;
        double r356729 = r356694 * r356728;
        double r356730 = r356692 ? r356720 : r356729;
        double r356731 = r356681 ? r356690 : r356730;
        return r356731;
}

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
Herbie1.0
\[\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 3 regimes
  2. if x < -5.306327113538108e+24

    1. Initial program 57.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.7

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

    if -5.306327113538108e+24 < x < 3.111579507262274e+42

    1. Initial program 0.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 *-un-lft-identity0.7

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

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

      \[\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 div-inv0.7

      \[\leadsto \left(x - 2\right) \cdot \color{blue}{\left(\left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right) \cdot \frac{1}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\right)}\]

    if 3.111579507262274e+42 < x

    1. Initial program 61.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-identity61.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-frac57.3

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

      \[\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. Taylor expanded around inf 0.8

      \[\leadsto \left(x - 2\right) \cdot \color{blue}{\left(\left(\frac{y}{{x}^{3}} + 4.16438922227999964\right) - 101.785145853921094 \cdot \frac{1}{x}\right)}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.0

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -5.30632711353810765 \cdot 10^{24}:\\ \;\;\;\;\left(\frac{y}{{x}^{2}} + 4.16438922227999964 \cdot x\right) - 110.11392429848109\\ \mathbf{elif}\;x \le 3.111579507262274 \cdot 10^{42}:\\ \;\;\;\;\left(x - 2\right) \cdot \left(\left(\left(\left(\left(x \cdot 4.16438922227999964 + 78.6994924154000017\right) \cdot x + 137.51941641600001\right) \cdot x + y\right) \cdot x + z\right) \cdot \frac{1}{\left(\left(\left(x + 43.3400022514000014\right) \cdot x + 263.50507472100003\right) \cdot x + 313.399215894\right) \cdot x + 47.066876606000001}\right)\\ \mathbf{else}:\\ \;\;\;\;\left(x - 2\right) \cdot \left(\left(\frac{y}{{x}^{3}} + 4.16438922227999964\right) - 101.785145853921094 \cdot \frac{1}{x}\right)\\ \end{array}\]

Reproduce

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