Numeric.SpecFunctions:incompleteGamma from math-functions-0.1.5.2, B

Percentage Accurate: 99.4% → 99.4%
Time: 8.0s
Alternatives: 9
Speedup: N/A×

Specification

?
\[\begin{array}{l} \\ \left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \end{array} \]
(FPCore (x y)
 :precision binary64
 (* (* 3.0 (sqrt x)) (- (+ y (/ 1.0 (* x 9.0))) 1.0)))
double code(double x, double y) {
	return (3.0 * sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0);
}
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = (3.0d0 * sqrt(x)) * ((y + (1.0d0 / (x * 9.0d0))) - 1.0d0)
end function
public static double code(double x, double y) {
	return (3.0 * Math.sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0);
}
def code(x, y):
	return (3.0 * math.sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0)
function code(x, y)
	return Float64(Float64(3.0 * sqrt(x)) * Float64(Float64(y + Float64(1.0 / Float64(x * 9.0))) - 1.0))
end
function tmp = code(x, y)
	tmp = (3.0 * sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0);
end
code[x_, y_] := N[(N[(3.0 * N[Sqrt[x], $MachinePrecision]), $MachinePrecision] * N[(N[(y + N[(1.0 / N[(x * 9.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\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 9 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: 99.4% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \end{array} \]
(FPCore (x y)
 :precision binary64
 (* (* 3.0 (sqrt x)) (- (+ y (/ 1.0 (* x 9.0))) 1.0)))
double code(double x, double y) {
	return (3.0 * sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0);
}
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    code = (3.0d0 * sqrt(x)) * ((y + (1.0d0 / (x * 9.0d0))) - 1.0d0)
end function
public static double code(double x, double y) {
	return (3.0 * Math.sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0);
}
def code(x, y):
	return (3.0 * math.sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0)
function code(x, y)
	return Float64(Float64(3.0 * sqrt(x)) * Float64(Float64(y + Float64(1.0 / Float64(x * 9.0))) - 1.0))
end
function tmp = code(x, y)
	tmp = (3.0 * sqrt(x)) * ((y + (1.0 / (x * 9.0))) - 1.0);
end
code[x_, y_] := N[(N[(3.0 * N[Sqrt[x], $MachinePrecision]), $MachinePrecision] * N[(N[(y + N[(1.0 / N[(x * 9.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right)
\end{array}

Alternative 1: 99.4% accurate, 1.2× speedup?

\[\begin{array}{l} \\ \left(\mathsf{fma}\left(3, y, -3\right) + \frac{0.3333333333333333}{x}\right) \cdot \sqrt{x} \end{array} \]
(FPCore (x y)
 :precision binary64
 (* (+ (fma 3.0 y -3.0) (/ 0.3333333333333333 x)) (sqrt x)))
double code(double x, double y) {
	return (fma(3.0, y, -3.0) + (0.3333333333333333 / x)) * sqrt(x);
}
function code(x, y)
	return Float64(Float64(fma(3.0, y, -3.0) + Float64(0.3333333333333333 / x)) * sqrt(x))
end
code[x_, y_] := N[(N[(N[(3.0 * y + -3.0), $MachinePrecision] + N[(0.3333333333333333 / x), $MachinePrecision]), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\left(\mathsf{fma}\left(3, y, -3\right) + \frac{0.3333333333333333}{x}\right) \cdot \sqrt{x}
\end{array}
Derivation
  1. Initial program 99.4%

    \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
  2. Add Preprocessing
  3. Taylor expanded in y around 0

    \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot y\right) + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
  4. Step-by-step derivation
    1. *-commutativeN/A

      \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
    2. associate-*l*N/A

      \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3\right)} + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
    3. associate-*r*N/A

      \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)} \]
    4. *-commutativeN/A

      \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\left(\sqrt{x} \cdot 3\right)} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \]
    5. associate-*l*N/A

      \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\sqrt{x} \cdot \left(3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
    6. distribute-lft-outN/A

      \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
    7. lower-*.f64N/A

      \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
    8. lower-sqrt.f64N/A

      \[\leadsto \color{blue}{\sqrt{x}} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
    9. *-commutativeN/A

      \[\leadsto \sqrt{x} \cdot \left(y \cdot 3 + \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \cdot 3}\right) \]
    10. distribute-rgt-inN/A

      \[\leadsto \sqrt{x} \cdot \color{blue}{\left(3 \cdot \left(y + \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)\right)} \]
    11. associate-+r-N/A

      \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\left(y + \frac{1}{9} \cdot \frac{1}{x}\right) - 1\right)}\right) \]
    12. +-commutativeN/A

      \[\leadsto \sqrt{x} \cdot \left(3 \cdot \left(\color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + y\right)} - 1\right)\right) \]
    13. associate-+r-N/A

      \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + \left(y - 1\right)\right)}\right) \]
    14. +-commutativeN/A

      \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\left(y - 1\right) + \frac{1}{9} \cdot \frac{1}{x}\right)}\right) \]
    15. distribute-rgt-inN/A

      \[\leadsto \sqrt{x} \cdot \color{blue}{\left(\left(y - 1\right) \cdot 3 + \left(\frac{1}{9} \cdot \frac{1}{x}\right) \cdot 3\right)} \]
  5. Applied rewrites99.5%

    \[\leadsto \color{blue}{\sqrt{x} \cdot \mathsf{fma}\left(1 - y, -3, \frac{0.3333333333333333}{x}\right)} \]
  6. Step-by-step derivation
    1. Applied rewrites99.5%

      \[\leadsto \sqrt{x} \cdot \left(\frac{0.3333333333333333}{x} + \color{blue}{-3 \cdot \left(1 - y\right)}\right) \]
    2. Taylor expanded in y around 0

      \[\leadsto \sqrt{x} \cdot \left(\frac{\frac{1}{3}}{x} + \left(3 \cdot y - \color{blue}{3}\right)\right) \]
    3. Step-by-step derivation
      1. Applied rewrites99.5%

        \[\leadsto \sqrt{x} \cdot \left(\frac{0.3333333333333333}{x} + \mathsf{fma}\left(3, \color{blue}{y}, -3\right)\right) \]
      2. Final simplification99.5%

        \[\leadsto \left(\mathsf{fma}\left(3, y, -3\right) + \frac{0.3333333333333333}{x}\right) \cdot \sqrt{x} \]
      3. Add Preprocessing

      Alternative 2: 91.4% accurate, 0.3× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\ \mathbf{if}\;t\_1 \leq -2300000000000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+146}:\\ \;\;\;\;\sqrt{\frac{1}{x}} \cdot \mathsf{fma}\left(-3, x, 0.3333333333333333\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
      (FPCore (x y)
       :precision binary64
       (let* ((t_0 (* (fma 3.0 y -3.0) (sqrt x)))
              (t_1 (* (- (+ (/ 1.0 (* 9.0 x)) y) 1.0) (* (sqrt x) 3.0))))
         (if (<= t_1 -2300000000000.0)
           t_0
           (if (<= t_1 4e+146)
             (* (sqrt (/ 1.0 x)) (fma -3.0 x 0.3333333333333333))
             t_0))))
      double code(double x, double y) {
      	double t_0 = fma(3.0, y, -3.0) * sqrt(x);
      	double t_1 = (((1.0 / (9.0 * x)) + y) - 1.0) * (sqrt(x) * 3.0);
      	double tmp;
      	if (t_1 <= -2300000000000.0) {
      		tmp = t_0;
      	} else if (t_1 <= 4e+146) {
      		tmp = sqrt((1.0 / x)) * fma(-3.0, x, 0.3333333333333333);
      	} else {
      		tmp = t_0;
      	}
      	return tmp;
      }
      
      function code(x, y)
      	t_0 = Float64(fma(3.0, y, -3.0) * sqrt(x))
      	t_1 = Float64(Float64(Float64(Float64(1.0 / Float64(9.0 * x)) + y) - 1.0) * Float64(sqrt(x) * 3.0))
      	tmp = 0.0
      	if (t_1 <= -2300000000000.0)
      		tmp = t_0;
      	elseif (t_1 <= 4e+146)
      		tmp = Float64(sqrt(Float64(1.0 / x)) * fma(-3.0, x, 0.3333333333333333));
      	else
      		tmp = t_0;
      	end
      	return tmp
      end
      
      code[x_, y_] := Block[{t$95$0 = N[(N[(3.0 * y + -3.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(1.0 / N[(9.0 * x), $MachinePrecision]), $MachinePrecision] + y), $MachinePrecision] - 1.0), $MachinePrecision] * N[(N[Sqrt[x], $MachinePrecision] * 3.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -2300000000000.0], t$95$0, If[LessEqual[t$95$1, 4e+146], N[(N[Sqrt[N[(1.0 / x), $MachinePrecision]], $MachinePrecision] * N[(-3.0 * x + 0.3333333333333333), $MachinePrecision]), $MachinePrecision], t$95$0]]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\
      t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\
      \mathbf{if}\;t\_1 \leq -2300000000000:\\
      \;\;\;\;t\_0\\
      
      \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+146}:\\
      \;\;\;\;\sqrt{\frac{1}{x}} \cdot \mathsf{fma}\left(-3, x, 0.3333333333333333\right)\\
      
      \mathbf{else}:\\
      \;\;\;\;t\_0\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < -2.3e12 or 3.99999999999999973e146 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64)))

        1. Initial program 99.5%

          \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
        2. Add Preprocessing
        3. Taylor expanded in x around inf

          \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot \left(y - 1\right)\right)} \]
        4. Step-by-step derivation
          1. associate-*r*N/A

            \[\leadsto \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(y - 1\right)} \]
          2. *-commutativeN/A

            \[\leadsto \color{blue}{\left(y - 1\right) \cdot \left(3 \cdot \sqrt{x}\right)} \]
          3. associate-*r*N/A

            \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
          4. lower-*.f64N/A

            \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
          5. *-commutativeN/A

            \[\leadsto \color{blue}{\left(3 \cdot \left(y - 1\right)\right)} \cdot \sqrt{x} \]
          6. sub-negN/A

            \[\leadsto \left(3 \cdot \color{blue}{\left(y + \left(\mathsf{neg}\left(1\right)\right)\right)}\right) \cdot \sqrt{x} \]
          7. metadata-evalN/A

            \[\leadsto \left(3 \cdot \left(y + \color{blue}{-1}\right)\right) \cdot \sqrt{x} \]
          8. distribute-lft-inN/A

            \[\leadsto \color{blue}{\left(3 \cdot y + 3 \cdot -1\right)} \cdot \sqrt{x} \]
          9. metadata-evalN/A

            \[\leadsto \left(3 \cdot y + \color{blue}{-3}\right) \cdot \sqrt{x} \]
          10. lower-fma.f64N/A

            \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right)} \cdot \sqrt{x} \]
          11. lower-sqrt.f6497.3

            \[\leadsto \mathsf{fma}\left(3, y, -3\right) \cdot \color{blue}{\sqrt{x}} \]
        5. Applied rewrites97.3%

          \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}} \]

        if -2.3e12 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < 3.99999999999999973e146

        1. Initial program 99.3%

          \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
        2. Add Preprocessing
        3. Taylor expanded in y around 0

          \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot y\right) + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
        4. Step-by-step derivation
          1. *-commutativeN/A

            \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
          2. associate-*l*N/A

            \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3\right)} + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
          3. associate-*r*N/A

            \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)} \]
          4. *-commutativeN/A

            \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\left(\sqrt{x} \cdot 3\right)} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \]
          5. associate-*l*N/A

            \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\sqrt{x} \cdot \left(3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
          6. distribute-lft-outN/A

            \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
          7. lower-*.f64N/A

            \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
          8. lower-sqrt.f64N/A

            \[\leadsto \color{blue}{\sqrt{x}} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
          9. *-commutativeN/A

            \[\leadsto \sqrt{x} \cdot \left(y \cdot 3 + \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \cdot 3}\right) \]
          10. distribute-rgt-inN/A

            \[\leadsto \sqrt{x} \cdot \color{blue}{\left(3 \cdot \left(y + \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)\right)} \]
          11. associate-+r-N/A

            \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\left(y + \frac{1}{9} \cdot \frac{1}{x}\right) - 1\right)}\right) \]
          12. +-commutativeN/A

            \[\leadsto \sqrt{x} \cdot \left(3 \cdot \left(\color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + y\right)} - 1\right)\right) \]
          13. associate-+r-N/A

            \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + \left(y - 1\right)\right)}\right) \]
          14. +-commutativeN/A

            \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\left(y - 1\right) + \frac{1}{9} \cdot \frac{1}{x}\right)}\right) \]
          15. distribute-rgt-inN/A

            \[\leadsto \sqrt{x} \cdot \color{blue}{\left(\left(y - 1\right) \cdot 3 + \left(\frac{1}{9} \cdot \frac{1}{x}\right) \cdot 3\right)} \]
        5. Applied rewrites99.4%

          \[\leadsto \color{blue}{\sqrt{x} \cdot \mathsf{fma}\left(1 - y, -3, \frac{0.3333333333333333}{x}\right)} \]
        6. Step-by-step derivation
          1. Applied rewrites99.4%

            \[\leadsto \sqrt{x} \cdot \left(\frac{0.3333333333333333}{x} + \color{blue}{-3 \cdot \left(1 - y\right)}\right) \]
          2. Applied rewrites89.5%

            \[\leadsto \frac{\mathsf{fma}\left(-9 \cdot \left(1 - y \cdot y\right), x, y + 1\right) \cdot \sqrt{x}}{\color{blue}{\mathsf{fma}\left(3, y, 3\right) \cdot x}} \]
          3. Taylor expanded in y around 0

            \[\leadsto \frac{1}{3} \cdot \color{blue}{\left(\sqrt{\frac{1}{x}} \cdot \left(1 + -9 \cdot x\right)\right)} \]
          4. Step-by-step derivation
            1. Applied rewrites90.6%

              \[\leadsto \mathsf{fma}\left(-3, x, 0.3333333333333333\right) \cdot \color{blue}{\sqrt{\frac{1}{x}}} \]
          5. Recombined 2 regimes into one program.
          6. Final simplification94.5%

            \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq -2300000000000:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \mathbf{elif}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq 4 \cdot 10^{+146}:\\ \;\;\;\;\sqrt{\frac{1}{x}} \cdot \mathsf{fma}\left(-3, x, 0.3333333333333333\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \end{array} \]
          7. Add Preprocessing

          Alternative 3: 91.1% accurate, 0.3× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\ \mathbf{if}\;t\_1 \leq -1 \cdot 10^{+34}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+146}:\\ \;\;\;\;\left(-3 + \frac{0.3333333333333333}{x}\right) \cdot \sqrt{x}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (x y)
           :precision binary64
           (let* ((t_0 (* (fma 3.0 y -3.0) (sqrt x)))
                  (t_1 (* (- (+ (/ 1.0 (* 9.0 x)) y) 1.0) (* (sqrt x) 3.0))))
             (if (<= t_1 -1e+34)
               t_0
               (if (<= t_1 4e+146) (* (+ -3.0 (/ 0.3333333333333333 x)) (sqrt x)) t_0))))
          double code(double x, double y) {
          	double t_0 = fma(3.0, y, -3.0) * sqrt(x);
          	double t_1 = (((1.0 / (9.0 * x)) + y) - 1.0) * (sqrt(x) * 3.0);
          	double tmp;
          	if (t_1 <= -1e+34) {
          		tmp = t_0;
          	} else if (t_1 <= 4e+146) {
          		tmp = (-3.0 + (0.3333333333333333 / x)) * sqrt(x);
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(x, y)
          	t_0 = Float64(fma(3.0, y, -3.0) * sqrt(x))
          	t_1 = Float64(Float64(Float64(Float64(1.0 / Float64(9.0 * x)) + y) - 1.0) * Float64(sqrt(x) * 3.0))
          	tmp = 0.0
          	if (t_1 <= -1e+34)
          		tmp = t_0;
          	elseif (t_1 <= 4e+146)
          		tmp = Float64(Float64(-3.0 + Float64(0.3333333333333333 / x)) * sqrt(x));
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[x_, y_] := Block[{t$95$0 = N[(N[(3.0 * y + -3.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(1.0 / N[(9.0 * x), $MachinePrecision]), $MachinePrecision] + y), $MachinePrecision] - 1.0), $MachinePrecision] * N[(N[Sqrt[x], $MachinePrecision] * 3.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1e+34], t$95$0, If[LessEqual[t$95$1, 4e+146], N[(N[(-3.0 + N[(0.3333333333333333 / x), $MachinePrecision]), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision], t$95$0]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\
          t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\
          \mathbf{if}\;t\_1 \leq -1 \cdot 10^{+34}:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;t\_1 \leq 4 \cdot 10^{+146}:\\
          \;\;\;\;\left(-3 + \frac{0.3333333333333333}{x}\right) \cdot \sqrt{x}\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < -9.99999999999999946e33 or 3.99999999999999973e146 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64)))

            1. Initial program 99.5%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in x around inf

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot \left(y - 1\right)\right)} \]
            4. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(y - 1\right)} \]
              2. *-commutativeN/A

                \[\leadsto \color{blue}{\left(y - 1\right) \cdot \left(3 \cdot \sqrt{x}\right)} \]
              3. associate-*r*N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              4. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              5. *-commutativeN/A

                \[\leadsto \color{blue}{\left(3 \cdot \left(y - 1\right)\right)} \cdot \sqrt{x} \]
              6. sub-negN/A

                \[\leadsto \left(3 \cdot \color{blue}{\left(y + \left(\mathsf{neg}\left(1\right)\right)\right)}\right) \cdot \sqrt{x} \]
              7. metadata-evalN/A

                \[\leadsto \left(3 \cdot \left(y + \color{blue}{-1}\right)\right) \cdot \sqrt{x} \]
              8. distribute-lft-inN/A

                \[\leadsto \color{blue}{\left(3 \cdot y + 3 \cdot -1\right)} \cdot \sqrt{x} \]
              9. metadata-evalN/A

                \[\leadsto \left(3 \cdot y + \color{blue}{-3}\right) \cdot \sqrt{x} \]
              10. lower-fma.f64N/A

                \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right)} \cdot \sqrt{x} \]
              11. lower-sqrt.f6497.2

                \[\leadsto \mathsf{fma}\left(3, y, -3\right) \cdot \color{blue}{\sqrt{x}} \]
            5. Applied rewrites97.2%

              \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}} \]

            if -9.99999999999999946e33 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < 3.99999999999999973e146

            1. Initial program 99.3%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in y around 0

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto 3 \cdot \color{blue}{\left(\left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \cdot \sqrt{x}\right)} \]
              2. associate-*r*N/A

                \[\leadsto \color{blue}{\left(3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \cdot \sqrt{x}} \]
              3. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \cdot \sqrt{x}} \]
              4. sub-negN/A

                \[\leadsto \left(3 \cdot \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + \left(\mathsf{neg}\left(1\right)\right)\right)}\right) \cdot \sqrt{x} \]
              5. metadata-evalN/A

                \[\leadsto \left(3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} + \color{blue}{-1}\right)\right) \cdot \sqrt{x} \]
              6. distribute-rgt-inN/A

                \[\leadsto \color{blue}{\left(\left(\frac{1}{9} \cdot \frac{1}{x}\right) \cdot 3 + -1 \cdot 3\right)} \cdot \sqrt{x} \]
              7. metadata-evalN/A

                \[\leadsto \left(\left(\frac{1}{9} \cdot \frac{1}{x}\right) \cdot 3 + \color{blue}{-3}\right) \cdot \sqrt{x} \]
              8. lower-+.f64N/A

                \[\leadsto \color{blue}{\left(\left(\frac{1}{9} \cdot \frac{1}{x}\right) \cdot 3 + -3\right)} \cdot \sqrt{x} \]
              9. associate-*r/N/A

                \[\leadsto \left(\color{blue}{\frac{\frac{1}{9} \cdot 1}{x}} \cdot 3 + -3\right) \cdot \sqrt{x} \]
              10. metadata-evalN/A

                \[\leadsto \left(\frac{\color{blue}{\frac{1}{9}}}{x} \cdot 3 + -3\right) \cdot \sqrt{x} \]
              11. associate-*l/N/A

                \[\leadsto \left(\color{blue}{\frac{\frac{1}{9} \cdot 3}{x}} + -3\right) \cdot \sqrt{x} \]
              12. metadata-evalN/A

                \[\leadsto \left(\frac{\color{blue}{\frac{1}{3}}}{x} + -3\right) \cdot \sqrt{x} \]
              13. lower-/.f64N/A

                \[\leadsto \left(\color{blue}{\frac{\frac{1}{3}}{x}} + -3\right) \cdot \sqrt{x} \]
              14. lower-sqrt.f6491.1

                \[\leadsto \left(\frac{0.3333333333333333}{x} + -3\right) \cdot \color{blue}{\sqrt{x}} \]
            5. Applied rewrites91.1%

              \[\leadsto \color{blue}{\left(\frac{0.3333333333333333}{x} + -3\right) \cdot \sqrt{x}} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification94.5%

            \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq -1 \cdot 10^{+34}:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \mathbf{elif}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq 4 \cdot 10^{+146}:\\ \;\;\;\;\left(-3 + \frac{0.3333333333333333}{x}\right) \cdot \sqrt{x}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \end{array} \]
          5. Add Preprocessing

          Alternative 4: 91.1% accurate, 0.3× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\ \mathbf{if}\;t\_1 \leq -1000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+151}:\\ \;\;\;\;\sqrt{\frac{1}{x}} \cdot 0.3333333333333333\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (x y)
           :precision binary64
           (let* ((t_0 (* (fma 3.0 y -3.0) (sqrt x)))
                  (t_1 (* (- (+ (/ 1.0 (* 9.0 x)) y) 1.0) (* (sqrt x) 3.0))))
             (if (<= t_1 -1000.0)
               t_0
               (if (<= t_1 2e+151) (* (sqrt (/ 1.0 x)) 0.3333333333333333) t_0))))
          double code(double x, double y) {
          	double t_0 = fma(3.0, y, -3.0) * sqrt(x);
          	double t_1 = (((1.0 / (9.0 * x)) + y) - 1.0) * (sqrt(x) * 3.0);
          	double tmp;
          	if (t_1 <= -1000.0) {
          		tmp = t_0;
          	} else if (t_1 <= 2e+151) {
          		tmp = sqrt((1.0 / x)) * 0.3333333333333333;
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(x, y)
          	t_0 = Float64(fma(3.0, y, -3.0) * sqrt(x))
          	t_1 = Float64(Float64(Float64(Float64(1.0 / Float64(9.0 * x)) + y) - 1.0) * Float64(sqrt(x) * 3.0))
          	tmp = 0.0
          	if (t_1 <= -1000.0)
          		tmp = t_0;
          	elseif (t_1 <= 2e+151)
          		tmp = Float64(sqrt(Float64(1.0 / x)) * 0.3333333333333333);
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[x_, y_] := Block[{t$95$0 = N[(N[(3.0 * y + -3.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(1.0 / N[(9.0 * x), $MachinePrecision]), $MachinePrecision] + y), $MachinePrecision] - 1.0), $MachinePrecision] * N[(N[Sqrt[x], $MachinePrecision] * 3.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1000.0], t$95$0, If[LessEqual[t$95$1, 2e+151], N[(N[Sqrt[N[(1.0 / x), $MachinePrecision]], $MachinePrecision] * 0.3333333333333333), $MachinePrecision], t$95$0]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\
          t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\
          \mathbf{if}\;t\_1 \leq -1000:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+151}:\\
          \;\;\;\;\sqrt{\frac{1}{x}} \cdot 0.3333333333333333\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < -1e3 or 2.00000000000000003e151 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64)))

            1. Initial program 99.5%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in x around inf

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot \left(y - 1\right)\right)} \]
            4. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(y - 1\right)} \]
              2. *-commutativeN/A

                \[\leadsto \color{blue}{\left(y - 1\right) \cdot \left(3 \cdot \sqrt{x}\right)} \]
              3. associate-*r*N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              4. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              5. *-commutativeN/A

                \[\leadsto \color{blue}{\left(3 \cdot \left(y - 1\right)\right)} \cdot \sqrt{x} \]
              6. sub-negN/A

                \[\leadsto \left(3 \cdot \color{blue}{\left(y + \left(\mathsf{neg}\left(1\right)\right)\right)}\right) \cdot \sqrt{x} \]
              7. metadata-evalN/A

                \[\leadsto \left(3 \cdot \left(y + \color{blue}{-1}\right)\right) \cdot \sqrt{x} \]
              8. distribute-lft-inN/A

                \[\leadsto \color{blue}{\left(3 \cdot y + 3 \cdot -1\right)} \cdot \sqrt{x} \]
              9. metadata-evalN/A

                \[\leadsto \left(3 \cdot y + \color{blue}{-3}\right) \cdot \sqrt{x} \]
              10. lower-fma.f64N/A

                \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right)} \cdot \sqrt{x} \]
              11. lower-sqrt.f6498.2

                \[\leadsto \mathsf{fma}\left(3, y, -3\right) \cdot \color{blue}{\sqrt{x}} \]
            5. Applied rewrites98.2%

              \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}} \]

            if -1e3 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < 2.00000000000000003e151

            1. Initial program 99.3%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in x around 0

              \[\leadsto \color{blue}{\frac{1}{3} \cdot \sqrt{\frac{1}{x}}} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\sqrt{\frac{1}{x}} \cdot \frac{1}{3}} \]
              2. lower-*.f64N/A

                \[\leadsto \color{blue}{\sqrt{\frac{1}{x}} \cdot \frac{1}{3}} \]
              3. lower-sqrt.f64N/A

                \[\leadsto \color{blue}{\sqrt{\frac{1}{x}}} \cdot \frac{1}{3} \]
              4. lower-/.f6487.3

                \[\leadsto \sqrt{\color{blue}{\frac{1}{x}}} \cdot 0.3333333333333333 \]
            5. Applied rewrites87.3%

              \[\leadsto \color{blue}{\sqrt{\frac{1}{x}} \cdot 0.3333333333333333} \]
          3. Recombined 2 regimes into one program.
          4. Final simplification93.6%

            \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq -1000:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \mathbf{elif}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq 2 \cdot 10^{+151}:\\ \;\;\;\;\sqrt{\frac{1}{x}} \cdot 0.3333333333333333\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \end{array} \]
          5. Add Preprocessing

          Alternative 5: 91.1% accurate, 0.3× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\ \mathbf{if}\;t\_1 \leq -1000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+151}:\\ \;\;\;\;\frac{0.3333333333333333}{x} \cdot \sqrt{x}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (x y)
           :precision binary64
           (let* ((t_0 (* (fma 3.0 y -3.0) (sqrt x)))
                  (t_1 (* (- (+ (/ 1.0 (* 9.0 x)) y) 1.0) (* (sqrt x) 3.0))))
             (if (<= t_1 -1000.0)
               t_0
               (if (<= t_1 2e+151) (* (/ 0.3333333333333333 x) (sqrt x)) t_0))))
          double code(double x, double y) {
          	double t_0 = fma(3.0, y, -3.0) * sqrt(x);
          	double t_1 = (((1.0 / (9.0 * x)) + y) - 1.0) * (sqrt(x) * 3.0);
          	double tmp;
          	if (t_1 <= -1000.0) {
          		tmp = t_0;
          	} else if (t_1 <= 2e+151) {
          		tmp = (0.3333333333333333 / x) * sqrt(x);
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(x, y)
          	t_0 = Float64(fma(3.0, y, -3.0) * sqrt(x))
          	t_1 = Float64(Float64(Float64(Float64(1.0 / Float64(9.0 * x)) + y) - 1.0) * Float64(sqrt(x) * 3.0))
          	tmp = 0.0
          	if (t_1 <= -1000.0)
          		tmp = t_0;
          	elseif (t_1 <= 2e+151)
          		tmp = Float64(Float64(0.3333333333333333 / x) * sqrt(x));
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[x_, y_] := Block[{t$95$0 = N[(N[(3.0 * y + -3.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(N[(1.0 / N[(9.0 * x), $MachinePrecision]), $MachinePrecision] + y), $MachinePrecision] - 1.0), $MachinePrecision] * N[(N[Sqrt[x], $MachinePrecision] * 3.0), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$1, -1000.0], t$95$0, If[LessEqual[t$95$1, 2e+151], N[(N[(0.3333333333333333 / x), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision], t$95$0]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\
          t_1 := \left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right)\\
          \mathbf{if}\;t\_1 \leq -1000:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;t\_1 \leq 2 \cdot 10^{+151}:\\
          \;\;\;\;\frac{0.3333333333333333}{x} \cdot \sqrt{x}\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < -1e3 or 2.00000000000000003e151 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64)))

            1. Initial program 99.5%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in x around inf

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot \left(y - 1\right)\right)} \]
            4. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(y - 1\right)} \]
              2. *-commutativeN/A

                \[\leadsto \color{blue}{\left(y - 1\right) \cdot \left(3 \cdot \sqrt{x}\right)} \]
              3. associate-*r*N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              4. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              5. *-commutativeN/A

                \[\leadsto \color{blue}{\left(3 \cdot \left(y - 1\right)\right)} \cdot \sqrt{x} \]
              6. sub-negN/A

                \[\leadsto \left(3 \cdot \color{blue}{\left(y + \left(\mathsf{neg}\left(1\right)\right)\right)}\right) \cdot \sqrt{x} \]
              7. metadata-evalN/A

                \[\leadsto \left(3 \cdot \left(y + \color{blue}{-1}\right)\right) \cdot \sqrt{x} \]
              8. distribute-lft-inN/A

                \[\leadsto \color{blue}{\left(3 \cdot y + 3 \cdot -1\right)} \cdot \sqrt{x} \]
              9. metadata-evalN/A

                \[\leadsto \left(3 \cdot y + \color{blue}{-3}\right) \cdot \sqrt{x} \]
              10. lower-fma.f64N/A

                \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right)} \cdot \sqrt{x} \]
              11. lower-sqrt.f6498.2

                \[\leadsto \mathsf{fma}\left(3, y, -3\right) \cdot \color{blue}{\sqrt{x}} \]
            5. Applied rewrites98.2%

              \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}} \]

            if -1e3 < (*.f64 (*.f64 #s(literal 3 binary64) (sqrt.f64 x)) (-.f64 (+.f64 y (/.f64 #s(literal 1 binary64) (*.f64 x #s(literal 9 binary64)))) #s(literal 1 binary64))) < 2.00000000000000003e151

            1. Initial program 99.3%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in y around 0

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot y\right) + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
              2. associate-*l*N/A

                \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3\right)} + 3 \cdot \left(\sqrt{x} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
              3. associate-*r*N/A

                \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)} \]
              4. *-commutativeN/A

                \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\left(\sqrt{x} \cdot 3\right)} \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \]
              5. associate-*l*N/A

                \[\leadsto \sqrt{x} \cdot \left(y \cdot 3\right) + \color{blue}{\sqrt{x} \cdot \left(3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
              6. distribute-lft-outN/A

                \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
              7. lower-*.f64N/A

                \[\leadsto \color{blue}{\sqrt{x} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)} \]
              8. lower-sqrt.f64N/A

                \[\leadsto \color{blue}{\sqrt{x}} \cdot \left(y \cdot 3 + 3 \cdot \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right) \]
              9. *-commutativeN/A

                \[\leadsto \sqrt{x} \cdot \left(y \cdot 3 + \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} - 1\right) \cdot 3}\right) \]
              10. distribute-rgt-inN/A

                \[\leadsto \sqrt{x} \cdot \color{blue}{\left(3 \cdot \left(y + \left(\frac{1}{9} \cdot \frac{1}{x} - 1\right)\right)\right)} \]
              11. associate-+r-N/A

                \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\left(y + \frac{1}{9} \cdot \frac{1}{x}\right) - 1\right)}\right) \]
              12. +-commutativeN/A

                \[\leadsto \sqrt{x} \cdot \left(3 \cdot \left(\color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + y\right)} - 1\right)\right) \]
              13. associate-+r-N/A

                \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\frac{1}{9} \cdot \frac{1}{x} + \left(y - 1\right)\right)}\right) \]
              14. +-commutativeN/A

                \[\leadsto \sqrt{x} \cdot \left(3 \cdot \color{blue}{\left(\left(y - 1\right) + \frac{1}{9} \cdot \frac{1}{x}\right)}\right) \]
              15. distribute-rgt-inN/A

                \[\leadsto \sqrt{x} \cdot \color{blue}{\left(\left(y - 1\right) \cdot 3 + \left(\frac{1}{9} \cdot \frac{1}{x}\right) \cdot 3\right)} \]
            5. Applied rewrites99.4%

              \[\leadsto \color{blue}{\sqrt{x} \cdot \mathsf{fma}\left(1 - y, -3, \frac{0.3333333333333333}{x}\right)} \]
            6. Taylor expanded in x around 0

              \[\leadsto \sqrt{x} \cdot \frac{\frac{1}{3}}{\color{blue}{x}} \]
            7. Step-by-step derivation
              1. Applied rewrites87.2%

                \[\leadsto \sqrt{x} \cdot \frac{0.3333333333333333}{\color{blue}{x}} \]
            8. Recombined 2 regimes into one program.
            9. Final simplification93.6%

              \[\leadsto \begin{array}{l} \mathbf{if}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq -1000:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \mathbf{elif}\;\left(\left(\frac{1}{9 \cdot x} + y\right) - 1\right) \cdot \left(\sqrt{x} \cdot 3\right) \leq 2 \cdot 10^{+151}:\\ \;\;\;\;\frac{0.3333333333333333}{x} \cdot \sqrt{x}\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}\\ \end{array} \]
            10. Add Preprocessing

            Alternative 6: 63.1% accurate, 2.0× speedup?

            \[\begin{array}{l} \\ \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x} \end{array} \]
            (FPCore (x y) :precision binary64 (* (fma 3.0 y -3.0) (sqrt x)))
            double code(double x, double y) {
            	return fma(3.0, y, -3.0) * sqrt(x);
            }
            
            function code(x, y)
            	return Float64(fma(3.0, y, -3.0) * sqrt(x))
            end
            
            code[x_, y_] := N[(N[(3.0 * y + -3.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}
            \end{array}
            
            Derivation
            1. Initial program 99.4%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in x around inf

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot \left(y - 1\right)\right)} \]
            4. Step-by-step derivation
              1. associate-*r*N/A

                \[\leadsto \color{blue}{\left(3 \cdot \sqrt{x}\right) \cdot \left(y - 1\right)} \]
              2. *-commutativeN/A

                \[\leadsto \color{blue}{\left(y - 1\right) \cdot \left(3 \cdot \sqrt{x}\right)} \]
              3. associate-*r*N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              4. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\left(y - 1\right) \cdot 3\right) \cdot \sqrt{x}} \]
              5. *-commutativeN/A

                \[\leadsto \color{blue}{\left(3 \cdot \left(y - 1\right)\right)} \cdot \sqrt{x} \]
              6. sub-negN/A

                \[\leadsto \left(3 \cdot \color{blue}{\left(y + \left(\mathsf{neg}\left(1\right)\right)\right)}\right) \cdot \sqrt{x} \]
              7. metadata-evalN/A

                \[\leadsto \left(3 \cdot \left(y + \color{blue}{-1}\right)\right) \cdot \sqrt{x} \]
              8. distribute-lft-inN/A

                \[\leadsto \color{blue}{\left(3 \cdot y + 3 \cdot -1\right)} \cdot \sqrt{x} \]
              9. metadata-evalN/A

                \[\leadsto \left(3 \cdot y + \color{blue}{-3}\right) \cdot \sqrt{x} \]
              10. lower-fma.f64N/A

                \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right)} \cdot \sqrt{x} \]
              11. lower-sqrt.f6462.0

                \[\leadsto \mathsf{fma}\left(3, y, -3\right) \cdot \color{blue}{\sqrt{x}} \]
            5. Applied rewrites62.0%

              \[\leadsto \color{blue}{\mathsf{fma}\left(3, y, -3\right) \cdot \sqrt{x}} \]
            6. Add Preprocessing

            Alternative 7: 39.1% accurate, 2.0× speedup?

            \[\begin{array}{l} \\ \left(\sqrt{x} \cdot y\right) \cdot 3 \end{array} \]
            (FPCore (x y) :precision binary64 (* (* (sqrt x) y) 3.0))
            double code(double x, double y) {
            	return (sqrt(x) * y) * 3.0;
            }
            
            real(8) function code(x, y)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                code = (sqrt(x) * y) * 3.0d0
            end function
            
            public static double code(double x, double y) {
            	return (Math.sqrt(x) * y) * 3.0;
            }
            
            def code(x, y):
            	return (math.sqrt(x) * y) * 3.0
            
            function code(x, y)
            	return Float64(Float64(sqrt(x) * y) * 3.0)
            end
            
            function tmp = code(x, y)
            	tmp = (sqrt(x) * y) * 3.0;
            end
            
            code[x_, y_] := N[(N[(N[Sqrt[x], $MachinePrecision] * y), $MachinePrecision] * 3.0), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \left(\sqrt{x} \cdot y\right) \cdot 3
            \end{array}
            
            Derivation
            1. Initial program 99.4%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in y around inf

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot y\right)} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
              2. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
              3. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right)} \cdot 3 \]
              4. lower-sqrt.f6440.3

                \[\leadsto \left(\color{blue}{\sqrt{x}} \cdot y\right) \cdot 3 \]
            5. Applied rewrites40.3%

              \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
            6. Add Preprocessing

            Alternative 8: 39.1% accurate, 2.0× speedup?

            \[\begin{array}{l} \\ \left(\sqrt{x} \cdot 3\right) \cdot y \end{array} \]
            (FPCore (x y) :precision binary64 (* (* (sqrt x) 3.0) y))
            double code(double x, double y) {
            	return (sqrt(x) * 3.0) * y;
            }
            
            real(8) function code(x, y)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                code = (sqrt(x) * 3.0d0) * y
            end function
            
            public static double code(double x, double y) {
            	return (Math.sqrt(x) * 3.0) * y;
            }
            
            def code(x, y):
            	return (math.sqrt(x) * 3.0) * y
            
            function code(x, y)
            	return Float64(Float64(sqrt(x) * 3.0) * y)
            end
            
            function tmp = code(x, y)
            	tmp = (sqrt(x) * 3.0) * y;
            end
            
            code[x_, y_] := N[(N[(N[Sqrt[x], $MachinePrecision] * 3.0), $MachinePrecision] * y), $MachinePrecision]
            
            \begin{array}{l}
            
            \\
            \left(\sqrt{x} \cdot 3\right) \cdot y
            \end{array}
            
            Derivation
            1. Initial program 99.4%

              \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
            2. Add Preprocessing
            3. Taylor expanded in y around inf

              \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot y\right)} \]
            4. Step-by-step derivation
              1. *-commutativeN/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
              2. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
              3. lower-*.f64N/A

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right)} \cdot 3 \]
              4. lower-sqrt.f6440.3

                \[\leadsto \left(\color{blue}{\sqrt{x}} \cdot y\right) \cdot 3 \]
            5. Applied rewrites40.3%

              \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
            6. Step-by-step derivation
              1. Applied rewrites40.3%

                \[\leadsto \left(\sqrt{x} \cdot 3\right) \cdot \color{blue}{y} \]
              2. Add Preprocessing

              Alternative 9: 39.0% accurate, 2.0× speedup?

              \[\begin{array}{l} \\ \left(y \cdot 3\right) \cdot \sqrt{x} \end{array} \]
              (FPCore (x y) :precision binary64 (* (* y 3.0) (sqrt x)))
              double code(double x, double y) {
              	return (y * 3.0) * sqrt(x);
              }
              
              real(8) function code(x, y)
                  real(8), intent (in) :: x
                  real(8), intent (in) :: y
                  code = (y * 3.0d0) * sqrt(x)
              end function
              
              public static double code(double x, double y) {
              	return (y * 3.0) * Math.sqrt(x);
              }
              
              def code(x, y):
              	return (y * 3.0) * math.sqrt(x)
              
              function code(x, y)
              	return Float64(Float64(y * 3.0) * sqrt(x))
              end
              
              function tmp = code(x, y)
              	tmp = (y * 3.0) * sqrt(x);
              end
              
              code[x_, y_] := N[(N[(y * 3.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]
              
              \begin{array}{l}
              
              \\
              \left(y \cdot 3\right) \cdot \sqrt{x}
              \end{array}
              
              Derivation
              1. Initial program 99.4%

                \[\left(3 \cdot \sqrt{x}\right) \cdot \left(\left(y + \frac{1}{x \cdot 9}\right) - 1\right) \]
              2. Add Preprocessing
              3. Taylor expanded in y around inf

                \[\leadsto \color{blue}{3 \cdot \left(\sqrt{x} \cdot y\right)} \]
              4. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
                2. lower-*.f64N/A

                  \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
                3. lower-*.f64N/A

                  \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right)} \cdot 3 \]
                4. lower-sqrt.f6440.3

                  \[\leadsto \left(\color{blue}{\sqrt{x}} \cdot y\right) \cdot 3 \]
              5. Applied rewrites40.3%

                \[\leadsto \color{blue}{\left(\sqrt{x} \cdot y\right) \cdot 3} \]
              6. Step-by-step derivation
                1. Applied rewrites40.3%

                  \[\leadsto \left(y \cdot 3\right) \cdot \color{blue}{\sqrt{x}} \]
                2. Add Preprocessing

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

                \[\begin{array}{l} \\ 3 \cdot \left(y \cdot \sqrt{x} + \left(\frac{1}{x \cdot 9} - 1\right) \cdot \sqrt{x}\right) \end{array} \]
                (FPCore (x y)
                 :precision binary64
                 (* 3.0 (+ (* y (sqrt x)) (* (- (/ 1.0 (* x 9.0)) 1.0) (sqrt x)))))
                double code(double x, double y) {
                	return 3.0 * ((y * sqrt(x)) + (((1.0 / (x * 9.0)) - 1.0) * sqrt(x)));
                }
                
                real(8) function code(x, y)
                    real(8), intent (in) :: x
                    real(8), intent (in) :: y
                    code = 3.0d0 * ((y * sqrt(x)) + (((1.0d0 / (x * 9.0d0)) - 1.0d0) * sqrt(x)))
                end function
                
                public static double code(double x, double y) {
                	return 3.0 * ((y * Math.sqrt(x)) + (((1.0 / (x * 9.0)) - 1.0) * Math.sqrt(x)));
                }
                
                def code(x, y):
                	return 3.0 * ((y * math.sqrt(x)) + (((1.0 / (x * 9.0)) - 1.0) * math.sqrt(x)))
                
                function code(x, y)
                	return Float64(3.0 * Float64(Float64(y * sqrt(x)) + Float64(Float64(Float64(1.0 / Float64(x * 9.0)) - 1.0) * sqrt(x))))
                end
                
                function tmp = code(x, y)
                	tmp = 3.0 * ((y * sqrt(x)) + (((1.0 / (x * 9.0)) - 1.0) * sqrt(x)));
                end
                
                code[x_, y_] := N[(3.0 * N[(N[(y * N[Sqrt[x], $MachinePrecision]), $MachinePrecision] + N[(N[(N[(1.0 / N[(x * 9.0), $MachinePrecision]), $MachinePrecision] - 1.0), $MachinePrecision] * N[Sqrt[x], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
                
                \begin{array}{l}
                
                \\
                3 \cdot \left(y \cdot \sqrt{x} + \left(\frac{1}{x \cdot 9} - 1\right) \cdot \sqrt{x}\right)
                \end{array}
                

                Reproduce

                ?
                herbie shell --seed 2024332 
                (FPCore (x y)
                  :name "Numeric.SpecFunctions:incompleteGamma from math-functions-0.1.5.2, B"
                  :precision binary64
                
                  :alt
                  (! :herbie-platform default (* 3 (+ (* y (sqrt x)) (* (- (/ 1 (* x 9)) 1) (sqrt x)))))
                
                  (* (* 3.0 (sqrt x)) (- (+ y (/ 1.0 (* x 9.0))) 1.0)))