Diagrams.Trail:splitAtParam from diagrams-lib-1.3.0.3, D

Percentage Accurate: 66.0% → 99.9%
Time: 10.5s
Alternatives: 16
Speedup: 1.2×

Specification

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

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

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

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

Alternative 1: 99.9% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{x + -1}{y}\\ \mathbf{if}\;y \leq -130000:\\ \;\;\;\;x + \mathsf{fma}\left(\frac{1}{y}, \left(1 + \left(t\_0 - x\right)\right) - \frac{x}{y \cdot y}, \frac{1}{y \cdot \left(y \cdot y\right)}\right)\\ \mathbf{elif}\;y \leq 15000:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{1 - \mathsf{fma}\left(t\_0, \frac{1}{y} + -1, x\right)}{y}\\ \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (/ (+ x -1.0) y)))
   (if (<= y -130000.0)
     (+
      x
      (fma
       (/ 1.0 y)
       (- (+ 1.0 (- t_0 x)) (/ x (* y y)))
       (/ 1.0 (* y (* y y)))))
     (if (<= y 15000.0)
       (fma (/ y (- -1.0 y)) (- 1.0 x) 1.0)
       (+ x (/ (- 1.0 (fma t_0 (+ (/ 1.0 y) -1.0) x)) y))))))
double code(double x, double y) {
	double t_0 = (x + -1.0) / y;
	double tmp;
	if (y <= -130000.0) {
		tmp = x + fma((1.0 / y), ((1.0 + (t_0 - x)) - (x / (y * y))), (1.0 / (y * (y * y))));
	} else if (y <= 15000.0) {
		tmp = fma((y / (-1.0 - y)), (1.0 - x), 1.0);
	} else {
		tmp = x + ((1.0 - fma(t_0, ((1.0 / y) + -1.0), x)) / y);
	}
	return tmp;
}
function code(x, y)
	t_0 = Float64(Float64(x + -1.0) / y)
	tmp = 0.0
	if (y <= -130000.0)
		tmp = Float64(x + fma(Float64(1.0 / y), Float64(Float64(1.0 + Float64(t_0 - x)) - Float64(x / Float64(y * y))), Float64(1.0 / Float64(y * Float64(y * y)))));
	elseif (y <= 15000.0)
		tmp = fma(Float64(y / Float64(-1.0 - y)), Float64(1.0 - x), 1.0);
	else
		tmp = Float64(x + Float64(Float64(1.0 - fma(t_0, Float64(Float64(1.0 / y) + -1.0), x)) / y));
	end
	return tmp
end
code[x_, y_] := Block[{t$95$0 = N[(N[(x + -1.0), $MachinePrecision] / y), $MachinePrecision]}, If[LessEqual[y, -130000.0], N[(x + N[(N[(1.0 / y), $MachinePrecision] * N[(N[(1.0 + N[(t$95$0 - x), $MachinePrecision]), $MachinePrecision] - N[(x / N[(y * y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] + N[(1.0 / N[(y * N[(y * y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y, 15000.0], N[(N[(y / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision] * N[(1.0 - x), $MachinePrecision] + 1.0), $MachinePrecision], N[(x + N[(N[(1.0 - N[(t$95$0 * N[(N[(1.0 / y), $MachinePrecision] + -1.0), $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \frac{x + -1}{y}\\
\mathbf{if}\;y \leq -130000:\\
\;\;\;\;x + \mathsf{fma}\left(\frac{1}{y}, \left(1 + \left(t\_0 - x\right)\right) - \frac{x}{y \cdot y}, \frac{1}{y \cdot \left(y \cdot y\right)}\right)\\

\mathbf{elif}\;y \leq 15000:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\

\mathbf{else}:\\
\;\;\;\;x + \frac{1 - \mathsf{fma}\left(t\_0, \frac{1}{y} + -1, x\right)}{y}\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if y < -1.3e5

    1. Initial program 35.2%

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

      \[\leadsto \color{blue}{\left(x + \left(\frac{1}{y} + \frac{1}{{y}^{3}}\right)\right) - \left(-1 \cdot \frac{x}{{y}^{2}} + \left(\frac{1}{{y}^{2}} + \left(\frac{x}{y} + \frac{x}{{y}^{3}}\right)\right)\right)} \]
    4. Applied rewrites100.0%

      \[\leadsto \color{blue}{x + \mathsf{fma}\left(\frac{1}{y}, \left(1 + \left(\frac{x + -1}{y} - x\right)\right) - \frac{x}{y \cdot y}, \frac{1}{y \cdot \left(y \cdot y\right)}\right)} \]

    if -1.3e5 < y < 15000

    1. Initial program 99.9%

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
      2. lift-*.f64N/A

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

        \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
      4. lift-/.f64N/A

        \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      5. *-lft-identityN/A

        \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      6. cancel-sign-sub-invN/A

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

        \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
      8. neg-mul-1N/A

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

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
      10. lift-/.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
      11. lift-*.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
      12. associate-/l*N/A

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

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
      14. distribute-lft-neg-inN/A

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
      15. lower-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
    4. Applied rewrites100.0%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]

    if 15000 < y

    1. Initial program 30.1%

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

      \[\leadsto \color{blue}{x + -1 \cdot \frac{-1 \cdot \frac{-1 \cdot \frac{x - 1}{y} - -1 \cdot \left(x - 1\right)}{y} - -1 \cdot \left(x - 1\right)}{y}} \]
    4. Applied rewrites100.0%

      \[\leadsto \color{blue}{x + \frac{1 - \mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)}{y}} \]
  3. Recombined 3 regimes into one program.
  4. Add Preprocessing

Alternative 2: 99.5% accurate, 0.3× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{y \cdot \left(1 - x\right)}{y + 1}\\ t_1 := \mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \mathbf{if}\;t\_0 \leq 0.004:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;t\_0 \leq 1.02:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{y}, \frac{1}{y} + -1, x\right)\\ \mathbf{else}:\\ \;\;\;\;t\_1\\ \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (/ (* y (- 1.0 x)) (+ y 1.0)))
        (t_1 (fma (/ y (- -1.0 y)) (- 1.0 x) 1.0)))
   (if (<= t_0 0.004)
     t_1
     (if (<= t_0 1.02) (fma (/ -1.0 y) (+ (/ 1.0 y) -1.0) x) t_1))))
double code(double x, double y) {
	double t_0 = (y * (1.0 - x)) / (y + 1.0);
	double t_1 = fma((y / (-1.0 - y)), (1.0 - x), 1.0);
	double tmp;
	if (t_0 <= 0.004) {
		tmp = t_1;
	} else if (t_0 <= 1.02) {
		tmp = fma((-1.0 / y), ((1.0 / y) + -1.0), x);
	} else {
		tmp = t_1;
	}
	return tmp;
}
function code(x, y)
	t_0 = Float64(Float64(y * Float64(1.0 - x)) / Float64(y + 1.0))
	t_1 = fma(Float64(y / Float64(-1.0 - y)), Float64(1.0 - x), 1.0)
	tmp = 0.0
	if (t_0 <= 0.004)
		tmp = t_1;
	elseif (t_0 <= 1.02)
		tmp = fma(Float64(-1.0 / y), Float64(Float64(1.0 / y) + -1.0), x);
	else
		tmp = t_1;
	end
	return tmp
end
code[x_, y_] := Block[{t$95$0 = N[(N[(y * N[(1.0 - x), $MachinePrecision]), $MachinePrecision] / N[(y + 1.0), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(y / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision] * N[(1.0 - x), $MachinePrecision] + 1.0), $MachinePrecision]}, If[LessEqual[t$95$0, 0.004], t$95$1, If[LessEqual[t$95$0, 1.02], N[(N[(-1.0 / y), $MachinePrecision] * N[(N[(1.0 / y), $MachinePrecision] + -1.0), $MachinePrecision] + x), $MachinePrecision], t$95$1]]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \frac{y \cdot \left(1 - x\right)}{y + 1}\\
t_1 := \mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\
\mathbf{if}\;t\_0 \leq 0.004:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;t\_0 \leq 1.02:\\
\;\;\;\;\mathsf{fma}\left(\frac{-1}{y}, \frac{1}{y} + -1, x\right)\\

\mathbf{else}:\\
\;\;\;\;t\_1\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64))) < 0.0040000000000000001 or 1.02 < (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64)))

    1. Initial program 83.8%

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
      2. lift-*.f64N/A

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

        \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
      4. lift-/.f64N/A

        \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      5. *-lft-identityN/A

        \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      6. cancel-sign-sub-invN/A

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

        \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
      8. neg-mul-1N/A

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

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
      10. lift-/.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
      11. lift-*.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
      12. associate-/l*N/A

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

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
      14. distribute-lft-neg-inN/A

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
      15. lower-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
    4. Applied rewrites100.0%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]

    if 0.0040000000000000001 < (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64))) < 1.02

    1. Initial program 12.8%

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

      \[\leadsto \color{blue}{\left(x + \left(-1 \cdot \frac{1 + -1 \cdot x}{{y}^{2}} + \frac{1}{y}\right)\right) - \frac{x}{y}} \]
    4. Step-by-step derivation
      1. associate--l+N/A

        \[\leadsto \color{blue}{x + \left(\left(-1 \cdot \frac{1 + -1 \cdot x}{{y}^{2}} + \frac{1}{y}\right) - \frac{x}{y}\right)} \]
      2. +-commutativeN/A

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

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

      \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{-1}{y}}, \frac{1}{y} + -1, x\right) \]
    7. Step-by-step derivation
      1. lower-/.f6499.5

        \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{-1}{y}}, \frac{1}{y} + -1, x\right) \]
    8. Applied rewrites99.5%

      \[\leadsto \mathsf{fma}\left(\color{blue}{\frac{-1}{y}}, \frac{1}{y} + -1, x\right) \]
  3. Recombined 2 regimes into one program.
  4. Final simplification99.8%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{y \cdot \left(1 - x\right)}{y + 1} \leq 0.004:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \mathbf{elif}\;\frac{y \cdot \left(1 - x\right)}{y + 1} \leq 1.02:\\ \;\;\;\;\mathsf{fma}\left(\frac{-1}{y}, \frac{1}{y} + -1, x\right)\\ \mathbf{else}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 74.0% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := 1 + \frac{y \cdot \left(1 - x\right)}{-1 - y}\\ \mathbf{if}\;t\_0 \leq 0.005:\\ \;\;\;\;x\\ \mathbf{elif}\;t\_0 \leq 2:\\ \;\;\;\;1 - y\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (+ 1.0 (/ (* y (- 1.0 x)) (- -1.0 y)))))
   (if (<= t_0 0.005) x (if (<= t_0 2.0) (- 1.0 y) x))))
double code(double x, double y) {
	double t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y));
	double tmp;
	if (t_0 <= 0.005) {
		tmp = x;
	} else if (t_0 <= 2.0) {
		tmp = 1.0 - y;
	} else {
		tmp = x;
	}
	return tmp;
}
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8) :: t_0
    real(8) :: tmp
    t_0 = 1.0d0 + ((y * (1.0d0 - x)) / ((-1.0d0) - y))
    if (t_0 <= 0.005d0) then
        tmp = x
    else if (t_0 <= 2.0d0) then
        tmp = 1.0d0 - y
    else
        tmp = x
    end if
    code = tmp
end function
public static double code(double x, double y) {
	double t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y));
	double tmp;
	if (t_0 <= 0.005) {
		tmp = x;
	} else if (t_0 <= 2.0) {
		tmp = 1.0 - y;
	} else {
		tmp = x;
	}
	return tmp;
}
def code(x, y):
	t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y))
	tmp = 0
	if t_0 <= 0.005:
		tmp = x
	elif t_0 <= 2.0:
		tmp = 1.0 - y
	else:
		tmp = x
	return tmp
function code(x, y)
	t_0 = Float64(1.0 + Float64(Float64(y * Float64(1.0 - x)) / Float64(-1.0 - y)))
	tmp = 0.0
	if (t_0 <= 0.005)
		tmp = x;
	elseif (t_0 <= 2.0)
		tmp = Float64(1.0 - y);
	else
		tmp = x;
	end
	return tmp
end
function tmp_2 = code(x, y)
	t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y));
	tmp = 0.0;
	if (t_0 <= 0.005)
		tmp = x;
	elseif (t_0 <= 2.0)
		tmp = 1.0 - y;
	else
		tmp = x;
	end
	tmp_2 = tmp;
end
code[x_, y_] := Block[{t$95$0 = N[(1.0 + N[(N[(y * N[(1.0 - x), $MachinePrecision]), $MachinePrecision] / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, 0.005], x, If[LessEqual[t$95$0, 2.0], N[(1.0 - y), $MachinePrecision], x]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := 1 + \frac{y \cdot \left(1 - x\right)}{-1 - y}\\
\mathbf{if}\;t\_0 \leq 0.005:\\
\;\;\;\;x\\

\mathbf{elif}\;t\_0 \leq 2:\\
\;\;\;\;1 - y\\

\mathbf{else}:\\
\;\;\;\;x\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (-.f64 #s(literal 1 binary64) (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64)))) < 0.0050000000000000001 or 2 < (-.f64 #s(literal 1 binary64) (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64))))

    1. Initial program 47.1%

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
      2. lift-*.f64N/A

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

        \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
      4. lift-/.f64N/A

        \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      5. *-lft-identityN/A

        \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      6. cancel-sign-sub-invN/A

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

        \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
      8. neg-mul-1N/A

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

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
      10. lift-/.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
      11. lift-*.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
      12. associate-/l*N/A

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

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
      14. distribute-lft-neg-inN/A

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
      15. lower-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
    4. Applied rewrites64.8%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
    5. Taylor expanded in y around inf

      \[\leadsto \color{blue}{1 + -1 \cdot \left(1 - x\right)} \]
    6. Step-by-step derivation
      1. mul-1-negN/A

        \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(\left(1 - x\right)\right)\right)} \]
      2. unsub-negN/A

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

        \[\leadsto 1 - \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)} \]
      4. associate--r+N/A

        \[\leadsto \color{blue}{\left(1 - 1\right) - \left(\mathsf{neg}\left(x\right)\right)} \]
      5. metadata-evalN/A

        \[\leadsto \color{blue}{0} - \left(\mathsf{neg}\left(x\right)\right) \]
      6. neg-sub0N/A

        \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(x\right)\right)\right)} \]
      7. remove-double-neg59.1

        \[\leadsto \color{blue}{x} \]
    7. Applied rewrites59.1%

      \[\leadsto \color{blue}{x} \]

    if 0.0050000000000000001 < (-.f64 #s(literal 1 binary64) (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64)))) < 2

    1. Initial program 100.0%

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

      \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
    4. Step-by-step derivation
      1. lower-/.f64N/A

        \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
      2. lower-+.f6497.0

        \[\leadsto 1 - \frac{y}{\color{blue}{1 + y}} \]
    5. Applied rewrites97.0%

      \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
    6. Taylor expanded in y around 0

      \[\leadsto \color{blue}{1 + -1 \cdot y} \]
    7. Step-by-step derivation
      1. mul-1-negN/A

        \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(y\right)\right)} \]
      2. unsub-negN/A

        \[\leadsto \color{blue}{1 - y} \]
      3. lower--.f6495.4

        \[\leadsto \color{blue}{1 - y} \]
    8. Applied rewrites95.4%

      \[\leadsto \color{blue}{1 - y} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification71.1%

    \[\leadsto \begin{array}{l} \mathbf{if}\;1 + \frac{y \cdot \left(1 - x\right)}{-1 - y} \leq 0.005:\\ \;\;\;\;x\\ \mathbf{elif}\;1 + \frac{y \cdot \left(1 - x\right)}{-1 - y} \leq 2:\\ \;\;\;\;1 - y\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 99.9% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := x + \frac{1 - \mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)}{y}\\ \mathbf{if}\;y \leq -130000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y \leq 15000:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (+ x (/ (- 1.0 (fma (/ (+ x -1.0) y) (+ (/ 1.0 y) -1.0) x)) y))))
   (if (<= y -130000.0)
     t_0
     (if (<= y 15000.0) (fma (/ y (- -1.0 y)) (- 1.0 x) 1.0) t_0))))
double code(double x, double y) {
	double t_0 = x + ((1.0 - fma(((x + -1.0) / y), ((1.0 / y) + -1.0), x)) / y);
	double tmp;
	if (y <= -130000.0) {
		tmp = t_0;
	} else if (y <= 15000.0) {
		tmp = fma((y / (-1.0 - y)), (1.0 - x), 1.0);
	} else {
		tmp = t_0;
	}
	return tmp;
}
function code(x, y)
	t_0 = Float64(x + Float64(Float64(1.0 - fma(Float64(Float64(x + -1.0) / y), Float64(Float64(1.0 / y) + -1.0), x)) / y))
	tmp = 0.0
	if (y <= -130000.0)
		tmp = t_0;
	elseif (y <= 15000.0)
		tmp = fma(Float64(y / Float64(-1.0 - y)), Float64(1.0 - x), 1.0);
	else
		tmp = t_0;
	end
	return tmp
end
code[x_, y_] := Block[{t$95$0 = N[(x + N[(N[(1.0 - N[(N[(N[(x + -1.0), $MachinePrecision] / y), $MachinePrecision] * N[(N[(1.0 / y), $MachinePrecision] + -1.0), $MachinePrecision] + x), $MachinePrecision]), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y, -130000.0], t$95$0, If[LessEqual[y, 15000.0], N[(N[(y / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision] * N[(1.0 - x), $MachinePrecision] + 1.0), $MachinePrecision], t$95$0]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := x + \frac{1 - \mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)}{y}\\
\mathbf{if}\;y \leq -130000:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;y \leq 15000:\\
\;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\

\mathbf{else}:\\
\;\;\;\;t\_0\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if y < -1.3e5 or 15000 < y

    1. Initial program 32.6%

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

      \[\leadsto \color{blue}{x + -1 \cdot \frac{-1 \cdot \frac{-1 \cdot \frac{x - 1}{y} - -1 \cdot \left(x - 1\right)}{y} - -1 \cdot \left(x - 1\right)}{y}} \]
    4. Applied rewrites100.0%

      \[\leadsto \color{blue}{x + \frac{1 - \mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)}{y}} \]

    if -1.3e5 < y < 15000

    1. Initial program 99.9%

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
      2. lift-*.f64N/A

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

        \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
      4. lift-/.f64N/A

        \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      5. *-lft-identityN/A

        \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      6. cancel-sign-sub-invN/A

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

        \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
      8. neg-mul-1N/A

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

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
      10. lift-/.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
      11. lift-*.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
      12. associate-/l*N/A

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

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
      14. distribute-lft-neg-inN/A

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
      15. lower-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
    4. Applied rewrites100.0%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 5: 73.8% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := 1 + \frac{y \cdot \left(1 - x\right)}{-1 - y}\\ \mathbf{if}\;t\_0 \leq 0.005:\\ \;\;\;\;x\\ \mathbf{elif}\;t\_0 \leq 2:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (+ 1.0 (/ (* y (- 1.0 x)) (- -1.0 y)))))
   (if (<= t_0 0.005) x (if (<= t_0 2.0) 1.0 x))))
double code(double x, double y) {
	double t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y));
	double tmp;
	if (t_0 <= 0.005) {
		tmp = x;
	} else if (t_0 <= 2.0) {
		tmp = 1.0;
	} else {
		tmp = x;
	}
	return tmp;
}
real(8) function code(x, y)
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8) :: t_0
    real(8) :: tmp
    t_0 = 1.0d0 + ((y * (1.0d0 - x)) / ((-1.0d0) - y))
    if (t_0 <= 0.005d0) then
        tmp = x
    else if (t_0 <= 2.0d0) then
        tmp = 1.0d0
    else
        tmp = x
    end if
    code = tmp
end function
public static double code(double x, double y) {
	double t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y));
	double tmp;
	if (t_0 <= 0.005) {
		tmp = x;
	} else if (t_0 <= 2.0) {
		tmp = 1.0;
	} else {
		tmp = x;
	}
	return tmp;
}
def code(x, y):
	t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y))
	tmp = 0
	if t_0 <= 0.005:
		tmp = x
	elif t_0 <= 2.0:
		tmp = 1.0
	else:
		tmp = x
	return tmp
function code(x, y)
	t_0 = Float64(1.0 + Float64(Float64(y * Float64(1.0 - x)) / Float64(-1.0 - y)))
	tmp = 0.0
	if (t_0 <= 0.005)
		tmp = x;
	elseif (t_0 <= 2.0)
		tmp = 1.0;
	else
		tmp = x;
	end
	return tmp
end
function tmp_2 = code(x, y)
	t_0 = 1.0 + ((y * (1.0 - x)) / (-1.0 - y));
	tmp = 0.0;
	if (t_0 <= 0.005)
		tmp = x;
	elseif (t_0 <= 2.0)
		tmp = 1.0;
	else
		tmp = x;
	end
	tmp_2 = tmp;
end
code[x_, y_] := Block[{t$95$0 = N[(1.0 + N[(N[(y * N[(1.0 - x), $MachinePrecision]), $MachinePrecision] / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$0, 0.005], x, If[LessEqual[t$95$0, 2.0], 1.0, x]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := 1 + \frac{y \cdot \left(1 - x\right)}{-1 - y}\\
\mathbf{if}\;t\_0 \leq 0.005:\\
\;\;\;\;x\\

\mathbf{elif}\;t\_0 \leq 2:\\
\;\;\;\;1\\

\mathbf{else}:\\
\;\;\;\;x\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (-.f64 #s(literal 1 binary64) (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64)))) < 0.0050000000000000001 or 2 < (-.f64 #s(literal 1 binary64) (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64))))

    1. Initial program 47.1%

      \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
      2. lift-*.f64N/A

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

        \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
      4. lift-/.f64N/A

        \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      5. *-lft-identityN/A

        \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
      6. cancel-sign-sub-invN/A

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

        \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
      8. neg-mul-1N/A

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

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
      10. lift-/.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
      11. lift-*.f64N/A

        \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
      12. associate-/l*N/A

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

        \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
      14. distribute-lft-neg-inN/A

        \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
      15. lower-fma.f64N/A

        \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
    4. Applied rewrites64.8%

      \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
    5. Taylor expanded in y around inf

      \[\leadsto \color{blue}{1 + -1 \cdot \left(1 - x\right)} \]
    6. Step-by-step derivation
      1. mul-1-negN/A

        \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(\left(1 - x\right)\right)\right)} \]
      2. unsub-negN/A

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

        \[\leadsto 1 - \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)} \]
      4. associate--r+N/A

        \[\leadsto \color{blue}{\left(1 - 1\right) - \left(\mathsf{neg}\left(x\right)\right)} \]
      5. metadata-evalN/A

        \[\leadsto \color{blue}{0} - \left(\mathsf{neg}\left(x\right)\right) \]
      6. neg-sub0N/A

        \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(x\right)\right)\right)} \]
      7. remove-double-neg59.1

        \[\leadsto \color{blue}{x} \]
    7. Applied rewrites59.1%

      \[\leadsto \color{blue}{x} \]

    if 0.0050000000000000001 < (-.f64 #s(literal 1 binary64) (/.f64 (*.f64 (-.f64 #s(literal 1 binary64) x) y) (+.f64 y #s(literal 1 binary64)))) < 2

    1. Initial program 100.0%

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

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

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

      \[\leadsto \begin{array}{l} \mathbf{if}\;1 + \frac{y \cdot \left(1 - x\right)}{-1 - y} \leq 0.005:\\ \;\;\;\;x\\ \mathbf{elif}\;1 + \frac{y \cdot \left(1 - x\right)}{-1 - y} \leq 2:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \]
    7. Add Preprocessing

    Alternative 6: 99.9% accurate, 0.6× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)\\ \mathbf{if}\;y \leq -310000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y \leq 310000:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
    (FPCore (x y)
     :precision binary64
     (let* ((t_0 (fma (/ (+ x -1.0) y) (+ (/ 1.0 y) -1.0) x)))
       (if (<= y -310000.0)
         t_0
         (if (<= y 310000.0) (fma (/ y (- -1.0 y)) (- 1.0 x) 1.0) t_0))))
    double code(double x, double y) {
    	double t_0 = fma(((x + -1.0) / y), ((1.0 / y) + -1.0), x);
    	double tmp;
    	if (y <= -310000.0) {
    		tmp = t_0;
    	} else if (y <= 310000.0) {
    		tmp = fma((y / (-1.0 - y)), (1.0 - x), 1.0);
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    function code(x, y)
    	t_0 = fma(Float64(Float64(x + -1.0) / y), Float64(Float64(1.0 / y) + -1.0), x)
    	tmp = 0.0
    	if (y <= -310000.0)
    		tmp = t_0;
    	elseif (y <= 310000.0)
    		tmp = fma(Float64(y / Float64(-1.0 - y)), Float64(1.0 - x), 1.0);
    	else
    		tmp = t_0;
    	end
    	return tmp
    end
    
    code[x_, y_] := Block[{t$95$0 = N[(N[(N[(x + -1.0), $MachinePrecision] / y), $MachinePrecision] * N[(N[(1.0 / y), $MachinePrecision] + -1.0), $MachinePrecision] + x), $MachinePrecision]}, If[LessEqual[y, -310000.0], t$95$0, If[LessEqual[y, 310000.0], N[(N[(y / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision] * N[(1.0 - x), $MachinePrecision] + 1.0), $MachinePrecision], t$95$0]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := \mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)\\
    \mathbf{if}\;y \leq -310000:\\
    \;\;\;\;t\_0\\
    
    \mathbf{elif}\;y \leq 310000:\\
    \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_0\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if y < -3.1e5 or 3.1e5 < y

      1. Initial program 32.6%

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

        \[\leadsto \color{blue}{\left(x + \left(-1 \cdot \frac{1 + -1 \cdot x}{{y}^{2}} + \frac{1}{y}\right)\right) - \frac{x}{y}} \]
      4. Step-by-step derivation
        1. associate--l+N/A

          \[\leadsto \color{blue}{x + \left(\left(-1 \cdot \frac{1 + -1 \cdot x}{{y}^{2}} + \frac{1}{y}\right) - \frac{x}{y}\right)} \]
        2. +-commutativeN/A

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

        \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{x + -1}{y}, \frac{1}{y} + -1, x\right)} \]

      if -3.1e5 < y < 3.1e5

      1. Initial program 99.9%

        \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
      2. Add Preprocessing
      3. Step-by-step derivation
        1. lift--.f64N/A

          \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
        2. lift-*.f64N/A

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

          \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
        4. lift-/.f64N/A

          \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
        5. *-lft-identityN/A

          \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
        6. cancel-sign-sub-invN/A

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

          \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
        8. neg-mul-1N/A

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

          \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
        10. lift-/.f64N/A

          \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
        11. lift-*.f64N/A

          \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
        12. associate-/l*N/A

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

          \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
        14. distribute-lft-neg-inN/A

          \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
        15. lower-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
      4. Applied rewrites100.0%

        \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
    3. Recombined 2 regimes into one program.
    4. Add Preprocessing

    Alternative 7: 99.6% accurate, 0.7× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} t_0 := x + \frac{1}{y}\\ \mathbf{if}\;y \leq -6200000000000:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y \leq 13500000000:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
    (FPCore (x y)
     :precision binary64
     (let* ((t_0 (+ x (/ 1.0 y))))
       (if (<= y -6200000000000.0)
         t_0
         (if (<= y 13500000000.0) (fma (/ y (- -1.0 y)) (- 1.0 x) 1.0) t_0))))
    double code(double x, double y) {
    	double t_0 = x + (1.0 / y);
    	double tmp;
    	if (y <= -6200000000000.0) {
    		tmp = t_0;
    	} else if (y <= 13500000000.0) {
    		tmp = fma((y / (-1.0 - y)), (1.0 - x), 1.0);
    	} else {
    		tmp = t_0;
    	}
    	return tmp;
    }
    
    function code(x, y)
    	t_0 = Float64(x + Float64(1.0 / y))
    	tmp = 0.0
    	if (y <= -6200000000000.0)
    		tmp = t_0;
    	elseif (y <= 13500000000.0)
    		tmp = fma(Float64(y / Float64(-1.0 - y)), Float64(1.0 - x), 1.0);
    	else
    		tmp = t_0;
    	end
    	return tmp
    end
    
    code[x_, y_] := Block[{t$95$0 = N[(x + N[(1.0 / y), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y, -6200000000000.0], t$95$0, If[LessEqual[y, 13500000000.0], N[(N[(y / N[(-1.0 - y), $MachinePrecision]), $MachinePrecision] * N[(1.0 - x), $MachinePrecision] + 1.0), $MachinePrecision], t$95$0]]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    t_0 := x + \frac{1}{y}\\
    \mathbf{if}\;y \leq -6200000000000:\\
    \;\;\;\;t\_0\\
    
    \mathbf{elif}\;y \leq 13500000000:\\
    \;\;\;\;\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)\\
    
    \mathbf{else}:\\
    \;\;\;\;t\_0\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if y < -6.2e12 or 1.35e10 < y

      1. Initial program 30.1%

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

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

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

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

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

          \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
        5. div-subN/A

          \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
        6. unsub-negN/A

          \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
        7. mul-1-negN/A

          \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
        8. lower-+.f64N/A

          \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
        9. associate-*r/N/A

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

          \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
        11. mul-1-negN/A

          \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
        12. neg-sub0N/A

          \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
        13. associate-+l-N/A

          \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
        14. neg-sub0N/A

          \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
        15. +-commutativeN/A

          \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
        16. sub-negN/A

          \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
        17. lower--.f6499.8

          \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
      5. Applied rewrites99.8%

        \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]
      6. Taylor expanded in x around 0

        \[\leadsto x + \frac{\color{blue}{1}}{y} \]
      7. Step-by-step derivation
        1. Applied rewrites99.8%

          \[\leadsto x + \frac{\color{blue}{1}}{y} \]

        if -6.2e12 < y < 1.35e10

        1. Initial program 99.2%

          \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
          2. lift-*.f64N/A

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

            \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
          4. lift-/.f64N/A

            \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
          5. *-lft-identityN/A

            \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
          6. cancel-sign-sub-invN/A

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

            \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
          8. neg-mul-1N/A

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

            \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
          10. lift-/.f64N/A

            \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
          11. lift-*.f64N/A

            \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
          12. associate-/l*N/A

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

            \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
          14. distribute-lft-neg-inN/A

            \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
          15. lower-fma.f64N/A

            \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
        4. Applied rewrites99.3%

          \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
      8. Recombined 2 regimes into one program.
      9. Add Preprocessing

      Alternative 8: 86.4% accurate, 0.9× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \leq -1:\\ \;\;\;\;x\\ \mathbf{elif}\;y \leq 3.8:\\ \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\ \mathbf{elif}\;y \leq 7.8 \cdot 10^{+40}:\\ \;\;\;\;\frac{1}{y}\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \end{array} \]
      (FPCore (x y)
       :precision binary64
       (if (<= y -1.0)
         x
         (if (<= y 3.8) (fma y (+ x -1.0) 1.0) (if (<= y 7.8e+40) (/ 1.0 y) x))))
      double code(double x, double y) {
      	double tmp;
      	if (y <= -1.0) {
      		tmp = x;
      	} else if (y <= 3.8) {
      		tmp = fma(y, (x + -1.0), 1.0);
      	} else if (y <= 7.8e+40) {
      		tmp = 1.0 / y;
      	} else {
      		tmp = x;
      	}
      	return tmp;
      }
      
      function code(x, y)
      	tmp = 0.0
      	if (y <= -1.0)
      		tmp = x;
      	elseif (y <= 3.8)
      		tmp = fma(y, Float64(x + -1.0), 1.0);
      	elseif (y <= 7.8e+40)
      		tmp = Float64(1.0 / y);
      	else
      		tmp = x;
      	end
      	return tmp
      end
      
      code[x_, y_] := If[LessEqual[y, -1.0], x, If[LessEqual[y, 3.8], N[(y * N[(x + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], If[LessEqual[y, 7.8e+40], N[(1.0 / y), $MachinePrecision], x]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      \mathbf{if}\;y \leq -1:\\
      \;\;\;\;x\\
      
      \mathbf{elif}\;y \leq 3.8:\\
      \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\
      
      \mathbf{elif}\;y \leq 7.8 \cdot 10^{+40}:\\
      \;\;\;\;\frac{1}{y}\\
      
      \mathbf{else}:\\
      \;\;\;\;x\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if y < -1 or 7.8000000000000002e40 < y

        1. Initial program 33.0%

          \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
        2. Add Preprocessing
        3. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
          2. lift-*.f64N/A

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

            \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
          4. lift-/.f64N/A

            \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
          5. *-lft-identityN/A

            \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
          6. cancel-sign-sub-invN/A

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

            \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
          8. neg-mul-1N/A

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

            \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
          10. lift-/.f64N/A

            \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
          11. lift-*.f64N/A

            \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
          12. associate-/l*N/A

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

            \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
          14. distribute-lft-neg-inN/A

            \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
          15. lower-fma.f64N/A

            \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
        4. Applied rewrites56.9%

          \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
        5. Taylor expanded in y around inf

          \[\leadsto \color{blue}{1 + -1 \cdot \left(1 - x\right)} \]
        6. Step-by-step derivation
          1. mul-1-negN/A

            \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(\left(1 - x\right)\right)\right)} \]
          2. unsub-negN/A

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

            \[\leadsto 1 - \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)} \]
          4. associate--r+N/A

            \[\leadsto \color{blue}{\left(1 - 1\right) - \left(\mathsf{neg}\left(x\right)\right)} \]
          5. metadata-evalN/A

            \[\leadsto \color{blue}{0} - \left(\mathsf{neg}\left(x\right)\right) \]
          6. neg-sub0N/A

            \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(x\right)\right)\right)} \]
          7. remove-double-neg77.2

            \[\leadsto \color{blue}{x} \]
        7. Applied rewrites77.2%

          \[\leadsto \color{blue}{x} \]

        if -1 < y < 3.7999999999999998

        1. Initial program 100.0%

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

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

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

            \[\leadsto \color{blue}{\mathsf{fma}\left(y, x - 1, 1\right)} \]
          3. sub-negN/A

            \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + \left(\mathsf{neg}\left(1\right)\right)}, 1\right) \]
          4. metadata-evalN/A

            \[\leadsto \mathsf{fma}\left(y, x + \color{blue}{-1}, 1\right) \]
          5. lower-+.f6498.1

            \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + -1}, 1\right) \]
        5. Applied rewrites98.1%

          \[\leadsto \color{blue}{\mathsf{fma}\left(y, x + -1, 1\right)} \]

        if 3.7999999999999998 < y < 7.8000000000000002e40

        1. Initial program 41.0%

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

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

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

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

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

            \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
          5. div-subN/A

            \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
          6. unsub-negN/A

            \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
          7. mul-1-negN/A

            \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
          8. lower-+.f64N/A

            \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
          9. associate-*r/N/A

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

            \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
          11. mul-1-negN/A

            \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
          12. neg-sub0N/A

            \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
          13. associate-+l-N/A

            \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
          14. neg-sub0N/A

            \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
          15. +-commutativeN/A

            \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
          16. sub-negN/A

            \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
          17. lower--.f6487.8

            \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
        5. Applied rewrites87.8%

          \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]
        6. Taylor expanded in x around 0

          \[\leadsto \color{blue}{\frac{1}{y}} \]
        7. Step-by-step derivation
          1. lower-/.f6468.5

            \[\leadsto \color{blue}{\frac{1}{y}} \]
        8. Applied rewrites68.5%

          \[\leadsto \color{blue}{\frac{1}{y}} \]
      3. Recombined 3 regimes into one program.
      4. Add Preprocessing

      Alternative 9: 98.5% accurate, 0.9× speedup?

      \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \leq -1:\\ \;\;\;\;x + \frac{1 - x}{y}\\ \mathbf{elif}\;y \leq 0.85:\\ \;\;\;\;\mathsf{fma}\left(y - y \cdot x, y + -1, 1\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{1}{y}\\ \end{array} \end{array} \]
      (FPCore (x y)
       :precision binary64
       (if (<= y -1.0)
         (+ x (/ (- 1.0 x) y))
         (if (<= y 0.85) (fma (- y (* y x)) (+ y -1.0) 1.0) (+ x (/ 1.0 y)))))
      double code(double x, double y) {
      	double tmp;
      	if (y <= -1.0) {
      		tmp = x + ((1.0 - x) / y);
      	} else if (y <= 0.85) {
      		tmp = fma((y - (y * x)), (y + -1.0), 1.0);
      	} else {
      		tmp = x + (1.0 / y);
      	}
      	return tmp;
      }
      
      function code(x, y)
      	tmp = 0.0
      	if (y <= -1.0)
      		tmp = Float64(x + Float64(Float64(1.0 - x) / y));
      	elseif (y <= 0.85)
      		tmp = fma(Float64(y - Float64(y * x)), Float64(y + -1.0), 1.0);
      	else
      		tmp = Float64(x + Float64(1.0 / y));
      	end
      	return tmp
      end
      
      code[x_, y_] := If[LessEqual[y, -1.0], N[(x + N[(N[(1.0 - x), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], If[LessEqual[y, 0.85], N[(N[(y - N[(y * x), $MachinePrecision]), $MachinePrecision] * N[(y + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(x + N[(1.0 / y), $MachinePrecision]), $MachinePrecision]]]
      
      \begin{array}{l}
      
      \\
      \begin{array}{l}
      \mathbf{if}\;y \leq -1:\\
      \;\;\;\;x + \frac{1 - x}{y}\\
      
      \mathbf{elif}\;y \leq 0.85:\\
      \;\;\;\;\mathsf{fma}\left(y - y \cdot x, y + -1, 1\right)\\
      
      \mathbf{else}:\\
      \;\;\;\;x + \frac{1}{y}\\
      
      
      \end{array}
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if y < -1

        1. Initial program 37.1%

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

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

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

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

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

            \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
          5. div-subN/A

            \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
          6. unsub-negN/A

            \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
          7. mul-1-negN/A

            \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
          8. lower-+.f64N/A

            \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
          9. associate-*r/N/A

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

            \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
          11. mul-1-negN/A

            \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
          12. neg-sub0N/A

            \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
          13. associate-+l-N/A

            \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
          14. neg-sub0N/A

            \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
          15. +-commutativeN/A

            \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
          16. sub-negN/A

            \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
          17. lower--.f6497.6

            \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
        5. Applied rewrites97.6%

          \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]

        if -1 < y < 0.849999999999999978

        1. Initial program 100.0%

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

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

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

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

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

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

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \color{blue}{y \cdot \left(x - 1\right)}\right) + 1 \]
          6. *-rgt-identityN/A

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

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

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

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \color{blue}{\left(\mathsf{neg}\left(y \cdot \left(x - 1\right)\right)\right) \cdot -1}\right) + 1 \]
          10. distribute-rgt-neg-outN/A

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \color{blue}{\left(y \cdot \left(\mathsf{neg}\left(\left(x - 1\right)\right)\right)\right)} \cdot -1\right) + 1 \]
          11. neg-sub0N/A

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \left(y \cdot \color{blue}{\left(0 - \left(x - 1\right)\right)}\right) \cdot -1\right) + 1 \]
          12. associate-+l-N/A

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \left(y \cdot \color{blue}{\left(\left(0 - x\right) + 1\right)}\right) \cdot -1\right) + 1 \]
          13. neg-sub0N/A

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \left(y \cdot \left(\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1\right)\right) \cdot -1\right) + 1 \]
          14. +-commutativeN/A

            \[\leadsto \left(\left(y \cdot \left(1 - x\right)\right) \cdot y + \left(y \cdot \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)}\right) \cdot -1\right) + 1 \]
          15. sub-negN/A

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

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

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

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

        if 0.849999999999999978 < y

        1. Initial program 30.1%

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

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

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

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

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

            \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
          5. div-subN/A

            \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
          6. unsub-negN/A

            \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
          7. mul-1-negN/A

            \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
          8. lower-+.f64N/A

            \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
          9. associate-*r/N/A

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

            \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
          11. mul-1-negN/A

            \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
          12. neg-sub0N/A

            \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
          13. associate-+l-N/A

            \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
          14. neg-sub0N/A

            \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
          15. +-commutativeN/A

            \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
          16. sub-negN/A

            \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
          17. lower--.f6498.2

            \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
        5. Applied rewrites98.2%

          \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]
        6. Taylor expanded in x around 0

          \[\leadsto x + \frac{\color{blue}{1}}{y} \]
        7. Step-by-step derivation
          1. Applied rewrites98.2%

            \[\leadsto x + \frac{\color{blue}{1}}{y} \]
        8. Recombined 3 regimes into one program.
        9. Add Preprocessing

        Alternative 10: 98.2% accurate, 1.0× speedup?

        \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \leq -1:\\ \;\;\;\;x + \frac{1 - x}{y}\\ \mathbf{elif}\;y \leq 0.8:\\ \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\ \mathbf{else}:\\ \;\;\;\;x + \frac{1}{y}\\ \end{array} \end{array} \]
        (FPCore (x y)
         :precision binary64
         (if (<= y -1.0)
           (+ x (/ (- 1.0 x) y))
           (if (<= y 0.8) (fma y (+ x -1.0) 1.0) (+ x (/ 1.0 y)))))
        double code(double x, double y) {
        	double tmp;
        	if (y <= -1.0) {
        		tmp = x + ((1.0 - x) / y);
        	} else if (y <= 0.8) {
        		tmp = fma(y, (x + -1.0), 1.0);
        	} else {
        		tmp = x + (1.0 / y);
        	}
        	return tmp;
        }
        
        function code(x, y)
        	tmp = 0.0
        	if (y <= -1.0)
        		tmp = Float64(x + Float64(Float64(1.0 - x) / y));
        	elseif (y <= 0.8)
        		tmp = fma(y, Float64(x + -1.0), 1.0);
        	else
        		tmp = Float64(x + Float64(1.0 / y));
        	end
        	return tmp
        end
        
        code[x_, y_] := If[LessEqual[y, -1.0], N[(x + N[(N[(1.0 - x), $MachinePrecision] / y), $MachinePrecision]), $MachinePrecision], If[LessEqual[y, 0.8], N[(y * N[(x + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], N[(x + N[(1.0 / y), $MachinePrecision]), $MachinePrecision]]]
        
        \begin{array}{l}
        
        \\
        \begin{array}{l}
        \mathbf{if}\;y \leq -1:\\
        \;\;\;\;x + \frac{1 - x}{y}\\
        
        \mathbf{elif}\;y \leq 0.8:\\
        \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\
        
        \mathbf{else}:\\
        \;\;\;\;x + \frac{1}{y}\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 3 regimes
        2. if y < -1

          1. Initial program 37.1%

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

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

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

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

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

              \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
            5. div-subN/A

              \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
            6. unsub-negN/A

              \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
            7. mul-1-negN/A

              \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
            8. lower-+.f64N/A

              \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
            9. associate-*r/N/A

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

              \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
            11. mul-1-negN/A

              \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
            12. neg-sub0N/A

              \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
            13. associate-+l-N/A

              \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
            14. neg-sub0N/A

              \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
            15. +-commutativeN/A

              \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
            16. sub-negN/A

              \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
            17. lower--.f6497.6

              \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
          5. Applied rewrites97.6%

            \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]

          if -1 < y < 0.80000000000000004

          1. Initial program 100.0%

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

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

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

              \[\leadsto \color{blue}{\mathsf{fma}\left(y, x - 1, 1\right)} \]
            3. sub-negN/A

              \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + \left(\mathsf{neg}\left(1\right)\right)}, 1\right) \]
            4. metadata-evalN/A

              \[\leadsto \mathsf{fma}\left(y, x + \color{blue}{-1}, 1\right) \]
            5. lower-+.f6498.1

              \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + -1}, 1\right) \]
          5. Applied rewrites98.1%

            \[\leadsto \color{blue}{\mathsf{fma}\left(y, x + -1, 1\right)} \]

          if 0.80000000000000004 < y

          1. Initial program 30.1%

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

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

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

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

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

              \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
            5. div-subN/A

              \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
            6. unsub-negN/A

              \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
            7. mul-1-negN/A

              \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
            8. lower-+.f64N/A

              \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
            9. associate-*r/N/A

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

              \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
            11. mul-1-negN/A

              \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
            12. neg-sub0N/A

              \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
            13. associate-+l-N/A

              \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
            14. neg-sub0N/A

              \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
            15. +-commutativeN/A

              \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
            16. sub-negN/A

              \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
            17. lower--.f6498.2

              \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
          5. Applied rewrites98.2%

            \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]
          6. Taylor expanded in x around 0

            \[\leadsto x + \frac{\color{blue}{1}}{y} \]
          7. Step-by-step derivation
            1. Applied rewrites98.2%

              \[\leadsto x + \frac{\color{blue}{1}}{y} \]
          8. Recombined 3 regimes into one program.
          9. Add Preprocessing

          Alternative 11: 98.1% accurate, 1.0× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := x + \frac{1}{y}\\ \mathbf{if}\;y \leq -1:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y \leq 0.8:\\ \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
          (FPCore (x y)
           :precision binary64
           (let* ((t_0 (+ x (/ 1.0 y))))
             (if (<= y -1.0) t_0 (if (<= y 0.8) (fma y (+ x -1.0) 1.0) t_0))))
          double code(double x, double y) {
          	double t_0 = x + (1.0 / y);
          	double tmp;
          	if (y <= -1.0) {
          		tmp = t_0;
          	} else if (y <= 0.8) {
          		tmp = fma(y, (x + -1.0), 1.0);
          	} else {
          		tmp = t_0;
          	}
          	return tmp;
          }
          
          function code(x, y)
          	t_0 = Float64(x + Float64(1.0 / y))
          	tmp = 0.0
          	if (y <= -1.0)
          		tmp = t_0;
          	elseif (y <= 0.8)
          		tmp = fma(y, Float64(x + -1.0), 1.0);
          	else
          		tmp = t_0;
          	end
          	return tmp
          end
          
          code[x_, y_] := Block[{t$95$0 = N[(x + N[(1.0 / y), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y, -1.0], t$95$0, If[LessEqual[y, 0.8], N[(y * N[(x + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], t$95$0]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := x + \frac{1}{y}\\
          \mathbf{if}\;y \leq -1:\\
          \;\;\;\;t\_0\\
          
          \mathbf{elif}\;y \leq 0.8:\\
          \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;t\_0\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if y < -1 or 0.80000000000000004 < y

            1. Initial program 33.5%

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

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

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

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

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

                \[\leadsto \color{blue}{x - \left(\frac{x}{y} - \frac{1}{y}\right)} \]
              5. div-subN/A

                \[\leadsto x - \color{blue}{\frac{x - 1}{y}} \]
              6. unsub-negN/A

                \[\leadsto \color{blue}{x + \left(\mathsf{neg}\left(\frac{x - 1}{y}\right)\right)} \]
              7. mul-1-negN/A

                \[\leadsto x + \color{blue}{-1 \cdot \frac{x - 1}{y}} \]
              8. lower-+.f64N/A

                \[\leadsto \color{blue}{x + -1 \cdot \frac{x - 1}{y}} \]
              9. associate-*r/N/A

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

                \[\leadsto x + \color{blue}{\frac{-1 \cdot \left(x - 1\right)}{y}} \]
              11. mul-1-negN/A

                \[\leadsto x + \frac{\color{blue}{\mathsf{neg}\left(\left(x - 1\right)\right)}}{y} \]
              12. neg-sub0N/A

                \[\leadsto x + \frac{\color{blue}{0 - \left(x - 1\right)}}{y} \]
              13. associate-+l-N/A

                \[\leadsto x + \frac{\color{blue}{\left(0 - x\right) + 1}}{y} \]
              14. neg-sub0N/A

                \[\leadsto x + \frac{\color{blue}{\left(\mathsf{neg}\left(x\right)\right)} + 1}{y} \]
              15. +-commutativeN/A

                \[\leadsto x + \frac{\color{blue}{1 + \left(\mathsf{neg}\left(x\right)\right)}}{y} \]
              16. sub-negN/A

                \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
              17. lower--.f6497.9

                \[\leadsto x + \frac{\color{blue}{1 - x}}{y} \]
            5. Applied rewrites97.9%

              \[\leadsto \color{blue}{x + \frac{1 - x}{y}} \]
            6. Taylor expanded in x around 0

              \[\leadsto x + \frac{\color{blue}{1}}{y} \]
            7. Step-by-step derivation
              1. Applied rewrites97.2%

                \[\leadsto x + \frac{\color{blue}{1}}{y} \]

              if -1 < y < 0.80000000000000004

              1. Initial program 100.0%

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

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

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

                  \[\leadsto \color{blue}{\mathsf{fma}\left(y, x - 1, 1\right)} \]
                3. sub-negN/A

                  \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + \left(\mathsf{neg}\left(1\right)\right)}, 1\right) \]
                4. metadata-evalN/A

                  \[\leadsto \mathsf{fma}\left(y, x + \color{blue}{-1}, 1\right) \]
                5. lower-+.f6498.1

                  \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + -1}, 1\right) \]
              5. Applied rewrites98.1%

                \[\leadsto \color{blue}{\mathsf{fma}\left(y, x + -1, 1\right)} \]
            8. Recombined 2 regimes into one program.
            9. Add Preprocessing

            Alternative 12: 73.3% accurate, 1.1× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \leq -1:\\ \;\;\;\;x\\ \mathbf{elif}\;y \leq 1.02 \cdot 10^{-76}:\\ \;\;\;\;\mathsf{fma}\left(y, y, 1\right) - y\\ \mathbf{elif}\;y \leq 21500000:\\ \;\;\;\;y \cdot x\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \end{array} \]
            (FPCore (x y)
             :precision binary64
             (if (<= y -1.0)
               x
               (if (<= y 1.02e-76) (- (fma y y 1.0) y) (if (<= y 21500000.0) (* y x) x))))
            double code(double x, double y) {
            	double tmp;
            	if (y <= -1.0) {
            		tmp = x;
            	} else if (y <= 1.02e-76) {
            		tmp = fma(y, y, 1.0) - y;
            	} else if (y <= 21500000.0) {
            		tmp = y * x;
            	} else {
            		tmp = x;
            	}
            	return tmp;
            }
            
            function code(x, y)
            	tmp = 0.0
            	if (y <= -1.0)
            		tmp = x;
            	elseif (y <= 1.02e-76)
            		tmp = Float64(fma(y, y, 1.0) - y);
            	elseif (y <= 21500000.0)
            		tmp = Float64(y * x);
            	else
            		tmp = x;
            	end
            	return tmp
            end
            
            code[x_, y_] := If[LessEqual[y, -1.0], x, If[LessEqual[y, 1.02e-76], N[(N[(y * y + 1.0), $MachinePrecision] - y), $MachinePrecision], If[LessEqual[y, 21500000.0], N[(y * x), $MachinePrecision], x]]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            \mathbf{if}\;y \leq -1:\\
            \;\;\;\;x\\
            
            \mathbf{elif}\;y \leq 1.02 \cdot 10^{-76}:\\
            \;\;\;\;\mathsf{fma}\left(y, y, 1\right) - y\\
            
            \mathbf{elif}\;y \leq 21500000:\\
            \;\;\;\;y \cdot x\\
            
            \mathbf{else}:\\
            \;\;\;\;x\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 3 regimes
            2. if y < -1 or 2.15e7 < y

              1. Initial program 33.0%

                \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift--.f64N/A

                  \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
                2. lift-*.f64N/A

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

                  \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
                4. lift-/.f64N/A

                  \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
                5. *-lft-identityN/A

                  \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
                6. cancel-sign-sub-invN/A

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

                  \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
                8. neg-mul-1N/A

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

                  \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
                10. lift-/.f64N/A

                  \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
                11. lift-*.f64N/A

                  \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
                12. associate-/l*N/A

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

                  \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
                14. distribute-lft-neg-inN/A

                  \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
                15. lower-fma.f64N/A

                  \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
              4. Applied rewrites55.5%

                \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
              5. Taylor expanded in y around inf

                \[\leadsto \color{blue}{1 + -1 \cdot \left(1 - x\right)} \]
              6. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(\left(1 - x\right)\right)\right)} \]
                2. unsub-negN/A

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

                  \[\leadsto 1 - \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)} \]
                4. associate--r+N/A

                  \[\leadsto \color{blue}{\left(1 - 1\right) - \left(\mathsf{neg}\left(x\right)\right)} \]
                5. metadata-evalN/A

                  \[\leadsto \color{blue}{0} - \left(\mathsf{neg}\left(x\right)\right) \]
                6. neg-sub0N/A

                  \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(x\right)\right)\right)} \]
                7. remove-double-neg74.2

                  \[\leadsto \color{blue}{x} \]
              7. Applied rewrites74.2%

                \[\leadsto \color{blue}{x} \]

              if -1 < y < 1.02000000000000006e-76

              1. Initial program 100.0%

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

                \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
              4. Step-by-step derivation
                1. lower-/.f64N/A

                  \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
                2. lower-+.f6476.8

                  \[\leadsto 1 - \frac{y}{\color{blue}{1 + y}} \]
              5. Applied rewrites76.8%

                \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
              6. Taylor expanded in y around 0

                \[\leadsto \color{blue}{1 + y \cdot \left(y - 1\right)} \]
              7. Step-by-step derivation
                1. +-commutativeN/A

                  \[\leadsto \color{blue}{y \cdot \left(y - 1\right) + 1} \]
                2. lower-fma.f64N/A

                  \[\leadsto \color{blue}{\mathsf{fma}\left(y, y - 1, 1\right)} \]
                3. sub-negN/A

                  \[\leadsto \mathsf{fma}\left(y, \color{blue}{y + \left(\mathsf{neg}\left(1\right)\right)}, 1\right) \]
                4. metadata-evalN/A

                  \[\leadsto \mathsf{fma}\left(y, y + \color{blue}{-1}, 1\right) \]
                5. lower-+.f6476.4

                  \[\leadsto \mathsf{fma}\left(y, \color{blue}{y + -1}, 1\right) \]
              8. Applied rewrites76.4%

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

                \[\leadsto \color{blue}{1 + y \cdot \left(y - 1\right)} \]
              10. Step-by-step derivation
                1. sub-negN/A

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

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

                  \[\leadsto 1 + \color{blue}{\left(y \cdot y + -1 \cdot y\right)} \]
                4. unpow2N/A

                  \[\leadsto 1 + \left(\color{blue}{{y}^{2}} + -1 \cdot y\right) \]
                5. associate-+r+N/A

                  \[\leadsto \color{blue}{\left(1 + {y}^{2}\right) + -1 \cdot y} \]
                6. mul-1-negN/A

                  \[\leadsto \left(1 + {y}^{2}\right) + \color{blue}{\left(\mathsf{neg}\left(y\right)\right)} \]
                7. unsub-negN/A

                  \[\leadsto \color{blue}{\left(1 + {y}^{2}\right) - y} \]
                8. lft-mult-inverseN/A

                  \[\leadsto \left(\color{blue}{\frac{1}{{y}^{2}} \cdot {y}^{2}} + {y}^{2}\right) - y \]
                9. distribute-lft1-inN/A

                  \[\leadsto \color{blue}{\left(\frac{1}{{y}^{2}} + 1\right) \cdot {y}^{2}} - y \]
                10. +-commutativeN/A

                  \[\leadsto \color{blue}{\left(1 + \frac{1}{{y}^{2}}\right)} \cdot {y}^{2} - y \]
                11. lower--.f64N/A

                  \[\leadsto \color{blue}{\left(1 + \frac{1}{{y}^{2}}\right) \cdot {y}^{2} - y} \]
                12. +-commutativeN/A

                  \[\leadsto \color{blue}{\left(\frac{1}{{y}^{2}} + 1\right)} \cdot {y}^{2} - y \]
                13. distribute-rgt1-inN/A

                  \[\leadsto \color{blue}{\left({y}^{2} + \frac{1}{{y}^{2}} \cdot {y}^{2}\right)} - y \]
                14. unpow2N/A

                  \[\leadsto \left(\color{blue}{y \cdot y} + \frac{1}{{y}^{2}} \cdot {y}^{2}\right) - y \]
                15. lft-mult-inverseN/A

                  \[\leadsto \left(y \cdot y + \color{blue}{1}\right) - y \]
                16. lower-fma.f6476.4

                  \[\leadsto \color{blue}{\mathsf{fma}\left(y, y, 1\right)} - y \]
              11. Applied rewrites76.4%

                \[\leadsto \color{blue}{\mathsf{fma}\left(y, y, 1\right) - y} \]

              if 1.02000000000000006e-76 < y < 2.15e7

              1. Initial program 97.5%

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

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

                  \[\leadsto \frac{\color{blue}{y \cdot x}}{1 + y} \]
                2. associate-*l/N/A

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

                  \[\leadsto \color{blue}{\frac{y}{1 + y} \cdot x} \]
                4. lower-/.f64N/A

                  \[\leadsto \color{blue}{\frac{y}{1 + y}} \cdot x \]
                5. lower-+.f6456.7

                  \[\leadsto \frac{y}{\color{blue}{1 + y}} \cdot x \]
              5. Applied rewrites56.7%

                \[\leadsto \color{blue}{\frac{y}{1 + y} \cdot x} \]
              6. Taylor expanded in y around 0

                \[\leadsto \color{blue}{x \cdot y} \]
              7. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \color{blue}{y \cdot x} \]
                2. lower-*.f6454.9

                  \[\leadsto \color{blue}{y \cdot x} \]
              8. Applied rewrites54.9%

                \[\leadsto \color{blue}{y \cdot x} \]
            3. Recombined 3 regimes into one program.
            4. Add Preprocessing

            Alternative 13: 73.2% accurate, 1.1× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \leq -1:\\ \;\;\;\;x\\ \mathbf{elif}\;y \leq 1.02 \cdot 10^{-76}:\\ \;\;\;\;1 - y\\ \mathbf{elif}\;y \leq 21500000:\\ \;\;\;\;y \cdot x\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \end{array} \]
            (FPCore (x y)
             :precision binary64
             (if (<= y -1.0)
               x
               (if (<= y 1.02e-76) (- 1.0 y) (if (<= y 21500000.0) (* y x) x))))
            double code(double x, double y) {
            	double tmp;
            	if (y <= -1.0) {
            		tmp = x;
            	} else if (y <= 1.02e-76) {
            		tmp = 1.0 - y;
            	} else if (y <= 21500000.0) {
            		tmp = y * x;
            	} else {
            		tmp = x;
            	}
            	return tmp;
            }
            
            real(8) function code(x, y)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                real(8) :: tmp
                if (y <= (-1.0d0)) then
                    tmp = x
                else if (y <= 1.02d-76) then
                    tmp = 1.0d0 - y
                else if (y <= 21500000.0d0) then
                    tmp = y * x
                else
                    tmp = x
                end if
                code = tmp
            end function
            
            public static double code(double x, double y) {
            	double tmp;
            	if (y <= -1.0) {
            		tmp = x;
            	} else if (y <= 1.02e-76) {
            		tmp = 1.0 - y;
            	} else if (y <= 21500000.0) {
            		tmp = y * x;
            	} else {
            		tmp = x;
            	}
            	return tmp;
            }
            
            def code(x, y):
            	tmp = 0
            	if y <= -1.0:
            		tmp = x
            	elif y <= 1.02e-76:
            		tmp = 1.0 - y
            	elif y <= 21500000.0:
            		tmp = y * x
            	else:
            		tmp = x
            	return tmp
            
            function code(x, y)
            	tmp = 0.0
            	if (y <= -1.0)
            		tmp = x;
            	elseif (y <= 1.02e-76)
            		tmp = Float64(1.0 - y);
            	elseif (y <= 21500000.0)
            		tmp = Float64(y * x);
            	else
            		tmp = x;
            	end
            	return tmp
            end
            
            function tmp_2 = code(x, y)
            	tmp = 0.0;
            	if (y <= -1.0)
            		tmp = x;
            	elseif (y <= 1.02e-76)
            		tmp = 1.0 - y;
            	elseif (y <= 21500000.0)
            		tmp = y * x;
            	else
            		tmp = x;
            	end
            	tmp_2 = tmp;
            end
            
            code[x_, y_] := If[LessEqual[y, -1.0], x, If[LessEqual[y, 1.02e-76], N[(1.0 - y), $MachinePrecision], If[LessEqual[y, 21500000.0], N[(y * x), $MachinePrecision], x]]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            \mathbf{if}\;y \leq -1:\\
            \;\;\;\;x\\
            
            \mathbf{elif}\;y \leq 1.02 \cdot 10^{-76}:\\
            \;\;\;\;1 - y\\
            
            \mathbf{elif}\;y \leq 21500000:\\
            \;\;\;\;y \cdot x\\
            
            \mathbf{else}:\\
            \;\;\;\;x\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 3 regimes
            2. if y < -1 or 2.15e7 < y

              1. Initial program 33.0%

                \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift--.f64N/A

                  \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
                2. lift-*.f64N/A

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

                  \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
                4. lift-/.f64N/A

                  \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
                5. *-lft-identityN/A

                  \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
                6. cancel-sign-sub-invN/A

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

                  \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
                8. neg-mul-1N/A

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

                  \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
                10. lift-/.f64N/A

                  \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
                11. lift-*.f64N/A

                  \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
                12. associate-/l*N/A

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

                  \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
                14. distribute-lft-neg-inN/A

                  \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
                15. lower-fma.f64N/A

                  \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
              4. Applied rewrites55.5%

                \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
              5. Taylor expanded in y around inf

                \[\leadsto \color{blue}{1 + -1 \cdot \left(1 - x\right)} \]
              6. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(\left(1 - x\right)\right)\right)} \]
                2. unsub-negN/A

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

                  \[\leadsto 1 - \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)} \]
                4. associate--r+N/A

                  \[\leadsto \color{blue}{\left(1 - 1\right) - \left(\mathsf{neg}\left(x\right)\right)} \]
                5. metadata-evalN/A

                  \[\leadsto \color{blue}{0} - \left(\mathsf{neg}\left(x\right)\right) \]
                6. neg-sub0N/A

                  \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(x\right)\right)\right)} \]
                7. remove-double-neg74.2

                  \[\leadsto \color{blue}{x} \]
              7. Applied rewrites74.2%

                \[\leadsto \color{blue}{x} \]

              if -1 < y < 1.02000000000000006e-76

              1. Initial program 100.0%

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

                \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
              4. Step-by-step derivation
                1. lower-/.f64N/A

                  \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
                2. lower-+.f6476.8

                  \[\leadsto 1 - \frac{y}{\color{blue}{1 + y}} \]
              5. Applied rewrites76.8%

                \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
              6. Taylor expanded in y around 0

                \[\leadsto \color{blue}{1 + -1 \cdot y} \]
              7. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(y\right)\right)} \]
                2. unsub-negN/A

                  \[\leadsto \color{blue}{1 - y} \]
                3. lower--.f6476.3

                  \[\leadsto \color{blue}{1 - y} \]
              8. Applied rewrites76.3%

                \[\leadsto \color{blue}{1 - y} \]

              if 1.02000000000000006e-76 < y < 2.15e7

              1. Initial program 97.5%

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

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

                  \[\leadsto \frac{\color{blue}{y \cdot x}}{1 + y} \]
                2. associate-*l/N/A

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

                  \[\leadsto \color{blue}{\frac{y}{1 + y} \cdot x} \]
                4. lower-/.f64N/A

                  \[\leadsto \color{blue}{\frac{y}{1 + y}} \cdot x \]
                5. lower-+.f6456.7

                  \[\leadsto \frac{y}{\color{blue}{1 + y}} \cdot x \]
              5. Applied rewrites56.7%

                \[\leadsto \color{blue}{\frac{y}{1 + y} \cdot x} \]
              6. Taylor expanded in y around 0

                \[\leadsto \color{blue}{x \cdot y} \]
              7. Step-by-step derivation
                1. *-commutativeN/A

                  \[\leadsto \color{blue}{y \cdot x} \]
                2. lower-*.f6454.9

                  \[\leadsto \color{blue}{y \cdot x} \]
              8. Applied rewrites54.9%

                \[\leadsto \color{blue}{y \cdot x} \]
            3. Recombined 3 regimes into one program.
            4. Add Preprocessing

            Alternative 14: 86.4% accurate, 1.2× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;y \leq -1:\\ \;\;\;\;x\\ \mathbf{elif}\;y \leq 1:\\ \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\ \mathbf{else}:\\ \;\;\;\;x\\ \end{array} \end{array} \]
            (FPCore (x y)
             :precision binary64
             (if (<= y -1.0) x (if (<= y 1.0) (fma y (+ x -1.0) 1.0) x)))
            double code(double x, double y) {
            	double tmp;
            	if (y <= -1.0) {
            		tmp = x;
            	} else if (y <= 1.0) {
            		tmp = fma(y, (x + -1.0), 1.0);
            	} else {
            		tmp = x;
            	}
            	return tmp;
            }
            
            function code(x, y)
            	tmp = 0.0
            	if (y <= -1.0)
            		tmp = x;
            	elseif (y <= 1.0)
            		tmp = fma(y, Float64(x + -1.0), 1.0);
            	else
            		tmp = x;
            	end
            	return tmp
            end
            
            code[x_, y_] := If[LessEqual[y, -1.0], x, If[LessEqual[y, 1.0], N[(y * N[(x + -1.0), $MachinePrecision] + 1.0), $MachinePrecision], x]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            \mathbf{if}\;y \leq -1:\\
            \;\;\;\;x\\
            
            \mathbf{elif}\;y \leq 1:\\
            \;\;\;\;\mathsf{fma}\left(y, x + -1, 1\right)\\
            
            \mathbf{else}:\\
            \;\;\;\;x\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 2 regimes
            2. if y < -1 or 1 < y

              1. Initial program 33.5%

                \[1 - \frac{\left(1 - x\right) \cdot y}{y + 1} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift--.f64N/A

                  \[\leadsto 1 - \frac{\color{blue}{\left(1 - x\right)} \cdot y}{y + 1} \]
                2. lift-*.f64N/A

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

                  \[\leadsto 1 - \frac{\left(1 - x\right) \cdot y}{\color{blue}{y + 1}} \]
                4. lift-/.f64N/A

                  \[\leadsto 1 - \color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}} \]
                5. *-lft-identityN/A

                  \[\leadsto 1 - \color{blue}{1 \cdot \frac{\left(1 - x\right) \cdot y}{y + 1}} \]
                6. cancel-sign-sub-invN/A

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

                  \[\leadsto 1 + \color{blue}{-1} \cdot \frac{\left(1 - x\right) \cdot y}{y + 1} \]
                8. neg-mul-1N/A

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

                  \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{\left(1 - x\right) \cdot y}{y + 1}\right)\right) + 1} \]
                10. lift-/.f64N/A

                  \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{\left(1 - x\right) \cdot y}{y + 1}}\right)\right) + 1 \]
                11. lift-*.f64N/A

                  \[\leadsto \left(\mathsf{neg}\left(\frac{\color{blue}{\left(1 - x\right) \cdot y}}{y + 1}\right)\right) + 1 \]
                12. associate-/l*N/A

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

                  \[\leadsto \left(\mathsf{neg}\left(\color{blue}{\frac{y}{y + 1} \cdot \left(1 - x\right)}\right)\right) + 1 \]
                14. distribute-lft-neg-inN/A

                  \[\leadsto \color{blue}{\left(\mathsf{neg}\left(\frac{y}{y + 1}\right)\right) \cdot \left(1 - x\right)} + 1 \]
                15. lower-fma.f64N/A

                  \[\leadsto \color{blue}{\mathsf{fma}\left(\mathsf{neg}\left(\frac{y}{y + 1}\right), 1 - x, 1\right)} \]
              4. Applied rewrites55.8%

                \[\leadsto \color{blue}{\mathsf{fma}\left(\frac{y}{-1 - y}, 1 - x, 1\right)} \]
              5. Taylor expanded in y around inf

                \[\leadsto \color{blue}{1 + -1 \cdot \left(1 - x\right)} \]
              6. Step-by-step derivation
                1. mul-1-negN/A

                  \[\leadsto 1 + \color{blue}{\left(\mathsf{neg}\left(\left(1 - x\right)\right)\right)} \]
                2. unsub-negN/A

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

                  \[\leadsto 1 - \color{blue}{\left(1 + \left(\mathsf{neg}\left(x\right)\right)\right)} \]
                4. associate--r+N/A

                  \[\leadsto \color{blue}{\left(1 - 1\right) - \left(\mathsf{neg}\left(x\right)\right)} \]
                5. metadata-evalN/A

                  \[\leadsto \color{blue}{0} - \left(\mathsf{neg}\left(x\right)\right) \]
                6. neg-sub0N/A

                  \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\mathsf{neg}\left(x\right)\right)\right)} \]
                7. remove-double-neg73.2

                  \[\leadsto \color{blue}{x} \]
              7. Applied rewrites73.2%

                \[\leadsto \color{blue}{x} \]

              if -1 < y < 1

              1. Initial program 100.0%

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

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

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

                  \[\leadsto \color{blue}{\mathsf{fma}\left(y, x - 1, 1\right)} \]
                3. sub-negN/A

                  \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + \left(\mathsf{neg}\left(1\right)\right)}, 1\right) \]
                4. metadata-evalN/A

                  \[\leadsto \mathsf{fma}\left(y, x + \color{blue}{-1}, 1\right) \]
                5. lower-+.f6498.1

                  \[\leadsto \mathsf{fma}\left(y, \color{blue}{x + -1}, 1\right) \]
              5. Applied rewrites98.1%

                \[\leadsto \color{blue}{\mathsf{fma}\left(y, x + -1, 1\right)} \]
            3. Recombined 2 regimes into one program.
            4. Add Preprocessing

            Alternative 15: 38.8% accurate, 26.0× speedup?

            \[\begin{array}{l} \\ 1 \end{array} \]
            (FPCore (x y) :precision binary64 1.0)
            double code(double x, double y) {
            	return 1.0;
            }
            
            real(8) function code(x, y)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                code = 1.0d0
            end function
            
            public static double code(double x, double y) {
            	return 1.0;
            }
            
            def code(x, y):
            	return 1.0
            
            function code(x, y)
            	return 1.0
            end
            
            function tmp = code(x, y)
            	tmp = 1.0;
            end
            
            code[x_, y_] := 1.0
            
            \begin{array}{l}
            
            \\
            1
            \end{array}
            
            Derivation
            1. Initial program 64.7%

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

              \[\leadsto \color{blue}{1} \]
            4. Step-by-step derivation
              1. Applied rewrites34.1%

                \[\leadsto \color{blue}{1} \]
              2. Add Preprocessing

              Alternative 16: 3.1% accurate, 26.0× speedup?

              \[\begin{array}{l} \\ 0 \end{array} \]
              (FPCore (x y) :precision binary64 0.0)
              double code(double x, double y) {
              	return 0.0;
              }
              
              real(8) function code(x, y)
                  real(8), intent (in) :: x
                  real(8), intent (in) :: y
                  code = 0.0d0
              end function
              
              public static double code(double x, double y) {
              	return 0.0;
              }
              
              def code(x, y):
              	return 0.0
              
              function code(x, y)
              	return 0.0
              end
              
              function tmp = code(x, y)
              	tmp = 0.0;
              end
              
              code[x_, y_] := 0.0
              
              \begin{array}{l}
              
              \\
              0
              \end{array}
              
              Derivation
              1. Initial program 64.7%

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

                \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
              4. Step-by-step derivation
                1. lower-/.f64N/A

                  \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
                2. lower-+.f6435.7

                  \[\leadsto 1 - \frac{y}{\color{blue}{1 + y}} \]
              5. Applied rewrites35.7%

                \[\leadsto 1 - \color{blue}{\frac{y}{1 + y}} \]
              6. Taylor expanded in y around inf

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

                  \[\leadsto 1 - \color{blue}{1} \]
                2. Step-by-step derivation
                  1. metadata-eval3.1

                    \[\leadsto \color{blue}{0} \]
                3. Applied rewrites3.1%

                  \[\leadsto \color{blue}{0} \]
                4. Add Preprocessing

                Developer Target 1: 99.6% accurate, 0.6× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{1}{y} - \left(\frac{x}{y} - x\right)\\ \mathbf{if}\;y < -3693.8482788297247:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y < 6799310503.41891:\\ \;\;\;\;1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (x y)
                 :precision binary64
                 (let* ((t_0 (- (/ 1.0 y) (- (/ x y) x))))
                   (if (< y -3693.8482788297247)
                     t_0
                     (if (< y 6799310503.41891) (- 1.0 (/ (* (- 1.0 x) y) (+ y 1.0))) t_0))))
                double code(double x, double y) {
                	double t_0 = (1.0 / y) - ((x / y) - x);
                	double tmp;
                	if (y < -3693.8482788297247) {
                		tmp = t_0;
                	} else if (y < 6799310503.41891) {
                		tmp = 1.0 - (((1.0 - x) * y) / (y + 1.0));
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                real(8) function code(x, y)
                    real(8), intent (in) :: x
                    real(8), intent (in) :: y
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = (1.0d0 / y) - ((x / y) - x)
                    if (y < (-3693.8482788297247d0)) then
                        tmp = t_0
                    else if (y < 6799310503.41891d0) then
                        tmp = 1.0d0 - (((1.0d0 - x) * y) / (y + 1.0d0))
                    else
                        tmp = t_0
                    end if
                    code = tmp
                end function
                
                public static double code(double x, double y) {
                	double t_0 = (1.0 / y) - ((x / y) - x);
                	double tmp;
                	if (y < -3693.8482788297247) {
                		tmp = t_0;
                	} else if (y < 6799310503.41891) {
                		tmp = 1.0 - (((1.0 - x) * y) / (y + 1.0));
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(x, y):
                	t_0 = (1.0 / y) - ((x / y) - x)
                	tmp = 0
                	if y < -3693.8482788297247:
                		tmp = t_0
                	elif y < 6799310503.41891:
                		tmp = 1.0 - (((1.0 - x) * y) / (y + 1.0))
                	else:
                		tmp = t_0
                	return tmp
                
                function code(x, y)
                	t_0 = Float64(Float64(1.0 / y) - Float64(Float64(x / y) - x))
                	tmp = 0.0
                	if (y < -3693.8482788297247)
                		tmp = t_0;
                	elseif (y < 6799310503.41891)
                		tmp = Float64(1.0 - Float64(Float64(Float64(1.0 - x) * y) / Float64(y + 1.0)));
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(x, y)
                	t_0 = (1.0 / y) - ((x / y) - x);
                	tmp = 0.0;
                	if (y < -3693.8482788297247)
                		tmp = t_0;
                	elseif (y < 6799310503.41891)
                		tmp = 1.0 - (((1.0 - x) * y) / (y + 1.0));
                	else
                		tmp = t_0;
                	end
                	tmp_2 = tmp;
                end
                
                code[x_, y_] := Block[{t$95$0 = N[(N[(1.0 / y), $MachinePrecision] - N[(N[(x / y), $MachinePrecision] - x), $MachinePrecision]), $MachinePrecision]}, If[Less[y, -3693.8482788297247], t$95$0, If[Less[y, 6799310503.41891], N[(1.0 - N[(N[(N[(1.0 - x), $MachinePrecision] * y), $MachinePrecision] / N[(y + 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], t$95$0]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{1}{y} - \left(\frac{x}{y} - x\right)\\
                \mathbf{if}\;y < -3693.8482788297247:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;y < 6799310503.41891:\\
                \;\;\;\;1 - \frac{\left(1 - x\right) \cdot y}{y + 1}\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                

                Reproduce

                ?
                herbie shell --seed 2024219 
                (FPCore (x y)
                  :name "Diagrams.Trail:splitAtParam  from diagrams-lib-1.3.0.3, D"
                  :precision binary64
                
                  :alt
                  (! :herbie-platform default (if (< y -36938482788297247/10000000000000) (- (/ 1 y) (- (/ x y) x)) (if (< y 679931050341891/100000) (- 1 (/ (* (- 1 x) y) (+ y 1))) (- (/ 1 y) (- (/ x y) x)))))
                
                  (- 1.0 (/ (* (- 1.0 x) y) (+ y 1.0))))