Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I

Percentage Accurate: 94.3% → 97.3%
Time: 16.7s
Alternatives: 10
Speedup: 0.7×

Specification

?
\[\begin{array}{l} \\ \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)}} \end{array} \]
(FPCore (x y z t a b c)
 :precision binary64
 (/
  x
  (+
   x
   (*
    y
    (exp
     (*
      2.0
      (-
       (/ (* z (sqrt (+ t a))) t)
       (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))
double code(double x, double y, double z, double t, double a, double b, double c) {
	return x / (x + (y * exp((2.0 * (((z * sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
}
real(8) function code(x, y, z, t, a, b, c)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    real(8), intent (in) :: c
    code = x / (x + (y * exp((2.0d0 * (((z * sqrt((t + a))) / t) - ((b - c) * ((a + (5.0d0 / 6.0d0)) - (2.0d0 / (t * 3.0d0)))))))))
end function
public static double code(double x, double y, double z, double t, double a, double b, double c) {
	return x / (x + (y * Math.exp((2.0 * (((z * Math.sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
}
def code(x, y, z, t, a, b, c):
	return x / (x + (y * math.exp((2.0 * (((z * math.sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))))
function code(x, y, z, t, a, b, c)
	return Float64(x / Float64(x + Float64(y * exp(Float64(2.0 * Float64(Float64(Float64(z * sqrt(Float64(t + a))) / t) - Float64(Float64(b - c) * Float64(Float64(a + Float64(5.0 / 6.0)) - Float64(2.0 / Float64(t * 3.0))))))))))
end
function tmp = code(x, y, z, t, a, b, c)
	tmp = x / (x + (y * exp((2.0 * (((z * sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
end
code[x_, y_, z_, t_, a_, b_, c_] := N[(x / N[(x + N[(y * N[Exp[N[(2.0 * N[(N[(N[(z * N[Sqrt[N[(t + a), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t), $MachinePrecision] - N[(N[(b - c), $MachinePrecision] * N[(N[(a + N[(5.0 / 6.0), $MachinePrecision]), $MachinePrecision] - N[(2.0 / N[(t * 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\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)}}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

The average percentage accuracy by input value. Horizontal axis shows value of an input variable; the variable is choosen in the title. Vertical axis is accuracy; higher is better. Red represent the original program, while blue represents Herbie's suggestion. These can be toggled with buttons below the plot. The line is an average while dots represent individual samples.

Accuracy vs Speed?

Herbie found 10 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 94.3% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \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)}} \end{array} \]
(FPCore (x y z t a b c)
 :precision binary64
 (/
  x
  (+
   x
   (*
    y
    (exp
     (*
      2.0
      (-
       (/ (* z (sqrt (+ t a))) t)
       (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))
double code(double x, double y, double z, double t, double a, double b, double c) {
	return x / (x + (y * exp((2.0 * (((z * sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
}
real(8) function code(x, y, z, t, a, b, c)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8), intent (in) :: z
    real(8), intent (in) :: t
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    real(8), intent (in) :: c
    code = x / (x + (y * exp((2.0d0 * (((z * sqrt((t + a))) / t) - ((b - c) * ((a + (5.0d0 / 6.0d0)) - (2.0d0 / (t * 3.0d0)))))))))
end function
public static double code(double x, double y, double z, double t, double a, double b, double c) {
	return x / (x + (y * Math.exp((2.0 * (((z * Math.sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
}
def code(x, y, z, t, a, b, c):
	return x / (x + (y * math.exp((2.0 * (((z * math.sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))))
function code(x, y, z, t, a, b, c)
	return Float64(x / Float64(x + Float64(y * exp(Float64(2.0 * Float64(Float64(Float64(z * sqrt(Float64(t + a))) / t) - Float64(Float64(b - c) * Float64(Float64(a + Float64(5.0 / 6.0)) - Float64(2.0 / Float64(t * 3.0))))))))))
end
function tmp = code(x, y, z, t, a, b, c)
	tmp = x / (x + (y * exp((2.0 * (((z * sqrt((t + a))) / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
end
code[x_, y_, z_, t_, a_, b_, c_] := N[(x / N[(x + N[(y * N[Exp[N[(2.0 * N[(N[(N[(z * N[Sqrt[N[(t + a), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] / t), $MachinePrecision] - N[(N[(b - c), $MachinePrecision] * N[(N[(a + N[(5.0 / 6.0), $MachinePrecision]), $MachinePrecision] - N[(2.0 / N[(t * 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\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)}}
\end{array}

Alternative 1: 97.3% accurate, 0.7× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_1 := \frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right)\\ \mathbf{if}\;t\_1 \leq \infty:\\ \;\;\;\;\frac{x}{e^{t\_1 \cdot 2} \cdot y + x}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{\mathsf{fma}\left(e^{\mathsf{fma}\left(a, -2, -1.6666666666666667\right) \cdot \left(b - c\right)}, y, x\right)}\\ \end{array} \end{array} \]
(FPCore (x y z t a b c)
 :precision binary64
 (let* ((t_1
         (-
          (/ (* (sqrt (+ a t)) z) t)
          (* (- (/ 2.0 (* 3.0 t)) (+ (/ 5.0 6.0) a)) (- c b)))))
   (if (<= t_1 INFINITY)
     (/ x (+ (* (exp (* t_1 2.0)) y) x))
     (/ x (fma (exp (* (fma a -2.0 -1.6666666666666667) (- b c))) y x)))))
double code(double x, double y, double z, double t, double a, double b, double c) {
	double t_1 = ((sqrt((a + t)) * z) / t) - (((2.0 / (3.0 * t)) - ((5.0 / 6.0) + a)) * (c - b));
	double tmp;
	if (t_1 <= ((double) INFINITY)) {
		tmp = x / ((exp((t_1 * 2.0)) * y) + x);
	} else {
		tmp = x / fma(exp((fma(a, -2.0, -1.6666666666666667) * (b - c))), y, x);
	}
	return tmp;
}
function code(x, y, z, t, a, b, c)
	t_1 = Float64(Float64(Float64(sqrt(Float64(a + t)) * z) / t) - Float64(Float64(Float64(2.0 / Float64(3.0 * t)) - Float64(Float64(5.0 / 6.0) + a)) * Float64(c - b)))
	tmp = 0.0
	if (t_1 <= Inf)
		tmp = Float64(x / Float64(Float64(exp(Float64(t_1 * 2.0)) * y) + x));
	else
		tmp = Float64(x / fma(exp(Float64(fma(a, -2.0, -1.6666666666666667) * Float64(b - c))), y, x));
	end
	return tmp
end
code[x_, y_, z_, t_, a_, b_, c_] := Block[{t$95$1 = N[(N[(N[(N[Sqrt[N[(a + t), $MachinePrecision]], $MachinePrecision] * z), $MachinePrecision] / t), $MachinePrecision] - N[(N[(N[(2.0 / N[(3.0 * t), $MachinePrecision]), $MachinePrecision] - N[(N[(5.0 / 6.0), $MachinePrecision] + a), $MachinePrecision]), $MachinePrecision] * N[(c - b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, Infinity], N[(x / N[(N[(N[Exp[N[(t$95$1 * 2.0), $MachinePrecision]], $MachinePrecision] * y), $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision], N[(x / N[(N[Exp[N[(N[(a * -2.0 + -1.6666666666666667), $MachinePrecision] * N[(b - c), $MachinePrecision]), $MachinePrecision]], $MachinePrecision] * y + x), $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_1 := \frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right)\\
\mathbf{if}\;t\_1 \leq \infty:\\
\;\;\;\;\frac{x}{e^{t\_1 \cdot 2} \cdot y + x}\\

\mathbf{else}:\\
\;\;\;\;\frac{x}{\mathsf{fma}\left(e^{\mathsf{fma}\left(a, -2, -1.6666666666666667\right) \cdot \left(b - c\right)}, y, x\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (-.f64 (/.f64 (*.f64 z (sqrt.f64 (+.f64 t a))) t) (*.f64 (-.f64 b c) (-.f64 (+.f64 a (/.f64 #s(literal 5 binary64) #s(literal 6 binary64))) (/.f64 #s(literal 2 binary64) (*.f64 t #s(literal 3 binary64)))))) < +inf.0

    1. Initial program 99.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. Add Preprocessing

    if +inf.0 < (-.f64 (/.f64 (*.f64 z (sqrt.f64 (+.f64 t a))) t) (*.f64 (-.f64 b c) (-.f64 (+.f64 a (/.f64 #s(literal 5 binary64) #s(literal 6 binary64))) (/.f64 #s(literal 2 binary64) (*.f64 t #s(literal 3 binary64))))))

    1. Initial program 0.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. Add Preprocessing
    3. Taylor expanded in z around 0

      \[\leadsto \frac{x}{\color{blue}{x + y \cdot e^{-2 \cdot \left(\left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3} \cdot \frac{1}{t}\right)\right)}}} \]
    4. Step-by-step derivation
      1. +-commutativeN/A

        \[\leadsto \frac{x}{\color{blue}{y \cdot e^{-2 \cdot \left(\left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3} \cdot \frac{1}{t}\right)\right)} + x}} \]
      2. *-commutativeN/A

        \[\leadsto \frac{x}{\color{blue}{e^{-2 \cdot \left(\left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3} \cdot \frac{1}{t}\right)\right)} \cdot y} + x} \]
      3. lower-fma.f64N/A

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

      \[\leadsto \frac{x}{\color{blue}{\mathsf{fma}\left(e^{\left(-2 \cdot \left(\left(0.8333333333333334 + a\right) - \frac{0.6666666666666666}{t}\right)\right) \cdot \left(b - c\right)}, y, x\right)}} \]
    6. Taylor expanded in t around inf

      \[\leadsto \frac{x}{\mathsf{fma}\left(e^{\left(-2 \cdot \left(\frac{5}{6} + a\right)\right) \cdot \left(b - c\right)}, y, x\right)} \]
    7. Step-by-step derivation
      1. Applied rewrites65.4%

        \[\leadsto \frac{x}{\mathsf{fma}\left(e^{\mathsf{fma}\left(a, -2, -1.6666666666666667\right) \cdot \left(b - c\right)}, y, x\right)} \]
    8. Recombined 2 regimes into one program.
    9. Final simplification97.4%

      \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right) \leq \infty:\\ \;\;\;\;\frac{x}{e^{\left(\frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right)\right) \cdot 2} \cdot y + x}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{\mathsf{fma}\left(e^{\mathsf{fma}\left(a, -2, -1.6666666666666667\right) \cdot \left(b - c\right)}, y, x\right)}\\ \end{array} \]
    10. Add Preprocessing

    Alternative 2: 70.6% accurate, 0.6× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;\frac{x}{e^{\left(\frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right)\right) \cdot 2} \cdot y + x} \leq 2 \cdot 10^{-14}:\\ \;\;\;\;\frac{x}{\mathsf{fma}\left(e^{\left(\left(-b\right) \cdot a\right) \cdot 2}, y, x\right)}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \end{array} \]
    (FPCore (x y z t a b c)
     :precision binary64
     (if (<=
          (/
           x
           (+
            (*
             (exp
              (*
               (-
                (/ (* (sqrt (+ a t)) z) t)
                (* (- (/ 2.0 (* 3.0 t)) (+ (/ 5.0 6.0) a)) (- c b)))
               2.0))
             y)
            x))
          2e-14)
       (/ x (fma (exp (* (* (- b) a) 2.0)) y x))
       1.0))
    double code(double x, double y, double z, double t, double a, double b, double c) {
    	double tmp;
    	if ((x / ((exp(((((sqrt((a + t)) * z) / t) - (((2.0 / (3.0 * t)) - ((5.0 / 6.0) + a)) * (c - b))) * 2.0)) * y) + x)) <= 2e-14) {
    		tmp = x / fma(exp(((-b * a) * 2.0)), y, x);
    	} else {
    		tmp = 1.0;
    	}
    	return tmp;
    }
    
    function code(x, y, z, t, a, b, c)
    	tmp = 0.0
    	if (Float64(x / Float64(Float64(exp(Float64(Float64(Float64(Float64(sqrt(Float64(a + t)) * z) / t) - Float64(Float64(Float64(2.0 / Float64(3.0 * t)) - Float64(Float64(5.0 / 6.0) + a)) * Float64(c - b))) * 2.0)) * y) + x)) <= 2e-14)
    		tmp = Float64(x / fma(exp(Float64(Float64(Float64(-b) * a) * 2.0)), y, x));
    	else
    		tmp = 1.0;
    	end
    	return tmp
    end
    
    code[x_, y_, z_, t_, a_, b_, c_] := If[LessEqual[N[(x / N[(N[(N[Exp[N[(N[(N[(N[(N[Sqrt[N[(a + t), $MachinePrecision]], $MachinePrecision] * z), $MachinePrecision] / t), $MachinePrecision] - N[(N[(N[(2.0 / N[(3.0 * t), $MachinePrecision]), $MachinePrecision] - N[(N[(5.0 / 6.0), $MachinePrecision] + a), $MachinePrecision]), $MachinePrecision] * N[(c - b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision] * y), $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision], 2e-14], N[(x / N[(N[Exp[N[(N[((-b) * a), $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision] * y + x), $MachinePrecision]), $MachinePrecision], 1.0]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;\frac{x}{e^{\left(\frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right)\right) \cdot 2} \cdot y + x} \leq 2 \cdot 10^{-14}:\\
    \;\;\;\;\frac{x}{\mathsf{fma}\left(e^{\left(\left(-b\right) \cdot a\right) \cdot 2}, y, x\right)}\\
    
    \mathbf{else}:\\
    \;\;\;\;1\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if (/.f64 x (+.f64 x (*.f64 y (exp.f64 (*.f64 #s(literal 2 binary64) (-.f64 (/.f64 (*.f64 z (sqrt.f64 (+.f64 t a))) t) (*.f64 (-.f64 b c) (-.f64 (+.f64 a (/.f64 #s(literal 5 binary64) #s(literal 6 binary64))) (/.f64 #s(literal 2 binary64) (*.f64 t #s(literal 3 binary64))))))))))) < 2e-14

      1. Initial program 99.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. Add Preprocessing
      3. Taylor expanded in b around inf

        \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\left(b \cdot \left(\frac{2}{3} \cdot \frac{1}{t} - \left(\frac{5}{6} + a\right)\right)\right)}}} \]
      4. Step-by-step derivation
        1. *-commutativeN/A

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\left(\left(\frac{2}{3} \cdot \frac{1}{t} - \left(\frac{5}{6} + a\right)\right) \cdot b\right)}}} \]
        2. lower-*.f64N/A

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\left(\left(\frac{2}{3} \cdot \frac{1}{t} - \left(\frac{5}{6} + a\right)\right) \cdot b\right)}}} \]
        3. associate--r+N/A

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\color{blue}{\left(\left(\frac{2}{3} \cdot \frac{1}{t} - \frac{5}{6}\right) - a\right)} \cdot b\right)}} \]
        4. lower--.f64N/A

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\color{blue}{\left(\left(\frac{2}{3} \cdot \frac{1}{t} - \frac{5}{6}\right) - a\right)} \cdot b\right)}} \]
        5. lower--.f64N/A

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

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\left(\left(\color{blue}{\frac{\frac{2}{3} \cdot 1}{t}} - \frac{5}{6}\right) - a\right) \cdot b\right)}} \]
        7. metadata-evalN/A

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\left(\left(\frac{\color{blue}{\frac{2}{3}}}{t} - \frac{5}{6}\right) - a\right) \cdot b\right)}} \]
        8. lower-/.f6463.9

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\left(\left(\color{blue}{\frac{0.6666666666666666}{t}} - 0.8333333333333334\right) - a\right) \cdot b\right)}} \]
      5. Applied rewrites63.9%

        \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \color{blue}{\left(\left(\left(\frac{0.6666666666666666}{t} - 0.8333333333333334\right) - a\right) \cdot b\right)}}} \]
      6. Taylor expanded in a around inf

        \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(-1 \cdot \color{blue}{\left(a \cdot b\right)}\right)}} \]
      7. Step-by-step derivation
        1. Applied rewrites45.9%

          \[\leadsto \frac{x}{x + y \cdot e^{2 \cdot \left(\left(-b\right) \cdot \color{blue}{a}\right)}} \]
        2. Step-by-step derivation
          1. lift-+.f64N/A

            \[\leadsto \frac{x}{\color{blue}{x + y \cdot e^{2 \cdot \left(\left(\mathsf{neg}\left(b\right)\right) \cdot a\right)}}} \]
        3. Applied rewrites45.9%

          \[\leadsto \frac{x}{\color{blue}{\mathsf{fma}\left(e^{\left(b \cdot \left(-a\right)\right) \cdot 2}, y, x\right)}} \]

        if 2e-14 < (/.f64 x (+.f64 x (*.f64 y (exp.f64 (*.f64 #s(literal 2 binary64) (-.f64 (/.f64 (*.f64 z (sqrt.f64 (+.f64 t a))) t) (*.f64 (-.f64 b c) (-.f64 (+.f64 a (/.f64 #s(literal 5 binary64) #s(literal 6 binary64))) (/.f64 #s(literal 2 binary64) (*.f64 t #s(literal 3 binary64)))))))))))

        1. Initial program 89.9%

          \[\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. Add Preprocessing
        3. Taylor expanded in z around 0

          \[\leadsto \frac{x}{\color{blue}{x + y \cdot e^{-2 \cdot \left(\left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3} \cdot \frac{1}{t}\right)\right)}}} \]
        4. Step-by-step derivation
          1. +-commutativeN/A

            \[\leadsto \frac{x}{\color{blue}{y \cdot e^{-2 \cdot \left(\left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3} \cdot \frac{1}{t}\right)\right)} + x}} \]
          2. *-commutativeN/A

            \[\leadsto \frac{x}{\color{blue}{e^{-2 \cdot \left(\left(b - c\right) \cdot \left(\left(\frac{5}{6} + a\right) - \frac{2}{3} \cdot \frac{1}{t}\right)\right)} \cdot y} + x} \]
          3. lower-fma.f64N/A

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

          \[\leadsto \frac{x}{\color{blue}{\mathsf{fma}\left(e^{\left(-2 \cdot \left(\left(0.8333333333333334 + a\right) - \frac{0.6666666666666666}{t}\right)\right) \cdot \left(b - c\right)}, y, x\right)}} \]
        6. Taylor expanded in x around inf

          \[\leadsto \color{blue}{1} \]
        7. Step-by-step derivation
          1. Applied rewrites94.0%

            \[\leadsto \color{blue}{1} \]
        8. Recombined 2 regimes into one program.
        9. Final simplification70.6%

          \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{x}{e^{\left(\frac{\sqrt{a + t} \cdot z}{t} - \left(\frac{2}{3 \cdot t} - \left(\frac{5}{6} + a\right)\right) \cdot \left(c - b\right)\right) \cdot 2} \cdot y + x} \leq 2 \cdot 10^{-14}:\\ \;\;\;\;\frac{x}{\mathsf{fma}\left(e^{\left(\left(-b\right) \cdot a\right) \cdot 2}, y, x\right)}\\ \mathbf{else}:\\ \;\;\;\;1\\ \end{array} \]
        10. Add Preprocessing

        Developer Target 1: 95.1% accurate, 0.7× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} t_1 := z \cdot \sqrt{t + a}\\ t_2 := a - \frac{5}{6}\\ \mathbf{if}\;t < -2.118326644891581 \cdot 10^{-50}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\left(a \cdot c + 0.8333333333333334 \cdot c\right) - a \cdot b\right)}}\\ \mathbf{elif}\;t < 5.196588770651547 \cdot 10^{-123}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{t\_1 \cdot \left(\left(3 \cdot t\right) \cdot t\_2\right) - \left(\left(\frac{5}{6} + a\right) \cdot \left(3 \cdot t\right) - 2\right) \cdot \left(t\_2 \cdot \left(\left(b - c\right) \cdot t\right)\right)}{\left(\left(t \cdot t\right) \cdot 3\right) \cdot t\_2}}}\\ \mathbf{else}:\\ \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{t\_1}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\\ \end{array} \end{array} \]
        (FPCore (x y z t a b c)
         :precision binary64
         (let* ((t_1 (* z (sqrt (+ t a)))) (t_2 (- a (/ 5.0 6.0))))
           (if (< t -2.118326644891581e-50)
             (/
              x
              (+
               x
               (* y (exp (* 2.0 (- (+ (* a c) (* 0.8333333333333334 c)) (* a b)))))))
             (if (< t 5.196588770651547e-123)
               (/
                x
                (+
                 x
                 (*
                  y
                  (exp
                   (*
                    2.0
                    (/
                     (-
                      (* t_1 (* (* 3.0 t) t_2))
                      (*
                       (- (* (+ (/ 5.0 6.0) a) (* 3.0 t)) 2.0)
                       (* t_2 (* (- b c) t))))
                     (* (* (* t t) 3.0) t_2)))))))
               (/
                x
                (+
                 x
                 (*
                  y
                  (exp
                   (*
                    2.0
                    (-
                     (/ t_1 t)
                     (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0))))))))))))))
        double code(double x, double y, double z, double t, double a, double b, double c) {
        	double t_1 = z * sqrt((t + a));
        	double t_2 = a - (5.0 / 6.0);
        	double tmp;
        	if (t < -2.118326644891581e-50) {
        		tmp = x / (x + (y * exp((2.0 * (((a * c) + (0.8333333333333334 * c)) - (a * b))))));
        	} else if (t < 5.196588770651547e-123) {
        		tmp = x / (x + (y * exp((2.0 * (((t_1 * ((3.0 * t) * t_2)) - (((((5.0 / 6.0) + a) * (3.0 * t)) - 2.0) * (t_2 * ((b - c) * t)))) / (((t * t) * 3.0) * t_2))))));
        	} else {
        		tmp = x / (x + (y * exp((2.0 * ((t_1 / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
        	}
        	return tmp;
        }
        
        real(8) function code(x, y, z, t, a, b, c)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            real(8), intent (in) :: z
            real(8), intent (in) :: t
            real(8), intent (in) :: a
            real(8), intent (in) :: b
            real(8), intent (in) :: c
            real(8) :: t_1
            real(8) :: t_2
            real(8) :: tmp
            t_1 = z * sqrt((t + a))
            t_2 = a - (5.0d0 / 6.0d0)
            if (t < (-2.118326644891581d-50)) then
                tmp = x / (x + (y * exp((2.0d0 * (((a * c) + (0.8333333333333334d0 * c)) - (a * b))))))
            else if (t < 5.196588770651547d-123) then
                tmp = x / (x + (y * exp((2.0d0 * (((t_1 * ((3.0d0 * t) * t_2)) - (((((5.0d0 / 6.0d0) + a) * (3.0d0 * t)) - 2.0d0) * (t_2 * ((b - c) * t)))) / (((t * t) * 3.0d0) * t_2))))))
            else
                tmp = x / (x + (y * exp((2.0d0 * ((t_1 / t) - ((b - c) * ((a + (5.0d0 / 6.0d0)) - (2.0d0 / (t * 3.0d0)))))))))
            end if
            code = tmp
        end function
        
        public static double code(double x, double y, double z, double t, double a, double b, double c) {
        	double t_1 = z * Math.sqrt((t + a));
        	double t_2 = a - (5.0 / 6.0);
        	double tmp;
        	if (t < -2.118326644891581e-50) {
        		tmp = x / (x + (y * Math.exp((2.0 * (((a * c) + (0.8333333333333334 * c)) - (a * b))))));
        	} else if (t < 5.196588770651547e-123) {
        		tmp = x / (x + (y * Math.exp((2.0 * (((t_1 * ((3.0 * t) * t_2)) - (((((5.0 / 6.0) + a) * (3.0 * t)) - 2.0) * (t_2 * ((b - c) * t)))) / (((t * t) * 3.0) * t_2))))));
        	} else {
        		tmp = x / (x + (y * Math.exp((2.0 * ((t_1 / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
        	}
        	return tmp;
        }
        
        def code(x, y, z, t, a, b, c):
        	t_1 = z * math.sqrt((t + a))
        	t_2 = a - (5.0 / 6.0)
        	tmp = 0
        	if t < -2.118326644891581e-50:
        		tmp = x / (x + (y * math.exp((2.0 * (((a * c) + (0.8333333333333334 * c)) - (a * b))))))
        	elif t < 5.196588770651547e-123:
        		tmp = x / (x + (y * math.exp((2.0 * (((t_1 * ((3.0 * t) * t_2)) - (((((5.0 / 6.0) + a) * (3.0 * t)) - 2.0) * (t_2 * ((b - c) * t)))) / (((t * t) * 3.0) * t_2))))))
        	else:
        		tmp = x / (x + (y * math.exp((2.0 * ((t_1 / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))))
        	return tmp
        
        function code(x, y, z, t, a, b, c)
        	t_1 = Float64(z * sqrt(Float64(t + a)))
        	t_2 = Float64(a - Float64(5.0 / 6.0))
        	tmp = 0.0
        	if (t < -2.118326644891581e-50)
        		tmp = Float64(x / Float64(x + Float64(y * exp(Float64(2.0 * Float64(Float64(Float64(a * c) + Float64(0.8333333333333334 * c)) - Float64(a * b)))))));
        	elseif (t < 5.196588770651547e-123)
        		tmp = Float64(x / Float64(x + Float64(y * exp(Float64(2.0 * Float64(Float64(Float64(t_1 * Float64(Float64(3.0 * t) * t_2)) - Float64(Float64(Float64(Float64(Float64(5.0 / 6.0) + a) * Float64(3.0 * t)) - 2.0) * Float64(t_2 * Float64(Float64(b - c) * t)))) / Float64(Float64(Float64(t * t) * 3.0) * t_2)))))));
        	else
        		tmp = Float64(x / Float64(x + Float64(y * exp(Float64(2.0 * Float64(Float64(t_1 / t) - Float64(Float64(b - c) * Float64(Float64(a + Float64(5.0 / 6.0)) - Float64(2.0 / Float64(t * 3.0))))))))));
        	end
        	return tmp
        end
        
        function tmp_2 = code(x, y, z, t, a, b, c)
        	t_1 = z * sqrt((t + a));
        	t_2 = a - (5.0 / 6.0);
        	tmp = 0.0;
        	if (t < -2.118326644891581e-50)
        		tmp = x / (x + (y * exp((2.0 * (((a * c) + (0.8333333333333334 * c)) - (a * b))))));
        	elseif (t < 5.196588770651547e-123)
        		tmp = x / (x + (y * exp((2.0 * (((t_1 * ((3.0 * t) * t_2)) - (((((5.0 / 6.0) + a) * (3.0 * t)) - 2.0) * (t_2 * ((b - c) * t)))) / (((t * t) * 3.0) * t_2))))));
        	else
        		tmp = x / (x + (y * exp((2.0 * ((t_1 / t) - ((b - c) * ((a + (5.0 / 6.0)) - (2.0 / (t * 3.0)))))))));
        	end
        	tmp_2 = tmp;
        end
        
        code[x_, y_, z_, t_, a_, b_, c_] := Block[{t$95$1 = N[(z * N[Sqrt[N[(t + a), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(a - N[(5.0 / 6.0), $MachinePrecision]), $MachinePrecision]}, If[Less[t, -2.118326644891581e-50], N[(x / N[(x + N[(y * N[Exp[N[(2.0 * N[(N[(N[(a * c), $MachinePrecision] + N[(0.8333333333333334 * c), $MachinePrecision]), $MachinePrecision] - N[(a * b), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[Less[t, 5.196588770651547e-123], N[(x / N[(x + N[(y * N[Exp[N[(2.0 * N[(N[(N[(t$95$1 * N[(N[(3.0 * t), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(N[(N[(5.0 / 6.0), $MachinePrecision] + a), $MachinePrecision] * N[(3.0 * t), $MachinePrecision]), $MachinePrecision] - 2.0), $MachinePrecision] * N[(t$95$2 * N[(N[(b - c), $MachinePrecision] * t), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(N[(t * t), $MachinePrecision] * 3.0), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(x / N[(x + N[(y * N[Exp[N[(2.0 * N[(N[(t$95$1 / t), $MachinePrecision] - N[(N[(b - c), $MachinePrecision] * N[(N[(a + N[(5.0 / 6.0), $MachinePrecision]), $MachinePrecision] - N[(2.0 / N[(t * 3.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        t_1 := z \cdot \sqrt{t + a}\\
        t_2 := a - \frac{5}{6}\\
        \mathbf{if}\;t < -2.118326644891581 \cdot 10^{-50}:\\
        \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\left(a \cdot c + 0.8333333333333334 \cdot c\right) - a \cdot b\right)}}\\
        
        \mathbf{elif}\;t < 5.196588770651547 \cdot 10^{-123}:\\
        \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \frac{t\_1 \cdot \left(\left(3 \cdot t\right) \cdot t\_2\right) - \left(\left(\frac{5}{6} + a\right) \cdot \left(3 \cdot t\right) - 2\right) \cdot \left(t\_2 \cdot \left(\left(b - c\right) \cdot t\right)\right)}{\left(\left(t \cdot t\right) \cdot 3\right) \cdot t\_2}}}\\
        
        \mathbf{else}:\\
        \;\;\;\;\frac{x}{x + y \cdot e^{2 \cdot \left(\frac{t\_1}{t} - \left(b - c\right) \cdot \left(\left(a + \frac{5}{6}\right) - \frac{2}{t \cdot 3}\right)\right)}}\\
        
        
        \end{array}
        \end{array}
        

        Reproduce

        ?
        herbie shell --seed 2024230 
        (FPCore (x y z t a b c)
          :name "Numeric.SpecFunctions:invIncompleteBetaWorker from math-functions-0.1.5.2, I"
          :precision binary64
        
          :alt
          (! :herbie-platform default (if (< t -2118326644891581/100000000000000000000000000000000000000000000000000000000000000000) (/ x (+ x (* y (exp (* 2 (- (+ (* a c) (* 4166666666666667/5000000000000000 c)) (* a b))))))) (if (< t 5196588770651547/1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000) (/ x (+ x (* y (exp (* 2 (/ (- (* (* z (sqrt (+ t a))) (* (* 3 t) (- a (/ 5 6)))) (* (- (* (+ (/ 5 6) a) (* 3 t)) 2) (* (- a (/ 5 6)) (* (- b c) t)))) (* (* (* t t) 3) (- a (/ 5 6))))))))) (/ x (+ x (* y (exp (* 2 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5 6)) (/ 2 (* t 3)))))))))))))
        
          (/ x (+ x (* y (exp (* 2.0 (- (/ (* z (sqrt (+ t a))) t) (* (- b c) (- (+ a (/ 5.0 6.0)) (/ 2.0 (* t 3.0)))))))))))