Average Error: 3.8 → 2.3
Time: 15.4s
Precision: 64
\[\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\]
\[\begin{array}{l} \mathbf{if}\;t \le -3.84581125504620826 \cdot 10^{-243} \lor \neg \left(t \le 4.3711936635722358 \cdot 10^{-236}\right):\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(\frac{z}{1}, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - t \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{t \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\ \end{array}\]
\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}
\begin{array}{l}
\mathbf{if}\;t \le -3.84581125504620826 \cdot 10^{-243} \lor \neg \left(t \le 4.3711936635722358 \cdot 10^{-236}\right):\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(\frac{z}{1}, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - t \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{t \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r128835 = x;
        double r128836 = y;
        double r128837 = 2.0;
        double r128838 = z;
        double r128839 = t;
        double r128840 = a;
        double r128841 = r128839 + r128840;
        double r128842 = sqrt(r128841);
        double r128843 = r128838 * r128842;
        double r128844 = r128843 / r128839;
        double r128845 = b;
        double r128846 = c;
        double r128847 = r128845 - r128846;
        double r128848 = 5.0;
        double r128849 = 6.0;
        double r128850 = r128848 / r128849;
        double r128851 = r128840 + r128850;
        double r128852 = 3.0;
        double r128853 = r128839 * r128852;
        double r128854 = r128837 / r128853;
        double r128855 = r128851 - r128854;
        double r128856 = r128847 * r128855;
        double r128857 = r128844 - r128856;
        double r128858 = r128837 * r128857;
        double r128859 = exp(r128858);
        double r128860 = r128836 * r128859;
        double r128861 = r128835 + r128860;
        double r128862 = r128835 / r128861;
        return r128862;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r128863 = t;
        double r128864 = -3.845811255046208e-243;
        bool r128865 = r128863 <= r128864;
        double r128866 = 4.371193663572236e-236;
        bool r128867 = r128863 <= r128866;
        double r128868 = !r128867;
        bool r128869 = r128865 || r128868;
        double r128870 = x;
        double r128871 = y;
        double r128872 = 2.0;
        double r128873 = z;
        double r128874 = 1.0;
        double r128875 = r128873 / r128874;
        double r128876 = a;
        double r128877 = r128863 + r128876;
        double r128878 = sqrt(r128877);
        double r128879 = r128878 / r128863;
        double r128880 = b;
        double r128881 = c;
        double r128882 = r128880 - r128881;
        double r128883 = 5.0;
        double r128884 = 6.0;
        double r128885 = r128883 / r128884;
        double r128886 = r128876 + r128885;
        double r128887 = 3.0;
        double r128888 = r128863 * r128887;
        double r128889 = r128872 / r128888;
        double r128890 = r128886 - r128889;
        double r128891 = r128882 * r128890;
        double r128892 = -r128891;
        double r128893 = fma(r128875, r128879, r128892);
        double r128894 = exp(r128893);
        double r128895 = log(r128894);
        double r128896 = r128872 * r128895;
        double r128897 = exp(r128896);
        double r128898 = r128871 * r128897;
        double r128899 = r128870 + r128898;
        double r128900 = r128870 / r128899;
        double r128901 = r128873 * r128878;
        double r128902 = r128876 - r128885;
        double r128903 = r128902 * r128888;
        double r128904 = r128901 * r128903;
        double r128905 = r128876 * r128876;
        double r128906 = r128885 * r128885;
        double r128907 = r128905 - r128906;
        double r128908 = r128907 * r128888;
        double r128909 = r128902 * r128872;
        double r128910 = r128908 - r128909;
        double r128911 = r128882 * r128910;
        double r128912 = r128863 * r128911;
        double r128913 = r128904 - r128912;
        double r128914 = r128863 * r128903;
        double r128915 = r128913 / r128914;
        double r128916 = r128872 * r128915;
        double r128917 = exp(r128916);
        double r128918 = r128871 * r128917;
        double r128919 = r128870 + r128918;
        double r128920 = r128870 / r128919;
        double r128921 = r128869 ? r128900 : r128920;
        return r128921;
}

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

Bits error versus c

Derivation

  1. Split input into 2 regimes
  2. if t < -3.845811255046208e-243 or 4.371193663572236e-236 < t

    1. Initial program 3.2

      \[\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\]
    2. Using strategy rm
    3. Applied *-un-lft-identity3.2

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{\color{blue}{1 \cdot t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\]
    4. Applied times-frac1.9

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\color{blue}{\frac{z}{1} \cdot \frac{\sqrt{t + a}}{t}} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\]
    5. Applied fma-neg1.1

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\mathsf{fma}\left(\frac{z}{1}, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}}\]
    6. Using strategy rm
    7. Applied add-log-exp1.1

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\log \left(e^{\mathsf{fma}\left(\frac{z}{1}, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}}\]

    if -3.845811255046208e-243 < t < 4.371193663572236e-236

    1. Initial program 8.4

      \[\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\]
    2. Using strategy rm
    3. Applied flip-+13.7

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \left(\color{blue}{\frac{a \cdot a - \frac{5}{6} \cdot \frac{5}{6}}{a - \frac{5}{6}}} - \frac{2}{t \cdot 3}\right)\right)}}\]
    4. Applied frac-sub13.7

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \left(b - c\right) \cdot \color{blue}{\frac{\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2}{\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)}}\right)}}\]
    5. Applied associate-*r/13.7

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\frac{z \cdot \sqrt{t + a}}{t} - \color{blue}{\frac{\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)}{\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)}}\right)}}\]
    6. Applied frac-sub11.5

      \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - t \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{t \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}}\]
  3. Recombined 2 regimes into one program.
  4. Final simplification2.3

    \[\leadsto \begin{array}{l} \mathbf{if}\;t \le -3.84581125504620826 \cdot 10^{-243} \lor \neg \left(t \le 4.3711936635722358 \cdot 10^{-236}\right):\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \log \left(e^{\mathsf{fma}\left(\frac{z}{1}, \frac{\sqrt{t + a}}{t}, -\left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}\right)}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{\left(z \cdot \sqrt{t + a}\right) \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right) - t \cdot \left(\left(b - c\right) \cdot \left(\left(a \cdot a - \frac{5}{6} \cdot \frac{5}{6}\right) \cdot \left(t \cdot 3\right) - \left(a - \frac{5}{6}\right) \cdot 2\right)\right)}{t \cdot \left(\left(a - \frac{5}{6}\right) \cdot \left(t \cdot 3\right)\right)}}}\\ \end{array}\]

Reproduce

herbie shell --seed 2020020 +o rules:numerics
(FPCore (x y z t a b c)
  :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2"
  :precision binary64
  (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))