Average Error: 30.0 → 4.7
Time: 6.7s
Precision: 64
\[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004}\]
\[\begin{array}{l} \mathbf{if}\;z \le -3.341610835634003 \cdot 10^{23} \lor \neg \left(z \le 3.2272260316104524 \cdot 10^{42}\right):\\ \;\;\;\;x + \left(\left(3.13060547622999996 \cdot y + \frac{t \cdot y}{{z}^{2}}\right) - 36.527041698806414 \cdot \frac{y}{z}\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004} \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)\\ \end{array}\]
x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004}
\begin{array}{l}
\mathbf{if}\;z \le -3.341610835634003 \cdot 10^{23} \lor \neg \left(z \le 3.2272260316104524 \cdot 10^{42}\right):\\
\;\;\;\;x + \left(\left(3.13060547622999996 \cdot y + \frac{t \cdot y}{{z}^{2}}\right) - 36.527041698806414 \cdot \frac{y}{z}\right)\\

\mathbf{else}:\\
\;\;\;\;x + \frac{y}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004} \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)\\

\end{array}
double f(double x, double y, double z, double t, double a, double b) {
        double r341659 = x;
        double r341660 = y;
        double r341661 = z;
        double r341662 = 3.13060547623;
        double r341663 = r341661 * r341662;
        double r341664 = 11.1667541262;
        double r341665 = r341663 + r341664;
        double r341666 = r341665 * r341661;
        double r341667 = t;
        double r341668 = r341666 + r341667;
        double r341669 = r341668 * r341661;
        double r341670 = a;
        double r341671 = r341669 + r341670;
        double r341672 = r341671 * r341661;
        double r341673 = b;
        double r341674 = r341672 + r341673;
        double r341675 = r341660 * r341674;
        double r341676 = 15.234687407;
        double r341677 = r341661 + r341676;
        double r341678 = r341677 * r341661;
        double r341679 = 31.4690115749;
        double r341680 = r341678 + r341679;
        double r341681 = r341680 * r341661;
        double r341682 = 11.9400905721;
        double r341683 = r341681 + r341682;
        double r341684 = r341683 * r341661;
        double r341685 = 0.607771387771;
        double r341686 = r341684 + r341685;
        double r341687 = r341675 / r341686;
        double r341688 = r341659 + r341687;
        return r341688;
}

double f(double x, double y, double z, double t, double a, double b) {
        double r341689 = z;
        double r341690 = -3.341610835634003e+23;
        bool r341691 = r341689 <= r341690;
        double r341692 = 3.2272260316104524e+42;
        bool r341693 = r341689 <= r341692;
        double r341694 = !r341693;
        bool r341695 = r341691 || r341694;
        double r341696 = x;
        double r341697 = 3.13060547623;
        double r341698 = y;
        double r341699 = r341697 * r341698;
        double r341700 = t;
        double r341701 = r341700 * r341698;
        double r341702 = 2.0;
        double r341703 = pow(r341689, r341702);
        double r341704 = r341701 / r341703;
        double r341705 = r341699 + r341704;
        double r341706 = 36.527041698806414;
        double r341707 = r341698 / r341689;
        double r341708 = r341706 * r341707;
        double r341709 = r341705 - r341708;
        double r341710 = r341696 + r341709;
        double r341711 = 15.234687407;
        double r341712 = r341689 + r341711;
        double r341713 = r341712 * r341689;
        double r341714 = 31.4690115749;
        double r341715 = r341713 + r341714;
        double r341716 = r341715 * r341689;
        double r341717 = 11.9400905721;
        double r341718 = r341716 + r341717;
        double r341719 = r341718 * r341689;
        double r341720 = 0.607771387771;
        double r341721 = r341719 + r341720;
        double r341722 = r341698 / r341721;
        double r341723 = r341689 * r341697;
        double r341724 = 11.1667541262;
        double r341725 = r341723 + r341724;
        double r341726 = r341725 * r341689;
        double r341727 = r341726 + r341700;
        double r341728 = r341727 * r341689;
        double r341729 = a;
        double r341730 = r341728 + r341729;
        double r341731 = r341730 * r341689;
        double r341732 = b;
        double r341733 = r341731 + r341732;
        double r341734 = r341722 * r341733;
        double r341735 = r341696 + r341734;
        double r341736 = r341695 ? r341710 : r341735;
        return r341736;
}

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

Original30.0
Target1.1
Herbie4.7
\[\begin{array}{l} \mathbf{if}\;z \lt -6.4993449962526318 \cdot 10^{53}:\\ \;\;\;\;x + \left(\left(3.13060547622999996 - \frac{36.527041698806414}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \mathbf{elif}\;z \lt 7.0669654369142868 \cdot 10^{59}:\\ \;\;\;\;x + \frac{y}{\frac{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004}{\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}}\\ \mathbf{else}:\\ \;\;\;\;x + \left(\left(3.13060547622999996 - \frac{36.527041698806414}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \end{array}\]

Derivation

  1. Split input into 2 regimes
  2. if z < -3.341610835634003e+23 or 3.2272260316104524e+42 < z

    1. Initial program 59.5

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004}\]
    2. Taylor expanded around inf 8.6

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

    if -3.341610835634003e+23 < z < 3.2272260316104524e+42

    1. Initial program 1.1

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004}\]
    2. Using strategy rm
    3. Applied associate-/l*0.6

      \[\leadsto x + \color{blue}{\frac{y}{\frac{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004}{\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}}}\]
    4. Using strategy rm
    5. Applied associate-/r/0.8

      \[\leadsto x + \color{blue}{\frac{y}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004} \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification4.7

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \le -3.341610835634003 \cdot 10^{23} \lor \neg \left(z \le 3.2272260316104524 \cdot 10^{42}\right):\\ \;\;\;\;x + \left(\left(3.13060547622999996 \cdot y + \frac{t \cdot y}{{z}^{2}}\right) - 36.527041698806414 \cdot \frac{y}{z}\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{y}{\left(\left(\left(z + 15.234687406999999\right) \cdot z + 31.469011574900001\right) \cdot z + 11.940090572100001\right) \cdot z + 0.60777138777100004} \cdot \left(\left(\left(\left(z \cdot 3.13060547622999996 + 11.166754126200001\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)\\ \end{array}\]

Reproduce

herbie shell --seed 2020024 
(FPCore (x y z t a b)
  :name "Numeric.SpecFunctions:logGamma from math-functions-0.1.5.2, D"
  :precision binary64

  :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))))