Average Error: 26.7 → 0.8
Time: 1.3m
Precision: 64
\[\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\]
\[\begin{array}{l} \mathbf{if}\;x \le -18446644311559690167397500658474620551170:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\ \mathbf{elif}\;x \le 5.400940663197947339625629709488573945958 \cdot 10^{71}:\\ \;\;\;\;\frac{\frac{x - 2}{47.06687660600000100430406746454536914825 + \left(313.3992158940000081202015280723571777344 + \left(263.5050747210000281484099105000495910645 + x \cdot \left(43.3400022514000013984514225739985704422 + x\right)\right) \cdot x\right) \cdot x}}{\frac{1}{z + \left(y + x \cdot \left(137.5194164160000127594685181975364685059 + \left(4.16438922227999963610045597306452691555 \cdot x + 78.69949241540000173245061887428164482117\right) \cdot x\right)\right) \cdot x}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\ \end{array}\]
\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}
\begin{array}{l}
\mathbf{if}\;x \le -18446644311559690167397500658474620551170:\\
\;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\

\mathbf{elif}\;x \le 5.400940663197947339625629709488573945958 \cdot 10^{71}:\\
\;\;\;\;\frac{\frac{x - 2}{47.06687660600000100430406746454536914825 + \left(313.3992158940000081202015280723571777344 + \left(263.5050747210000281484099105000495910645 + x \cdot \left(43.3400022514000013984514225739985704422 + x\right)\right) \cdot x\right) \cdot x}}{\frac{1}{z + \left(y + x \cdot \left(137.5194164160000127594685181975364685059 + \left(4.16438922227999963610045597306452691555 \cdot x + 78.69949241540000173245061887428164482117\right) \cdot x\right)\right) \cdot x}}\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\

\end{array}
double f(double x, double y, double z) {
        double r18451590 = x;
        double r18451591 = 2.0;
        double r18451592 = r18451590 - r18451591;
        double r18451593 = 4.16438922228;
        double r18451594 = r18451590 * r18451593;
        double r18451595 = 78.6994924154;
        double r18451596 = r18451594 + r18451595;
        double r18451597 = r18451596 * r18451590;
        double r18451598 = 137.519416416;
        double r18451599 = r18451597 + r18451598;
        double r18451600 = r18451599 * r18451590;
        double r18451601 = y;
        double r18451602 = r18451600 + r18451601;
        double r18451603 = r18451602 * r18451590;
        double r18451604 = z;
        double r18451605 = r18451603 + r18451604;
        double r18451606 = r18451592 * r18451605;
        double r18451607 = 43.3400022514;
        double r18451608 = r18451590 + r18451607;
        double r18451609 = r18451608 * r18451590;
        double r18451610 = 263.505074721;
        double r18451611 = r18451609 + r18451610;
        double r18451612 = r18451611 * r18451590;
        double r18451613 = 313.399215894;
        double r18451614 = r18451612 + r18451613;
        double r18451615 = r18451614 * r18451590;
        double r18451616 = 47.066876606;
        double r18451617 = r18451615 + r18451616;
        double r18451618 = r18451606 / r18451617;
        return r18451618;
}

double f(double x, double y, double z) {
        double r18451619 = x;
        double r18451620 = -1.844664431155969e+40;
        bool r18451621 = r18451619 <= r18451620;
        double r18451622 = y;
        double r18451623 = r18451619 * r18451619;
        double r18451624 = r18451622 / r18451623;
        double r18451625 = 4.16438922228;
        double r18451626 = r18451625 * r18451619;
        double r18451627 = r18451624 + r18451626;
        double r18451628 = 110.1139242984811;
        double r18451629 = r18451627 - r18451628;
        double r18451630 = 5.400940663197947e+71;
        bool r18451631 = r18451619 <= r18451630;
        double r18451632 = 2.0;
        double r18451633 = r18451619 - r18451632;
        double r18451634 = 47.066876606;
        double r18451635 = 313.399215894;
        double r18451636 = 263.505074721;
        double r18451637 = 43.3400022514;
        double r18451638 = r18451637 + r18451619;
        double r18451639 = r18451619 * r18451638;
        double r18451640 = r18451636 + r18451639;
        double r18451641 = r18451640 * r18451619;
        double r18451642 = r18451635 + r18451641;
        double r18451643 = r18451642 * r18451619;
        double r18451644 = r18451634 + r18451643;
        double r18451645 = r18451633 / r18451644;
        double r18451646 = 1.0;
        double r18451647 = z;
        double r18451648 = 137.519416416;
        double r18451649 = 78.6994924154;
        double r18451650 = r18451626 + r18451649;
        double r18451651 = r18451650 * r18451619;
        double r18451652 = r18451648 + r18451651;
        double r18451653 = r18451619 * r18451652;
        double r18451654 = r18451622 + r18451653;
        double r18451655 = r18451654 * r18451619;
        double r18451656 = r18451647 + r18451655;
        double r18451657 = r18451646 / r18451656;
        double r18451658 = r18451645 / r18451657;
        double r18451659 = r18451631 ? r18451658 : r18451629;
        double r18451660 = r18451621 ? r18451629 : r18451659;
        return r18451660;
}

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.7
Target0.6
Herbie0.8
\[\begin{array}{l} \mathbf{if}\;x \lt -3.326128725870004842699683658678411714981 \cdot 10^{62}:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\ \mathbf{elif}\;x \lt 9.429991714554672672712552870340896976735 \cdot 10^{55}:\\ \;\;\;\;\frac{x - 2}{1} \cdot \frac{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}{\left(\left(263.5050747210000281484099105000495910645 \cdot x + \left(43.3400022514000013984514225739985704422 \cdot \left(x \cdot x\right) + x \cdot \left(x \cdot x\right)\right)\right) + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if x < -1.844664431155969e+40 or 5.400940663197947e+71 < x

    1. Initial program 62.4

      \[\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\]
    2. Using strategy rm
    3. Applied associate-/l*59.7

      \[\leadsto \color{blue}{\frac{x - 2}{\frac{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}}}\]
    4. Using strategy rm
    5. Applied div-inv59.7

      \[\leadsto \frac{x - 2}{\color{blue}{\left(\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825\right) \cdot \frac{1}{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}}}\]
    6. Applied associate-/r*59.7

      \[\leadsto \color{blue}{\frac{\frac{x - 2}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}}{\frac{1}{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}}}\]
    7. Taylor expanded around inf 0.5

      \[\leadsto \color{blue}{\left(\frac{y}{{x}^{2}} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229}\]
    8. Simplified0.5

      \[\leadsto \color{blue}{\left(x \cdot 4.16438922227999963610045597306452691555 + \frac{y}{x \cdot x}\right) - 110.1139242984810948655649553984403610229}\]

    if -1.844664431155969e+40 < x < 5.400940663197947e+71

    1. Initial program 2.3

      \[\frac{\left(x - 2\right) \cdot \left(\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z\right)}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}\]
    2. Using strategy rm
    3. Applied associate-/l*0.9

      \[\leadsto \color{blue}{\frac{x - 2}{\frac{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}}}\]
    4. Using strategy rm
    5. Applied div-inv0.9

      \[\leadsto \frac{x - 2}{\color{blue}{\left(\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825\right) \cdot \frac{1}{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}}}\]
    6. Applied associate-/r*1.0

      \[\leadsto \color{blue}{\frac{\frac{x - 2}{\left(\left(\left(x + 43.3400022514000013984514225739985704422\right) \cdot x + 263.5050747210000281484099105000495910645\right) \cdot x + 313.3992158940000081202015280723571777344\right) \cdot x + 47.06687660600000100430406746454536914825}}{\frac{1}{\left(\left(\left(x \cdot 4.16438922227999963610045597306452691555 + 78.69949241540000173245061887428164482117\right) \cdot x + 137.5194164160000127594685181975364685059\right) \cdot x + y\right) \cdot x + z}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification0.8

    \[\leadsto \begin{array}{l} \mathbf{if}\;x \le -18446644311559690167397500658474620551170:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\ \mathbf{elif}\;x \le 5.400940663197947339625629709488573945958 \cdot 10^{71}:\\ \;\;\;\;\frac{\frac{x - 2}{47.06687660600000100430406746454536914825 + \left(313.3992158940000081202015280723571777344 + \left(263.5050747210000281484099105000495910645 + x \cdot \left(43.3400022514000013984514225739985704422 + x\right)\right) \cdot x\right) \cdot x}}{\frac{1}{z + \left(y + x \cdot \left(137.5194164160000127594685181975364685059 + \left(4.16438922227999963610045597306452691555 \cdot x + 78.69949241540000173245061887428164482117\right) \cdot x\right)\right) \cdot x}}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{y}{x \cdot x} + 4.16438922227999963610045597306452691555 \cdot x\right) - 110.1139242984810948655649553984403610229\\ \end{array}\]

Reproduce

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