Average Error: 29.4 → 1.9
Time: 16.4s
Precision: binary64
\[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
\[\begin{array}{l} \mathbf{if}\;z \leq -1.7009428391936115 \cdot 10^{+85}:\\ \;\;\;\;x + 3.13060547623 \cdot y\\ \mathbf{elif}\;z \leq -1.6887926911065685 \cdot 10^{+34}:\\ \;\;\;\;x + \left(\left(3.13060547623 \cdot y + \left(\left(\frac{y \cdot t}{z \cdot z} + 457.96100221584277 \cdot \frac{y}{z \cdot z}\right) + \frac{y \cdot a}{{z}^{3}}\right)\right) - \left(36.527041698806414 \cdot \frac{y}{z} + \left(5864.802528269903 \cdot \frac{y}{{z}^{3}} + 15.234687407 \cdot \frac{y \cdot t}{{z}^{3}}\right)\right)\right)\\ \mathbf{elif}\;z \leq 3.868507440137761 \cdot 10^{+67}:\\ \;\;\;\;x + \frac{y}{\frac{0.607771387771 + z \cdot \left(11.9400905721 + z \cdot \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right)\right)}{b + z \cdot \left(a + z \cdot \left(t + z \cdot \left(11.1667541262 + z \cdot 3.13060547623\right)\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;x + 3.13060547623 \cdot y\\ \end{array}\]
x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}
\begin{array}{l}
\mathbf{if}\;z \leq -1.7009428391936115 \cdot 10^{+85}:\\
\;\;\;\;x + 3.13060547623 \cdot y\\

\mathbf{elif}\;z \leq -1.6887926911065685 \cdot 10^{+34}:\\
\;\;\;\;x + \left(\left(3.13060547623 \cdot y + \left(\left(\frac{y \cdot t}{z \cdot z} + 457.96100221584277 \cdot \frac{y}{z \cdot z}\right) + \frac{y \cdot a}{{z}^{3}}\right)\right) - \left(36.527041698806414 \cdot \frac{y}{z} + \left(5864.802528269903 \cdot \frac{y}{{z}^{3}} + 15.234687407 \cdot \frac{y \cdot t}{{z}^{3}}\right)\right)\right)\\

\mathbf{elif}\;z \leq 3.868507440137761 \cdot 10^{+67}:\\
\;\;\;\;x + \frac{y}{\frac{0.607771387771 + z \cdot \left(11.9400905721 + z \cdot \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right)\right)}{b + z \cdot \left(a + z \cdot \left(t + z \cdot \left(11.1667541262 + z \cdot 3.13060547623\right)\right)\right)}}\\

\mathbf{else}:\\
\;\;\;\;x + 3.13060547623 \cdot y\\

\end{array}
(FPCore (x y z t a b)
 :precision binary64
 (+
  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))))
(FPCore (x y z t a b)
 :precision binary64
 (if (<= z -1.7009428391936115e+85)
   (+ x (* 3.13060547623 y))
   (if (<= z -1.6887926911065685e+34)
     (+
      x
      (-
       (+
        (* 3.13060547623 y)
        (+
         (+ (/ (* y t) (* z z)) (* 457.96100221584277 (/ y (* z z))))
         (/ (* y a) (pow z 3.0))))
       (+
        (* 36.527041698806414 (/ y z))
        (+
         (* 5864.802528269903 (/ y (pow z 3.0)))
         (* 15.234687407 (/ (* y t) (pow z 3.0)))))))
     (if (<= z 3.868507440137761e+67)
       (+
        x
        (/
         y
         (/
          (+
           0.607771387771
           (*
            z
            (+
             11.9400905721
             (* z (+ 31.4690115749 (* z (+ z 15.234687407)))))))
          (+
           b
           (*
            z
            (+ a (* z (+ t (* z (+ 11.1667541262 (* z 3.13060547623)))))))))))
       (+ x (* 3.13060547623 y))))))
double code(double x, double y, double z, double t, double a, double b) {
	return 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));
}
double code(double x, double y, double z, double t, double a, double b) {
	double tmp;
	if (z <= -1.7009428391936115e+85) {
		tmp = x + (3.13060547623 * y);
	} else if (z <= -1.6887926911065685e+34) {
		tmp = x + (((3.13060547623 * y) + ((((y * t) / (z * z)) + (457.96100221584277 * (y / (z * z)))) + ((y * a) / pow(z, 3.0)))) - ((36.527041698806414 * (y / z)) + ((5864.802528269903 * (y / pow(z, 3.0))) + (15.234687407 * ((y * t) / pow(z, 3.0))))));
	} else if (z <= 3.868507440137761e+67) {
		tmp = x + (y / ((0.607771387771 + (z * (11.9400905721 + (z * (31.4690115749 + (z * (z + 15.234687407))))))) / (b + (z * (a + (z * (t + (z * (11.1667541262 + (z * 3.13060547623))))))))));
	} else {
		tmp = x + (3.13060547623 * y);
	}
	return tmp;
}

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

Original29.4
Target1.1
Herbie1.9
\[\begin{array}{l} \mathbf{if}\;z < -6.499344996252632 \cdot 10^{+53}:\\ \;\;\;\;x + \left(\left(3.13060547623 - \frac{36.527041698806414}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \mathbf{elif}\;z < 7.066965436914287 \cdot 10^{+59}:\\ \;\;\;\;x + \frac{y}{\frac{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}{\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}}\\ \mathbf{else}:\\ \;\;\;\;x + \left(\left(3.13060547623 - \frac{36.527041698806414}{z}\right) + \frac{t}{z \cdot z}\right) \cdot \frac{y}{1}\\ \end{array}\]

Derivation

  1. Split input into 3 regimes
  2. if z < -1.70094283919361154e85 or 3.86850744013776074e67 < z

    1. Initial program 63.5

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    2. Taylor expanded around inf 1.9

      \[\leadsto x + \color{blue}{3.13060547623 \cdot y}\]

    if -1.70094283919361154e85 < z < -1.6887926911065685e34

    1. Initial program 39.9

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    2. Taylor expanded around inf 11.3

      \[\leadsto x + \color{blue}{\left(\left(3.13060547623 \cdot y + \left(\frac{a \cdot y}{{z}^{3}} + \left(457.96100221584277 \cdot \frac{y}{{z}^{2}} + \frac{t \cdot y}{{z}^{2}}\right)\right)\right) - \left(36.527041698806414 \cdot \frac{y}{z} + \left(5864.802528269903 \cdot \frac{y}{{z}^{3}} + 15.234687407 \cdot \frac{t \cdot y}{{z}^{3}}\right)\right)\right)}\]
    3. Simplified11.3

      \[\leadsto x + \color{blue}{\left(\left(3.13060547623 \cdot y + \left(\left(\frac{t \cdot y}{z \cdot z} + 457.96100221584277 \cdot \frac{y}{z \cdot z}\right) + \frac{a \cdot y}{{z}^{3}}\right)\right) - \left(36.527041698806414 \cdot \frac{y}{z} + \left(5864.802528269903 \cdot \frac{y}{{z}^{3}} + 15.234687407 \cdot \frac{t \cdot y}{{z}^{3}}\right)\right)\right)}\]

    if -1.6887926911065685e34 < z < 3.86850744013776074e67

    1. Initial program 2.7

      \[x + \frac{y \cdot \left(\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b\right)}{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}\]
    2. Using strategy rm
    3. Applied associate-/l*_binary641.2

      \[\leadsto x + \color{blue}{\frac{y}{\frac{\left(\left(\left(z + 15.234687407\right) \cdot z + 31.4690115749\right) \cdot z + 11.9400905721\right) \cdot z + 0.607771387771}{\left(\left(\left(z \cdot 3.13060547623 + 11.1667541262\right) \cdot z + t\right) \cdot z + a\right) \cdot z + b}}}\]
    4. Simplified1.2

      \[\leadsto x + \frac{y}{\color{blue}{\frac{0.607771387771 + z \cdot \left(11.9400905721 + z \cdot \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right)\right)}{b + z \cdot \left(a + z \cdot \left(t + z \cdot \left(11.1667541262 + z \cdot 3.13060547623\right)\right)\right)}}}\]
  3. Recombined 3 regimes into one program.
  4. Final simplification1.9

    \[\leadsto \begin{array}{l} \mathbf{if}\;z \leq -1.7009428391936115 \cdot 10^{+85}:\\ \;\;\;\;x + 3.13060547623 \cdot y\\ \mathbf{elif}\;z \leq -1.6887926911065685 \cdot 10^{+34}:\\ \;\;\;\;x + \left(\left(3.13060547623 \cdot y + \left(\left(\frac{y \cdot t}{z \cdot z} + 457.96100221584277 \cdot \frac{y}{z \cdot z}\right) + \frac{y \cdot a}{{z}^{3}}\right)\right) - \left(36.527041698806414 \cdot \frac{y}{z} + \left(5864.802528269903 \cdot \frac{y}{{z}^{3}} + 15.234687407 \cdot \frac{y \cdot t}{{z}^{3}}\right)\right)\right)\\ \mathbf{elif}\;z \leq 3.868507440137761 \cdot 10^{+67}:\\ \;\;\;\;x + \frac{y}{\frac{0.607771387771 + z \cdot \left(11.9400905721 + z \cdot \left(31.4690115749 + z \cdot \left(z + 15.234687407\right)\right)\right)}{b + z \cdot \left(a + z \cdot \left(t + z \cdot \left(11.1667541262 + z \cdot 3.13060547623\right)\right)\right)}}\\ \mathbf{else}:\\ \;\;\;\;x + 3.13060547623 \cdot y\\ \end{array}\]

Alternatives

Reproduce

herbie shell --seed 2021118 
(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.0))) (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.0)))))

  (+ 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))))