Diagrams.TwoD.Arc:arcBetween from diagrams-lib-1.3.0.3

Percentage Accurate: 51.2% → 79.8%
Time: 2.1s
Alternatives: 8
Speedup: 6.8×

Specification

?
\[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(y \cdot 4\right) \cdot y\\ \frac{x \cdot x - t\_0}{x \cdot x + t\_0} \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (* (* y 4.0) y))) (/ (- (* x x) t_0) (+ (* x x) t_0))))
double code(double x, double y) {
	double t_0 = (y * 4.0) * y;
	return ((x * x) - t_0) / ((x * x) + t_0);
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(x, y)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8) :: t_0
    t_0 = (y * 4.0d0) * y
    code = ((x * x) - t_0) / ((x * x) + t_0)
end function
public static double code(double x, double y) {
	double t_0 = (y * 4.0) * y;
	return ((x * x) - t_0) / ((x * x) + t_0);
}
def code(x, y):
	t_0 = (y * 4.0) * y
	return ((x * x) - t_0) / ((x * x) + t_0)
function code(x, y)
	t_0 = Float64(Float64(y * 4.0) * y)
	return Float64(Float64(Float64(x * x) - t_0) / Float64(Float64(x * x) + t_0))
end
function tmp = code(x, y)
	t_0 = (y * 4.0) * y;
	tmp = ((x * x) - t_0) / ((x * x) + t_0);
end
code[x_, y_] := Block[{t$95$0 = N[(N[(y * 4.0), $MachinePrecision] * y), $MachinePrecision]}, N[(N[(N[(x * x), $MachinePrecision] - t$95$0), $MachinePrecision] / N[(N[(x * x), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \left(y \cdot 4\right) \cdot y\\
\frac{x \cdot x - t\_0}{x \cdot x + t\_0}
\end{array}
\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 8 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: 51.2% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \left(y \cdot 4\right) \cdot y\\ \frac{x \cdot x - t\_0}{x \cdot x + t\_0} \end{array} \end{array} \]
(FPCore (x y)
 :precision binary64
 (let* ((t_0 (* (* y 4.0) y))) (/ (- (* x x) t_0) (+ (* x x) t_0))))
double code(double x, double y) {
	double t_0 = (y * 4.0) * y;
	return ((x * x) - t_0) / ((x * x) + t_0);
}
module fmin_fmax_functions
    implicit none
    private
    public fmax
    public fmin

    interface fmax
        module procedure fmax88
        module procedure fmax44
        module procedure fmax84
        module procedure fmax48
    end interface
    interface fmin
        module procedure fmin88
        module procedure fmin44
        module procedure fmin84
        module procedure fmin48
    end interface
contains
    real(8) function fmax88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(4) function fmax44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, max(x, y), y /= y), x /= x)
    end function
    real(8) function fmax84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmax48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
    end function
    real(8) function fmin88(x, y) result (res)
        real(8), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(4) function fmin44(x, y) result (res)
        real(4), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(y, merge(x, min(x, y), y /= y), x /= x)
    end function
    real(8) function fmin84(x, y) result(res)
        real(8), intent (in) :: x
        real(4), intent (in) :: y
        res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
    end function
    real(8) function fmin48(x, y) result(res)
        real(4), intent (in) :: x
        real(8), intent (in) :: y
        res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
    end function
end module

real(8) function code(x, y)
use fmin_fmax_functions
    real(8), intent (in) :: x
    real(8), intent (in) :: y
    real(8) :: t_0
    t_0 = (y * 4.0d0) * y
    code = ((x * x) - t_0) / ((x * x) + t_0)
end function
public static double code(double x, double y) {
	double t_0 = (y * 4.0) * y;
	return ((x * x) - t_0) / ((x * x) + t_0);
}
def code(x, y):
	t_0 = (y * 4.0) * y
	return ((x * x) - t_0) / ((x * x) + t_0)
function code(x, y)
	t_0 = Float64(Float64(y * 4.0) * y)
	return Float64(Float64(Float64(x * x) - t_0) / Float64(Float64(x * x) + t_0))
end
function tmp = code(x, y)
	t_0 = (y * 4.0) * y;
	tmp = ((x * x) - t_0) / ((x * x) + t_0);
end
code[x_, y_] := Block[{t$95$0 = N[(N[(y * 4.0), $MachinePrecision] * y), $MachinePrecision]}, N[(N[(N[(x * x), $MachinePrecision] - t$95$0), $MachinePrecision] / N[(N[(x * x), $MachinePrecision] + t$95$0), $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \left(y \cdot 4\right) \cdot y\\
\frac{x \cdot x - t\_0}{x \cdot x + t\_0}
\end{array}
\end{array}

Alternative 1: 79.8% accurate, 0.5× speedup?

\[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} t_0 := \mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)\\ t_1 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\ \mathbf{if}\;y\_m \leq 1.25 \cdot 10^{-158}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{x \cdot x - \left(y\_m \cdot 4\right) \cdot y\_m}{t\_0}\\ \mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{x \cdot x}{t\_0} - \frac{\left(4 \cdot y\_m\right) \cdot y\_m}{t\_0}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\ \end{array} \end{array} \]
y_m = (fabs.f64 y)
(FPCore (x y_m)
 :precision binary64
 (let* ((t_0 (fma (* 4.0 y_m) y_m (* x x)))
        (t_1 (fma (* (/ y_m x) (/ y_m x)) -8.0 1.0)))
   (if (<= y_m 1.25e-158)
     t_1
     (if (<= y_m 4.9e-55)
       (/ (- (* x x) (* (* y_m 4.0) y_m)) t_0)
       (if (<= y_m 9.5e-5)
         t_1
         (if (<= y_m 5.2e+121)
           (- (/ (* x x) t_0) (/ (* (* 4.0 y_m) y_m) t_0))
           (- (* (* (/ x y_m) (/ x y_m)) 0.5) 1.0)))))))
y_m = fabs(y);
double code(double x, double y_m) {
	double t_0 = fma((4.0 * y_m), y_m, (x * x));
	double t_1 = fma(((y_m / x) * (y_m / x)), -8.0, 1.0);
	double tmp;
	if (y_m <= 1.25e-158) {
		tmp = t_1;
	} else if (y_m <= 4.9e-55) {
		tmp = ((x * x) - ((y_m * 4.0) * y_m)) / t_0;
	} else if (y_m <= 9.5e-5) {
		tmp = t_1;
	} else if (y_m <= 5.2e+121) {
		tmp = ((x * x) / t_0) - (((4.0 * y_m) * y_m) / t_0);
	} else {
		tmp = (((x / y_m) * (x / y_m)) * 0.5) - 1.0;
	}
	return tmp;
}
y_m = abs(y)
function code(x, y_m)
	t_0 = fma(Float64(4.0 * y_m), y_m, Float64(x * x))
	t_1 = fma(Float64(Float64(y_m / x) * Float64(y_m / x)), -8.0, 1.0)
	tmp = 0.0
	if (y_m <= 1.25e-158)
		tmp = t_1;
	elseif (y_m <= 4.9e-55)
		tmp = Float64(Float64(Float64(x * x) - Float64(Float64(y_m * 4.0) * y_m)) / t_0);
	elseif (y_m <= 9.5e-5)
		tmp = t_1;
	elseif (y_m <= 5.2e+121)
		tmp = Float64(Float64(Float64(x * x) / t_0) - Float64(Float64(Float64(4.0 * y_m) * y_m) / t_0));
	else
		tmp = Float64(Float64(Float64(Float64(x / y_m) * Float64(x / y_m)) * 0.5) - 1.0);
	end
	return tmp
end
y_m = N[Abs[y], $MachinePrecision]
code[x_, y$95$m_] := Block[{t$95$0 = N[(N[(4.0 * y$95$m), $MachinePrecision] * y$95$m + N[(x * x), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(y$95$m / x), $MachinePrecision] * N[(y$95$m / x), $MachinePrecision]), $MachinePrecision] * -8.0 + 1.0), $MachinePrecision]}, If[LessEqual[y$95$m, 1.25e-158], t$95$1, If[LessEqual[y$95$m, 4.9e-55], N[(N[(N[(x * x), $MachinePrecision] - N[(N[(y$95$m * 4.0), $MachinePrecision] * y$95$m), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision], If[LessEqual[y$95$m, 9.5e-5], t$95$1, If[LessEqual[y$95$m, 5.2e+121], N[(N[(N[(x * x), $MachinePrecision] / t$95$0), $MachinePrecision] - N[(N[(N[(4.0 * y$95$m), $MachinePrecision] * y$95$m), $MachinePrecision] / t$95$0), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(x / y$95$m), $MachinePrecision] * N[(x / y$95$m), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision] - 1.0), $MachinePrecision]]]]]]]
\begin{array}{l}
y_m = \left|y\right|

\\
\begin{array}{l}
t_0 := \mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)\\
t_1 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\
\mathbf{if}\;y\_m \leq 1.25 \cdot 10^{-158}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\
\;\;\;\;\frac{x \cdot x - \left(y\_m \cdot 4\right) \cdot y\_m}{t\_0}\\

\mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\
\;\;\;\;\frac{x \cdot x}{t\_0} - \frac{\left(4 \cdot y\_m\right) \cdot y\_m}{t\_0}\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\


\end{array}
\end{array}
Derivation
  1. Split input into 4 regimes
  2. if y < 1.24999999999999993e-158 or 4.90000000000000035e-55 < y < 9.5000000000000005e-5

    1. Initial program 45.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6450.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6457.4

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites57.4%

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

    if 1.24999999999999993e-158 < y < 4.90000000000000035e-55

    1. Initial program 77.3%

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

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

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

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

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

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

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

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(y \cdot 4, y, {x}^{2}\right)}} \]
      8. *-commutativeN/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, \color{blue}{x \cdot x}\right)} \]
      11. lift-*.f6477.3

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

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

    if 9.5000000000000005e-5 < y < 5.1999999999999998e121

    1. Initial program 73.0%

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

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

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

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

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

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

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

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

        \[\leadsto \frac{{x}^{2} - \left(y \cdot 4\right) \cdot y}{x \cdot x + \color{blue}{\left(y \cdot 4\right) \cdot y}} \]
      9. div-subN/A

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

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

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

    if 5.1999999999999998e121 < y

    1. Initial program 26.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f645.0

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6413.0

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites13.0%

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - 1} \]
    9. Step-by-step derivation
      1. pow2N/A

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

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

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      4. *-commutativeN/A

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      5. pow2N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{\color{blue}{{y}^{2}}} - 1 \]
      6. lower--.f64N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - \color{blue}{1} \]
      7. *-commutativeN/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      8. lower-*.f64N/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      9. pow2N/A

        \[\leadsto \frac{x \cdot x}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x}{y \cdot y} \cdot \frac{1}{2} - 1 \]
      11. times-fracN/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      12. pow2N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      13. lower-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      14. lower-/.f6491.0

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot 0.5 - 1 \]
    10. Applied rewrites91.0%

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

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      2. lift-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      3. unpow2N/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      4. lower-*.f64N/A

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

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      6. lift-/.f6491.0

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
    12. Applied rewrites91.0%

      \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
  3. Recombined 4 regimes into one program.
  4. Final simplification66.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq 1.25 \cdot 10^{-158}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{elif}\;y \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{x \cdot x}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} - \frac{\left(4 \cdot y\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1\\ \end{array} \]
  5. Add Preprocessing

Alternative 2: 79.8% accurate, 0.5× speedup?

\[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} t_0 := x \cdot x - \left(y\_m \cdot 4\right) \cdot y\_m\\ t_1 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\ \mathbf{if}\;y\_m \leq 1.25 \cdot 10^{-158}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{t\_0}{\mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)}\\ \mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{t\_0}{\left(\frac{x \cdot x}{y\_m \cdot y\_m} + 4\right) \cdot \left(y\_m \cdot y\_m\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\ \end{array} \end{array} \]
y_m = (fabs.f64 y)
(FPCore (x y_m)
 :precision binary64
 (let* ((t_0 (- (* x x) (* (* y_m 4.0) y_m)))
        (t_1 (fma (* (/ y_m x) (/ y_m x)) -8.0 1.0)))
   (if (<= y_m 1.25e-158)
     t_1
     (if (<= y_m 4.9e-55)
       (/ t_0 (fma (* 4.0 y_m) y_m (* x x)))
       (if (<= y_m 9.5e-5)
         t_1
         (if (<= y_m 5.2e+121)
           (/ t_0 (* (+ (/ (* x x) (* y_m y_m)) 4.0) (* y_m y_m)))
           (- (* (* (/ x y_m) (/ x y_m)) 0.5) 1.0)))))))
y_m = fabs(y);
double code(double x, double y_m) {
	double t_0 = (x * x) - ((y_m * 4.0) * y_m);
	double t_1 = fma(((y_m / x) * (y_m / x)), -8.0, 1.0);
	double tmp;
	if (y_m <= 1.25e-158) {
		tmp = t_1;
	} else if (y_m <= 4.9e-55) {
		tmp = t_0 / fma((4.0 * y_m), y_m, (x * x));
	} else if (y_m <= 9.5e-5) {
		tmp = t_1;
	} else if (y_m <= 5.2e+121) {
		tmp = t_0 / ((((x * x) / (y_m * y_m)) + 4.0) * (y_m * y_m));
	} else {
		tmp = (((x / y_m) * (x / y_m)) * 0.5) - 1.0;
	}
	return tmp;
}
y_m = abs(y)
function code(x, y_m)
	t_0 = Float64(Float64(x * x) - Float64(Float64(y_m * 4.0) * y_m))
	t_1 = fma(Float64(Float64(y_m / x) * Float64(y_m / x)), -8.0, 1.0)
	tmp = 0.0
	if (y_m <= 1.25e-158)
		tmp = t_1;
	elseif (y_m <= 4.9e-55)
		tmp = Float64(t_0 / fma(Float64(4.0 * y_m), y_m, Float64(x * x)));
	elseif (y_m <= 9.5e-5)
		tmp = t_1;
	elseif (y_m <= 5.2e+121)
		tmp = Float64(t_0 / Float64(Float64(Float64(Float64(x * x) / Float64(y_m * y_m)) + 4.0) * Float64(y_m * y_m)));
	else
		tmp = Float64(Float64(Float64(Float64(x / y_m) * Float64(x / y_m)) * 0.5) - 1.0);
	end
	return tmp
end
y_m = N[Abs[y], $MachinePrecision]
code[x_, y$95$m_] := Block[{t$95$0 = N[(N[(x * x), $MachinePrecision] - N[(N[(y$95$m * 4.0), $MachinePrecision] * y$95$m), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(y$95$m / x), $MachinePrecision] * N[(y$95$m / x), $MachinePrecision]), $MachinePrecision] * -8.0 + 1.0), $MachinePrecision]}, If[LessEqual[y$95$m, 1.25e-158], t$95$1, If[LessEqual[y$95$m, 4.9e-55], N[(t$95$0 / N[(N[(4.0 * y$95$m), $MachinePrecision] * y$95$m + N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[y$95$m, 9.5e-5], t$95$1, If[LessEqual[y$95$m, 5.2e+121], N[(t$95$0 / N[(N[(N[(N[(x * x), $MachinePrecision] / N[(y$95$m * y$95$m), $MachinePrecision]), $MachinePrecision] + 4.0), $MachinePrecision] * N[(y$95$m * y$95$m), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(N[(N[(x / y$95$m), $MachinePrecision] * N[(x / y$95$m), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision] - 1.0), $MachinePrecision]]]]]]]
\begin{array}{l}
y_m = \left|y\right|

\\
\begin{array}{l}
t_0 := x \cdot x - \left(y\_m \cdot 4\right) \cdot y\_m\\
t_1 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\
\mathbf{if}\;y\_m \leq 1.25 \cdot 10^{-158}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\
\;\;\;\;\frac{t\_0}{\mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)}\\

\mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\
\;\;\;\;\frac{t\_0}{\left(\frac{x \cdot x}{y\_m \cdot y\_m} + 4\right) \cdot \left(y\_m \cdot y\_m\right)}\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\


\end{array}
\end{array}
Derivation
  1. Split input into 4 regimes
  2. if y < 1.24999999999999993e-158 or 4.90000000000000035e-55 < y < 9.5000000000000005e-5

    1. Initial program 45.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6450.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6457.4

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites57.4%

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

    if 1.24999999999999993e-158 < y < 4.90000000000000035e-55

    1. Initial program 77.3%

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

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

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

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

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

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

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

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(y \cdot 4, y, {x}^{2}\right)}} \]
      8. *-commutativeN/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, \color{blue}{x \cdot x}\right)} \]
      11. lift-*.f6477.3

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

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

    if 9.5000000000000005e-5 < y < 5.1999999999999998e121

    1. Initial program 73.0%

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

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

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

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

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

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

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{{x}^{2}}{{y}^{2}} + 4\right) \cdot {y}^{2}} \]
      6. pow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{x \cdot x}{{y}^{2}} + 4\right) \cdot {y}^{2}} \]
      7. lift-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{x \cdot x}{{y}^{2}} + 4\right) \cdot {y}^{2}} \]
      8. unpow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{x \cdot x}{y \cdot y} + 4\right) \cdot {y}^{2}} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{x \cdot x}{y \cdot y} + 4\right) \cdot {y}^{2}} \]
      10. unpow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{x \cdot x}{y \cdot y} + 4\right) \cdot \left(y \cdot \color{blue}{y}\right)} \]
      11. lower-*.f6473.0

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

      \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\left(\frac{x \cdot x}{y \cdot y} + 4\right) \cdot \left(y \cdot y\right)}} \]

    if 5.1999999999999998e121 < y

    1. Initial program 26.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f645.0

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6413.0

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites13.0%

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - 1} \]
    9. Step-by-step derivation
      1. pow2N/A

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

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

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      4. *-commutativeN/A

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      5. pow2N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{\color{blue}{{y}^{2}}} - 1 \]
      6. lower--.f64N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - \color{blue}{1} \]
      7. *-commutativeN/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      8. lower-*.f64N/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      9. pow2N/A

        \[\leadsto \frac{x \cdot x}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x}{y \cdot y} \cdot \frac{1}{2} - 1 \]
      11. times-fracN/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      12. pow2N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      13. lower-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      14. lower-/.f6491.0

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot 0.5 - 1 \]
    10. Applied rewrites91.0%

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

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      2. lift-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      3. unpow2N/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      4. lower-*.f64N/A

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

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      6. lift-/.f6491.0

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
    12. Applied rewrites91.0%

      \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
  3. Recombined 4 regimes into one program.
  4. Final simplification66.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq 1.25 \cdot 10^{-158}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{elif}\;y \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\left(\frac{x \cdot x}{y \cdot y} + 4\right) \cdot \left(y \cdot y\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1\\ \end{array} \]
  5. Add Preprocessing

Alternative 3: 79.8% accurate, 0.7× speedup?

\[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} t_0 := \mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)\\ t_1 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\ \mathbf{if}\;y\_m \leq 1.25 \cdot 10^{-158}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{x \cdot x - \left(y\_m \cdot 4\right) \cdot y\_m}{t\_0}\\ \mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{\mathsf{fma}\left(y\_m \cdot y\_m, -4, x \cdot x\right)}{t\_0}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\ \end{array} \end{array} \]
y_m = (fabs.f64 y)
(FPCore (x y_m)
 :precision binary64
 (let* ((t_0 (fma (* 4.0 y_m) y_m (* x x)))
        (t_1 (fma (* (/ y_m x) (/ y_m x)) -8.0 1.0)))
   (if (<= y_m 1.25e-158)
     t_1
     (if (<= y_m 4.9e-55)
       (/ (- (* x x) (* (* y_m 4.0) y_m)) t_0)
       (if (<= y_m 9.5e-5)
         t_1
         (if (<= y_m 5.2e+121)
           (/ (fma (* y_m y_m) -4.0 (* x x)) t_0)
           (- (* (* (/ x y_m) (/ x y_m)) 0.5) 1.0)))))))
y_m = fabs(y);
double code(double x, double y_m) {
	double t_0 = fma((4.0 * y_m), y_m, (x * x));
	double t_1 = fma(((y_m / x) * (y_m / x)), -8.0, 1.0);
	double tmp;
	if (y_m <= 1.25e-158) {
		tmp = t_1;
	} else if (y_m <= 4.9e-55) {
		tmp = ((x * x) - ((y_m * 4.0) * y_m)) / t_0;
	} else if (y_m <= 9.5e-5) {
		tmp = t_1;
	} else if (y_m <= 5.2e+121) {
		tmp = fma((y_m * y_m), -4.0, (x * x)) / t_0;
	} else {
		tmp = (((x / y_m) * (x / y_m)) * 0.5) - 1.0;
	}
	return tmp;
}
y_m = abs(y)
function code(x, y_m)
	t_0 = fma(Float64(4.0 * y_m), y_m, Float64(x * x))
	t_1 = fma(Float64(Float64(y_m / x) * Float64(y_m / x)), -8.0, 1.0)
	tmp = 0.0
	if (y_m <= 1.25e-158)
		tmp = t_1;
	elseif (y_m <= 4.9e-55)
		tmp = Float64(Float64(Float64(x * x) - Float64(Float64(y_m * 4.0) * y_m)) / t_0);
	elseif (y_m <= 9.5e-5)
		tmp = t_1;
	elseif (y_m <= 5.2e+121)
		tmp = Float64(fma(Float64(y_m * y_m), -4.0, Float64(x * x)) / t_0);
	else
		tmp = Float64(Float64(Float64(Float64(x / y_m) * Float64(x / y_m)) * 0.5) - 1.0);
	end
	return tmp
end
y_m = N[Abs[y], $MachinePrecision]
code[x_, y$95$m_] := Block[{t$95$0 = N[(N[(4.0 * y$95$m), $MachinePrecision] * y$95$m + N[(x * x), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(y$95$m / x), $MachinePrecision] * N[(y$95$m / x), $MachinePrecision]), $MachinePrecision] * -8.0 + 1.0), $MachinePrecision]}, If[LessEqual[y$95$m, 1.25e-158], t$95$1, If[LessEqual[y$95$m, 4.9e-55], N[(N[(N[(x * x), $MachinePrecision] - N[(N[(y$95$m * 4.0), $MachinePrecision] * y$95$m), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision], If[LessEqual[y$95$m, 9.5e-5], t$95$1, If[LessEqual[y$95$m, 5.2e+121], N[(N[(N[(y$95$m * y$95$m), $MachinePrecision] * -4.0 + N[(x * x), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision], N[(N[(N[(N[(x / y$95$m), $MachinePrecision] * N[(x / y$95$m), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision] - 1.0), $MachinePrecision]]]]]]]
\begin{array}{l}
y_m = \left|y\right|

\\
\begin{array}{l}
t_0 := \mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)\\
t_1 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\
\mathbf{if}\;y\_m \leq 1.25 \cdot 10^{-158}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\
\;\;\;\;\frac{x \cdot x - \left(y\_m \cdot 4\right) \cdot y\_m}{t\_0}\\

\mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\
\;\;\;\;\frac{\mathsf{fma}\left(y\_m \cdot y\_m, -4, x \cdot x\right)}{t\_0}\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\


\end{array}
\end{array}
Derivation
  1. Split input into 4 regimes
  2. if y < 1.24999999999999993e-158 or 4.90000000000000035e-55 < y < 9.5000000000000005e-5

    1. Initial program 45.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6450.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6457.4

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites57.4%

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

    if 1.24999999999999993e-158 < y < 4.90000000000000035e-55

    1. Initial program 77.3%

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

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

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

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

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

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

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

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(y \cdot 4, y, {x}^{2}\right)}} \]
      8. *-commutativeN/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, \color{blue}{x \cdot x}\right)} \]
      11. lift-*.f6477.3

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

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

    if 9.5000000000000005e-5 < y < 5.1999999999999998e121

    1. Initial program 73.0%

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

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

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

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

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

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

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

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(y \cdot 4, y, {x}^{2}\right)}} \]
      8. *-commutativeN/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, \color{blue}{x \cdot x}\right)} \]
      11. lift-*.f6473.0

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

      \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}} \]
    5. Step-by-step derivation
      1. lift--.f64N/A

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

        \[\leadsto \frac{\color{blue}{x \cdot x} - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      3. pow2N/A

        \[\leadsto \frac{\color{blue}{{x}^{2}} - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      4. lift-*.f64N/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{\left(y \cdot 4\right) \cdot y}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      5. lift-*.f64N/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{\left(y \cdot 4\right)} \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      6. *-commutativeN/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{\left(4 \cdot y\right)} \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      7. associate-*l*N/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{4 \cdot \left(y \cdot y\right)}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      8. pow2N/A

        \[\leadsto \frac{{x}^{2} - 4 \cdot \color{blue}{{y}^{2}}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      9. fp-cancel-sub-sign-invN/A

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

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

        \[\leadsto \frac{\color{blue}{-4 \cdot {y}^{2} + {x}^{2}}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      12. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{{y}^{2} \cdot -4} + {x}^{2}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      13. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({y}^{2}, -4, {x}^{2}\right)}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      14. pow2N/A

        \[\leadsto \frac{\mathsf{fma}\left(\color{blue}{y \cdot y}, -4, {x}^{2}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      15. lift-*.f64N/A

        \[\leadsto \frac{\mathsf{fma}\left(\color{blue}{y \cdot y}, -4, {x}^{2}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      16. pow2N/A

        \[\leadsto \frac{\mathsf{fma}\left(y \cdot y, -4, \color{blue}{x \cdot x}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      17. lift-*.f6473.0

        \[\leadsto \frac{\mathsf{fma}\left(y \cdot y, -4, \color{blue}{x \cdot x}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
    6. Applied rewrites73.0%

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

    if 5.1999999999999998e121 < y

    1. Initial program 26.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f645.0

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6413.0

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites13.0%

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - 1} \]
    9. Step-by-step derivation
      1. pow2N/A

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

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

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      4. *-commutativeN/A

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      5. pow2N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{\color{blue}{{y}^{2}}} - 1 \]
      6. lower--.f64N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - \color{blue}{1} \]
      7. *-commutativeN/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      8. lower-*.f64N/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      9. pow2N/A

        \[\leadsto \frac{x \cdot x}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x}{y \cdot y} \cdot \frac{1}{2} - 1 \]
      11. times-fracN/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      12. pow2N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      13. lower-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      14. lower-/.f6491.0

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot 0.5 - 1 \]
    10. Applied rewrites91.0%

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

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      2. lift-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      3. unpow2N/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      4. lower-*.f64N/A

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

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      6. lift-/.f6491.0

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
    12. Applied rewrites91.0%

      \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
  3. Recombined 4 regimes into one program.
  4. Final simplification66.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq 1.25 \cdot 10^{-158}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{elif}\;y \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{\mathsf{fma}\left(y \cdot y, -4, x \cdot x\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 79.8% accurate, 0.7× speedup?

\[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} t_0 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\ t_1 := \frac{\mathsf{fma}\left(y\_m \cdot y\_m, -4, x \cdot x\right)}{\mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)}\\ \mathbf{if}\;y\_m \leq 1.8 \cdot 10^{-158}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;t\_1\\ \mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;t\_1\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\ \end{array} \end{array} \]
y_m = (fabs.f64 y)
(FPCore (x y_m)
 :precision binary64
 (let* ((t_0 (fma (* (/ y_m x) (/ y_m x)) -8.0 1.0))
        (t_1 (/ (fma (* y_m y_m) -4.0 (* x x)) (fma (* 4.0 y_m) y_m (* x x)))))
   (if (<= y_m 1.8e-158)
     t_0
     (if (<= y_m 4.9e-55)
       t_1
       (if (<= y_m 9.5e-5)
         t_0
         (if (<= y_m 5.2e+121)
           t_1
           (- (* (* (/ x y_m) (/ x y_m)) 0.5) 1.0)))))))
y_m = fabs(y);
double code(double x, double y_m) {
	double t_0 = fma(((y_m / x) * (y_m / x)), -8.0, 1.0);
	double t_1 = fma((y_m * y_m), -4.0, (x * x)) / fma((4.0 * y_m), y_m, (x * x));
	double tmp;
	if (y_m <= 1.8e-158) {
		tmp = t_0;
	} else if (y_m <= 4.9e-55) {
		tmp = t_1;
	} else if (y_m <= 9.5e-5) {
		tmp = t_0;
	} else if (y_m <= 5.2e+121) {
		tmp = t_1;
	} else {
		tmp = (((x / y_m) * (x / y_m)) * 0.5) - 1.0;
	}
	return tmp;
}
y_m = abs(y)
function code(x, y_m)
	t_0 = fma(Float64(Float64(y_m / x) * Float64(y_m / x)), -8.0, 1.0)
	t_1 = Float64(fma(Float64(y_m * y_m), -4.0, Float64(x * x)) / fma(Float64(4.0 * y_m), y_m, Float64(x * x)))
	tmp = 0.0
	if (y_m <= 1.8e-158)
		tmp = t_0;
	elseif (y_m <= 4.9e-55)
		tmp = t_1;
	elseif (y_m <= 9.5e-5)
		tmp = t_0;
	elseif (y_m <= 5.2e+121)
		tmp = t_1;
	else
		tmp = Float64(Float64(Float64(Float64(x / y_m) * Float64(x / y_m)) * 0.5) - 1.0);
	end
	return tmp
end
y_m = N[Abs[y], $MachinePrecision]
code[x_, y$95$m_] := Block[{t$95$0 = N[(N[(N[(y$95$m / x), $MachinePrecision] * N[(y$95$m / x), $MachinePrecision]), $MachinePrecision] * -8.0 + 1.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[(N[(y$95$m * y$95$m), $MachinePrecision] * -4.0 + N[(x * x), $MachinePrecision]), $MachinePrecision] / N[(N[(4.0 * y$95$m), $MachinePrecision] * y$95$m + N[(x * x), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[y$95$m, 1.8e-158], t$95$0, If[LessEqual[y$95$m, 4.9e-55], t$95$1, If[LessEqual[y$95$m, 9.5e-5], t$95$0, If[LessEqual[y$95$m, 5.2e+121], t$95$1, N[(N[(N[(N[(x / y$95$m), $MachinePrecision] * N[(x / y$95$m), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision] - 1.0), $MachinePrecision]]]]]]]
\begin{array}{l}
y_m = \left|y\right|

\\
\begin{array}{l}
t_0 := \mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\
t_1 := \frac{\mathsf{fma}\left(y\_m \cdot y\_m, -4, x \cdot x\right)}{\mathsf{fma}\left(4 \cdot y\_m, y\_m, x \cdot x\right)}\\
\mathbf{if}\;y\_m \leq 1.8 \cdot 10^{-158}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;y\_m \leq 4.9 \cdot 10^{-55}:\\
\;\;\;\;t\_1\\

\mathbf{elif}\;y\_m \leq 9.5 \cdot 10^{-5}:\\
\;\;\;\;t\_0\\

\mathbf{elif}\;y\_m \leq 5.2 \cdot 10^{+121}:\\
\;\;\;\;t\_1\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if y < 1.79999999999999995e-158 or 4.90000000000000035e-55 < y < 9.5000000000000005e-5

    1. Initial program 45.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6450.8

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6457.4

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites57.4%

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

    if 1.79999999999999995e-158 < y < 4.90000000000000035e-55 or 9.5000000000000005e-5 < y < 5.1999999999999998e121

    1. Initial program 74.9%

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

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

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

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

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

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

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

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(y \cdot 4, y, {x}^{2}\right)}} \]
      8. *-commutativeN/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      9. lower-*.f64N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(\color{blue}{4 \cdot y}, y, {x}^{2}\right)} \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, \color{blue}{x \cdot x}\right)} \]
      11. lift-*.f6474.9

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

      \[\leadsto \frac{x \cdot x - \left(y \cdot 4\right) \cdot y}{\color{blue}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}} \]
    5. Step-by-step derivation
      1. lift--.f64N/A

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

        \[\leadsto \frac{\color{blue}{x \cdot x} - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      3. pow2N/A

        \[\leadsto \frac{\color{blue}{{x}^{2}} - \left(y \cdot 4\right) \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      4. lift-*.f64N/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{\left(y \cdot 4\right) \cdot y}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      5. lift-*.f64N/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{\left(y \cdot 4\right)} \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      6. *-commutativeN/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{\left(4 \cdot y\right)} \cdot y}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      7. associate-*l*N/A

        \[\leadsto \frac{{x}^{2} - \color{blue}{4 \cdot \left(y \cdot y\right)}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      8. pow2N/A

        \[\leadsto \frac{{x}^{2} - 4 \cdot \color{blue}{{y}^{2}}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      9. fp-cancel-sub-sign-invN/A

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

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

        \[\leadsto \frac{\color{blue}{-4 \cdot {y}^{2} + {x}^{2}}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      12. *-commutativeN/A

        \[\leadsto \frac{\color{blue}{{y}^{2} \cdot -4} + {x}^{2}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      13. lower-fma.f64N/A

        \[\leadsto \frac{\color{blue}{\mathsf{fma}\left({y}^{2}, -4, {x}^{2}\right)}}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      14. pow2N/A

        \[\leadsto \frac{\mathsf{fma}\left(\color{blue}{y \cdot y}, -4, {x}^{2}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      15. lift-*.f64N/A

        \[\leadsto \frac{\mathsf{fma}\left(\color{blue}{y \cdot y}, -4, {x}^{2}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      16. pow2N/A

        \[\leadsto \frac{\mathsf{fma}\left(y \cdot y, -4, \color{blue}{x \cdot x}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
      17. lift-*.f6474.9

        \[\leadsto \frac{\mathsf{fma}\left(y \cdot y, -4, \color{blue}{x \cdot x}\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)} \]
    6. Applied rewrites74.9%

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

    if 5.1999999999999998e121 < y

    1. Initial program 26.2%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f645.0

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6413.0

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites13.0%

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - 1} \]
    9. Step-by-step derivation
      1. pow2N/A

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

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

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      4. *-commutativeN/A

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      5. pow2N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{\color{blue}{{y}^{2}}} - 1 \]
      6. lower--.f64N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - \color{blue}{1} \]
      7. *-commutativeN/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      8. lower-*.f64N/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      9. pow2N/A

        \[\leadsto \frac{x \cdot x}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x}{y \cdot y} \cdot \frac{1}{2} - 1 \]
      11. times-fracN/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      12. pow2N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      13. lower-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      14. lower-/.f6491.0

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot 0.5 - 1 \]
    10. Applied rewrites91.0%

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

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      2. lift-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      3. unpow2N/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      4. lower-*.f64N/A

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

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      6. lift-/.f6491.0

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
    12. Applied rewrites91.0%

      \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
  3. Recombined 3 regimes into one program.
  4. Final simplification66.2%

    \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq 1.8 \cdot 10^{-158}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 4.9 \cdot 10^{-55}:\\ \;\;\;\;\frac{\mathsf{fma}\left(y \cdot y, -4, x \cdot x\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{elif}\;y \leq 9.5 \cdot 10^{-5}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{elif}\;y \leq 5.2 \cdot 10^{+121}:\\ \;\;\;\;\frac{\mathsf{fma}\left(y \cdot y, -4, x \cdot x\right)}{\mathsf{fma}\left(4 \cdot y, y, x \cdot x\right)}\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 75.8% accurate, 0.9× speedup?

\[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} \mathbf{if}\;\left(y\_m \cdot 4\right) \cdot y\_m \leq 5 \cdot 10^{+25}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\ \end{array} \end{array} \]
y_m = (fabs.f64 y)
(FPCore (x y_m)
 :precision binary64
 (if (<= (* (* y_m 4.0) y_m) 5e+25)
   (fma (* (/ y_m x) (/ y_m x)) -8.0 1.0)
   (- (* (* (/ x y_m) (/ x y_m)) 0.5) 1.0)))
y_m = fabs(y);
double code(double x, double y_m) {
	double tmp;
	if (((y_m * 4.0) * y_m) <= 5e+25) {
		tmp = fma(((y_m / x) * (y_m / x)), -8.0, 1.0);
	} else {
		tmp = (((x / y_m) * (x / y_m)) * 0.5) - 1.0;
	}
	return tmp;
}
y_m = abs(y)
function code(x, y_m)
	tmp = 0.0
	if (Float64(Float64(y_m * 4.0) * y_m) <= 5e+25)
		tmp = fma(Float64(Float64(y_m / x) * Float64(y_m / x)), -8.0, 1.0);
	else
		tmp = Float64(Float64(Float64(Float64(x / y_m) * Float64(x / y_m)) * 0.5) - 1.0);
	end
	return tmp
end
y_m = N[Abs[y], $MachinePrecision]
code[x_, y$95$m_] := If[LessEqual[N[(N[(y$95$m * 4.0), $MachinePrecision] * y$95$m), $MachinePrecision], 5e+25], N[(N[(N[(y$95$m / x), $MachinePrecision] * N[(y$95$m / x), $MachinePrecision]), $MachinePrecision] * -8.0 + 1.0), $MachinePrecision], N[(N[(N[(N[(x / y$95$m), $MachinePrecision] * N[(x / y$95$m), $MachinePrecision]), $MachinePrecision] * 0.5), $MachinePrecision] - 1.0), $MachinePrecision]]
\begin{array}{l}
y_m = \left|y\right|

\\
\begin{array}{l}
\mathbf{if}\;\left(y\_m \cdot 4\right) \cdot y\_m \leq 5 \cdot 10^{+25}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\

\mathbf{else}:\\
\;\;\;\;\left(\frac{x}{y\_m} \cdot \frac{x}{y\_m}\right) \cdot 0.5 - 1\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 (*.f64 y #s(literal 4 binary64)) y) < 5.00000000000000024e25

    1. Initial program 60.9%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6471.1

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6477.8

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites77.8%

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

    if 5.00000000000000024e25 < (*.f64 (*.f64 y #s(literal 4 binary64)) y)

    1. Initial program 34.3%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6413.7

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6418.3

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites18.3%

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

      \[\leadsto \color{blue}{\frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - 1} \]
    9. Step-by-step derivation
      1. pow2N/A

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

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

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      4. *-commutativeN/A

        \[\leadsto \frac{1}{2} \cdot \frac{\color{blue}{{x}^{2}}}{{y}^{2}} - 1 \]
      5. pow2N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{\color{blue}{{y}^{2}}} - 1 \]
      6. lower--.f64N/A

        \[\leadsto \frac{1}{2} \cdot \frac{{x}^{2}}{{y}^{2}} - \color{blue}{1} \]
      7. *-commutativeN/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      8. lower-*.f64N/A

        \[\leadsto \frac{{x}^{2}}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      9. pow2N/A

        \[\leadsto \frac{x \cdot x}{{y}^{2}} \cdot \frac{1}{2} - 1 \]
      10. pow2N/A

        \[\leadsto \frac{x \cdot x}{y \cdot y} \cdot \frac{1}{2} - 1 \]
      11. times-fracN/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      12. pow2N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      13. lower-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      14. lower-/.f6485.1

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot 0.5 - 1 \]
    10. Applied rewrites85.1%

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

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      2. lift-pow.f64N/A

        \[\leadsto {\left(\frac{x}{y}\right)}^{2} \cdot \frac{1}{2} - 1 \]
      3. unpow2N/A

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      4. lower-*.f64N/A

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

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot \frac{1}{2} - 1 \]
      6. lift-/.f6485.1

        \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
    12. Applied rewrites85.1%

      \[\leadsto \left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1 \]
  3. Recombined 2 regimes into one program.
  4. Final simplification81.4%

    \[\leadsto \begin{array}{l} \mathbf{if}\;\left(y \cdot 4\right) \cdot y \leq 5 \cdot 10^{+25}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\frac{x}{y} \cdot \frac{x}{y}\right) \cdot 0.5 - 1\\ \end{array} \]
  5. Add Preprocessing

Alternative 6: 75.3% accurate, 1.0× speedup?

\[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} \mathbf{if}\;\left(y\_m \cdot 4\right) \cdot y\_m \leq 5 \cdot 10^{+25}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\ \mathbf{else}:\\ \;\;\;\;-1\\ \end{array} \end{array} \]
y_m = (fabs.f64 y)
(FPCore (x y_m)
 :precision binary64
 (if (<= (* (* y_m 4.0) y_m) 5e+25)
   (fma (* (/ y_m x) (/ y_m x)) -8.0 1.0)
   -1.0))
y_m = fabs(y);
double code(double x, double y_m) {
	double tmp;
	if (((y_m * 4.0) * y_m) <= 5e+25) {
		tmp = fma(((y_m / x) * (y_m / x)), -8.0, 1.0);
	} else {
		tmp = -1.0;
	}
	return tmp;
}
y_m = abs(y)
function code(x, y_m)
	tmp = 0.0
	if (Float64(Float64(y_m * 4.0) * y_m) <= 5e+25)
		tmp = fma(Float64(Float64(y_m / x) * Float64(y_m / x)), -8.0, 1.0);
	else
		tmp = -1.0;
	end
	return tmp
end
y_m = N[Abs[y], $MachinePrecision]
code[x_, y$95$m_] := If[LessEqual[N[(N[(y$95$m * 4.0), $MachinePrecision] * y$95$m), $MachinePrecision], 5e+25], N[(N[(N[(y$95$m / x), $MachinePrecision] * N[(y$95$m / x), $MachinePrecision]), $MachinePrecision] * -8.0 + 1.0), $MachinePrecision], -1.0]
\begin{array}{l}
y_m = \left|y\right|

\\
\begin{array}{l}
\mathbf{if}\;\left(y\_m \cdot 4\right) \cdot y\_m \leq 5 \cdot 10^{+25}:\\
\;\;\;\;\mathsf{fma}\left(\frac{y\_m}{x} \cdot \frac{y\_m}{x}, -8, 1\right)\\

\mathbf{else}:\\
\;\;\;\;-1\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (*.f64 (*.f64 y #s(literal 4 binary64)) y) < 5.00000000000000024e25

    1. Initial program 60.9%

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

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

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

        \[\leadsto \mathsf{fma}\left(-8, \color{blue}{\frac{{y}^{2}}{{x}^{2}}}, 1\right) \]
      3. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{{y}^{2}}{\color{blue}{{x}^{2}}}, 1\right) \]
      4. unpow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      5. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{{\color{blue}{x}}^{2}}, 1\right) \]
      6. pow2N/A

        \[\leadsto \mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot \color{blue}{x}}, 1\right) \]
      7. lift-*.f6471.1

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

      \[\leadsto \color{blue}{\mathsf{fma}\left(-8, \frac{y \cdot y}{x \cdot x}, 1\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      3. lift-/.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      4. lift-*.f64N/A

        \[\leadsto -8 \cdot \frac{y \cdot y}{x \cdot x} + 1 \]
      5. *-commutativeN/A

        \[\leadsto \frac{y \cdot y}{x \cdot x} \cdot -8 + 1 \]
      6. pow2N/A

        \[\leadsto \frac{y \cdot y}{{x}^{2}} \cdot -8 + 1 \]
      7. pow2N/A

        \[\leadsto \frac{{y}^{2}}{{x}^{2}} \cdot -8 + 1 \]
      8. lower-fma.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{{x}^{2}}, \color{blue}{-8}, 1\right) \]
      9. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{{y}^{2}}{x \cdot x}, -8, 1\right) \]
      10. pow2N/A

        \[\leadsto \mathsf{fma}\left(\frac{y \cdot y}{x \cdot x}, -8, 1\right) \]
      11. times-fracN/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      12. lower-*.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      13. lower-/.f64N/A

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
      14. lower-/.f6477.8

        \[\leadsto \mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right) \]
    7. Applied rewrites77.8%

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

    if 5.00000000000000024e25 < (*.f64 (*.f64 y #s(literal 4 binary64)) y)

    1. Initial program 34.3%

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

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

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

      \[\leadsto \begin{array}{l} \mathbf{if}\;\left(y \cdot 4\right) \cdot y \leq 5 \cdot 10^{+25}:\\ \;\;\;\;\mathsf{fma}\left(\frac{y}{x} \cdot \frac{y}{x}, -8, 1\right)\\ \mathbf{else}:\\ \;\;\;\;-1\\ \end{array} \]
    7. Add Preprocessing

    Alternative 7: 74.6% accurate, 6.8× speedup?

    \[\begin{array}{l} y_m = \left|y\right| \\ \begin{array}{l} \mathbf{if}\;y\_m \leq 5000000000000:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;-1\\ \end{array} \end{array} \]
    y_m = (fabs.f64 y)
    (FPCore (x y_m) :precision binary64 (if (<= y_m 5000000000000.0) 1.0 -1.0))
    y_m = fabs(y);
    double code(double x, double y_m) {
    	double tmp;
    	if (y_m <= 5000000000000.0) {
    		tmp = 1.0;
    	} else {
    		tmp = -1.0;
    	}
    	return tmp;
    }
    
    y_m =     private
    module fmin_fmax_functions
        implicit none
        private
        public fmax
        public fmin
    
        interface fmax
            module procedure fmax88
            module procedure fmax44
            module procedure fmax84
            module procedure fmax48
        end interface
        interface fmin
            module procedure fmin88
            module procedure fmin44
            module procedure fmin84
            module procedure fmin48
        end interface
    contains
        real(8) function fmax88(x, y) result (res)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            res = merge(y, merge(x, max(x, y), y /= y), x /= x)
        end function
        real(4) function fmax44(x, y) result (res)
            real(4), intent (in) :: x
            real(4), intent (in) :: y
            res = merge(y, merge(x, max(x, y), y /= y), x /= x)
        end function
        real(8) function fmax84(x, y) result(res)
            real(8), intent (in) :: x
            real(4), intent (in) :: y
            res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
        end function
        real(8) function fmax48(x, y) result(res)
            real(4), intent (in) :: x
            real(8), intent (in) :: y
            res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
        end function
        real(8) function fmin88(x, y) result (res)
            real(8), intent (in) :: x
            real(8), intent (in) :: y
            res = merge(y, merge(x, min(x, y), y /= y), x /= x)
        end function
        real(4) function fmin44(x, y) result (res)
            real(4), intent (in) :: x
            real(4), intent (in) :: y
            res = merge(y, merge(x, min(x, y), y /= y), x /= x)
        end function
        real(8) function fmin84(x, y) result(res)
            real(8), intent (in) :: x
            real(4), intent (in) :: y
            res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
        end function
        real(8) function fmin48(x, y) result(res)
            real(4), intent (in) :: x
            real(8), intent (in) :: y
            res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
        end function
    end module
    
    real(8) function code(x, y_m)
    use fmin_fmax_functions
        real(8), intent (in) :: x
        real(8), intent (in) :: y_m
        real(8) :: tmp
        if (y_m <= 5000000000000.0d0) then
            tmp = 1.0d0
        else
            tmp = -1.0d0
        end if
        code = tmp
    end function
    
    y_m = Math.abs(y);
    public static double code(double x, double y_m) {
    	double tmp;
    	if (y_m <= 5000000000000.0) {
    		tmp = 1.0;
    	} else {
    		tmp = -1.0;
    	}
    	return tmp;
    }
    
    y_m = math.fabs(y)
    def code(x, y_m):
    	tmp = 0
    	if y_m <= 5000000000000.0:
    		tmp = 1.0
    	else:
    		tmp = -1.0
    	return tmp
    
    y_m = abs(y)
    function code(x, y_m)
    	tmp = 0.0
    	if (y_m <= 5000000000000.0)
    		tmp = 1.0;
    	else
    		tmp = -1.0;
    	end
    	return tmp
    end
    
    y_m = abs(y);
    function tmp_2 = code(x, y_m)
    	tmp = 0.0;
    	if (y_m <= 5000000000000.0)
    		tmp = 1.0;
    	else
    		tmp = -1.0;
    	end
    	tmp_2 = tmp;
    end
    
    y_m = N[Abs[y], $MachinePrecision]
    code[x_, y$95$m_] := If[LessEqual[y$95$m, 5000000000000.0], 1.0, -1.0]
    
    \begin{array}{l}
    y_m = \left|y\right|
    
    \\
    \begin{array}{l}
    \mathbf{if}\;y\_m \leq 5000000000000:\\
    \;\;\;\;1\\
    
    \mathbf{else}:\\
    \;\;\;\;-1\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if y < 5e12

      1. Initial program 49.5%

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

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

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

        if 5e12 < y

        1. Initial program 42.4%

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

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

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

          \[\leadsto \begin{array}{l} \mathbf{if}\;y \leq 5000000000000:\\ \;\;\;\;1\\ \mathbf{else}:\\ \;\;\;\;-1\\ \end{array} \]
        7. Add Preprocessing

        Alternative 8: 50.4% accurate, 48.0× speedup?

        \[\begin{array}{l} y_m = \left|y\right| \\ -1 \end{array} \]
        y_m = (fabs.f64 y)
        (FPCore (x y_m) :precision binary64 -1.0)
        y_m = fabs(y);
        double code(double x, double y_m) {
        	return -1.0;
        }
        
        y_m =     private
        module fmin_fmax_functions
            implicit none
            private
            public fmax
            public fmin
        
            interface fmax
                module procedure fmax88
                module procedure fmax44
                module procedure fmax84
                module procedure fmax48
            end interface
            interface fmin
                module procedure fmin88
                module procedure fmin44
                module procedure fmin84
                module procedure fmin48
            end interface
        contains
            real(8) function fmax88(x, y) result (res)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(x, max(x, y), y /= y), x /= x)
            end function
            real(4) function fmax44(x, y) result (res)
                real(4), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(y, merge(x, max(x, y), y /= y), x /= x)
            end function
            real(8) function fmax84(x, y) result(res)
                real(8), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(dble(y), merge(x, max(x, dble(y)), y /= y), x /= x)
            end function
            real(8) function fmax48(x, y) result(res)
                real(4), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(dble(x), max(dble(x), y), y /= y), x /= x)
            end function
            real(8) function fmin88(x, y) result (res)
                real(8), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(x, min(x, y), y /= y), x /= x)
            end function
            real(4) function fmin44(x, y) result (res)
                real(4), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(y, merge(x, min(x, y), y /= y), x /= x)
            end function
            real(8) function fmin84(x, y) result(res)
                real(8), intent (in) :: x
                real(4), intent (in) :: y
                res = merge(dble(y), merge(x, min(x, dble(y)), y /= y), x /= x)
            end function
            real(8) function fmin48(x, y) result(res)
                real(4), intent (in) :: x
                real(8), intent (in) :: y
                res = merge(y, merge(dble(x), min(dble(x), y), y /= y), x /= x)
            end function
        end module
        
        real(8) function code(x, y_m)
        use fmin_fmax_functions
            real(8), intent (in) :: x
            real(8), intent (in) :: y_m
            code = -1.0d0
        end function
        
        y_m = Math.abs(y);
        public static double code(double x, double y_m) {
        	return -1.0;
        }
        
        y_m = math.fabs(y)
        def code(x, y_m):
        	return -1.0
        
        y_m = abs(y)
        function code(x, y_m)
        	return -1.0
        end
        
        y_m = abs(y);
        function tmp = code(x, y_m)
        	tmp = -1.0;
        end
        
        y_m = N[Abs[y], $MachinePrecision]
        code[x_, y$95$m_] := -1.0
        
        \begin{array}{l}
        y_m = \left|y\right|
        
        \\
        -1
        \end{array}
        
        Derivation
        1. Initial program 47.6%

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

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

            \[\leadsto \color{blue}{-1} \]
          2. Final simplification54.0%

            \[\leadsto -1 \]
          3. Add Preprocessing

          Reproduce

          ?
          herbie shell --seed 2025085 
          (FPCore (x y)
            :name "Diagrams.TwoD.Arc:arcBetween from diagrams-lib-1.3.0.3"
            :precision binary64
          
            :alt
            (! :herbie-platform default (if (< (/ (- (* x x) (* (* y 4) y)) (+ (* x x) (* (* y 4) y))) 9743233849626781/10000000000000000) (- (/ (* x x) (+ (* x x) (* (* y y) 4))) (/ (* (* y y) 4) (+ (* x x) (* (* y y) 4)))) (- (pow (/ x (sqrt (+ (* x x) (* (* y y) 4)))) 2) (/ (* (* y y) 4) (+ (* x x) (* (* y y) 4))))))
          
            (/ (- (* x x) (* (* y 4.0) y)) (+ (* x x) (* (* y 4.0) y))))