Average Error: 3.8 → 2.0
Time: 13.6s
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}\;b - c \le -4.677722176614463518561403813060778277876 \cdot 10^{174} \lor \neg \left(b - c \le -4018107214177334460416\right):\\ \;\;\;\;\frac{x}{x + e^{2 \cdot \mathsf{fma}\left(z, \frac{\sqrt{t + a}}{t}, \left(b - c\right) \cdot \left(-\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)\right)} \cdot y}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{\mathsf{fma}\left(y, {\left(e^{2}\right)}^{\left(\log \left(e^{\mathsf{fma}\left(\frac{\frac{2}{t}}{3} - \left(a + \frac{5}{6}\right), b - c, \frac{z \cdot \sqrt{t + a}}{t}\right)}\right)\right)}, x\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}\;b - c \le -4.677722176614463518561403813060778277876 \cdot 10^{174} \lor \neg \left(b - c \le -4018107214177334460416\right):\\
\;\;\;\;\frac{x}{x + e^{2 \cdot \mathsf{fma}\left(z, \frac{\sqrt{t + a}}{t}, \left(b - c\right) \cdot \left(-\left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)\right)} \cdot y}\\

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

\end{array}
double f(double x, double y, double z, double t, double a, double b, double c) {
        double r80098 = x;
        double r80099 = y;
        double r80100 = 2.0;
        double r80101 = z;
        double r80102 = t;
        double r80103 = a;
        double r80104 = r80102 + r80103;
        double r80105 = sqrt(r80104);
        double r80106 = r80101 * r80105;
        double r80107 = r80106 / r80102;
        double r80108 = b;
        double r80109 = c;
        double r80110 = r80108 - r80109;
        double r80111 = 5.0;
        double r80112 = 6.0;
        double r80113 = r80111 / r80112;
        double r80114 = r80103 + r80113;
        double r80115 = 3.0;
        double r80116 = r80102 * r80115;
        double r80117 = r80100 / r80116;
        double r80118 = r80114 - r80117;
        double r80119 = r80110 * r80118;
        double r80120 = r80107 - r80119;
        double r80121 = r80100 * r80120;
        double r80122 = exp(r80121);
        double r80123 = r80099 * r80122;
        double r80124 = r80098 + r80123;
        double r80125 = r80098 / r80124;
        return r80125;
}

double f(double x, double y, double z, double t, double a, double b, double c) {
        double r80126 = b;
        double r80127 = c;
        double r80128 = r80126 - r80127;
        double r80129 = -4.6777221766144635e+174;
        bool r80130 = r80128 <= r80129;
        double r80131 = -4.0181072141773345e+21;
        bool r80132 = r80128 <= r80131;
        double r80133 = !r80132;
        bool r80134 = r80130 || r80133;
        double r80135 = x;
        double r80136 = 2.0;
        double r80137 = z;
        double r80138 = t;
        double r80139 = a;
        double r80140 = r80138 + r80139;
        double r80141 = sqrt(r80140);
        double r80142 = r80141 / r80138;
        double r80143 = 5.0;
        double r80144 = 6.0;
        double r80145 = r80143 / r80144;
        double r80146 = r80139 + r80145;
        double r80147 = 3.0;
        double r80148 = r80138 * r80147;
        double r80149 = r80136 / r80148;
        double r80150 = r80146 - r80149;
        double r80151 = -r80150;
        double r80152 = r80128 * r80151;
        double r80153 = fma(r80137, r80142, r80152);
        double r80154 = r80136 * r80153;
        double r80155 = exp(r80154);
        double r80156 = y;
        double r80157 = r80155 * r80156;
        double r80158 = r80135 + r80157;
        double r80159 = r80135 / r80158;
        double r80160 = exp(r80136);
        double r80161 = r80136 / r80138;
        double r80162 = r80161 / r80147;
        double r80163 = r80162 - r80146;
        double r80164 = r80137 * r80141;
        double r80165 = r80164 / r80138;
        double r80166 = fma(r80163, r80128, r80165);
        double r80167 = exp(r80166);
        double r80168 = log(r80167);
        double r80169 = pow(r80160, r80168);
        double r80170 = fma(r80156, r80169, r80135);
        double r80171 = r80135 / r80170;
        double r80172 = r80134 ? r80159 : r80171;
        return r80172;
}

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 (- b c) < -4.6777221766144635e+174 or -4.0181072141773345e+21 < (- b c)

    1. Initial program 3.8

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

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

      \[\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-neg2.0

      \[\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. Simplified2.0

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

    if -4.6777221766144635e+174 < (- b c) < -4.0181072141773345e+21

    1. Initial program 4.0

      \[\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. Simplified1.9

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

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

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

Reproduce

herbie shell --seed 2019350 +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)))))))))))