ABCF->ab-angle b

Percentage Accurate: 18.7% → 47.6%
Time: 9.4s
Alternatives: 10
Speedup: 12.0×

Specification

?
\[\begin{array}{l} \\ \begin{array}{l} t_0 := {B}^{2} - \left(4 \cdot A\right) \cdot C\\ \frac{-\sqrt{\left(2 \cdot \left(t\_0 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_0} \end{array} \end{array} \]
(FPCore (A B C F)
 :precision binary64
 (let* ((t_0 (- (pow B 2.0) (* (* 4.0 A) C))))
   (/
    (-
     (sqrt
      (*
       (* 2.0 (* t_0 F))
       (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
    t_0)))
double code(double A, double B, double C, double F) {
	double t_0 = pow(B, 2.0) - ((4.0 * A) * C);
	return -sqrt(((2.0 * (t_0 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / 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(a, b, c, f)
use fmin_fmax_functions
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    real(8), intent (in) :: c
    real(8), intent (in) :: f
    real(8) :: t_0
    t_0 = (b ** 2.0d0) - ((4.0d0 * a) * c)
    code = -sqrt(((2.0d0 * (t_0 * f)) * ((a + c) - sqrt((((a - c) ** 2.0d0) + (b ** 2.0d0)))))) / t_0
end function
public static double code(double A, double B, double C, double F) {
	double t_0 = Math.pow(B, 2.0) - ((4.0 * A) * C);
	return -Math.sqrt(((2.0 * (t_0 * F)) * ((A + C) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B, 2.0)))))) / t_0;
}
def code(A, B, C, F):
	t_0 = math.pow(B, 2.0) - ((4.0 * A) * C)
	return -math.sqrt(((2.0 * (t_0 * F)) * ((A + C) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B, 2.0)))))) / t_0
function code(A, B, C, F)
	t_0 = Float64((B ^ 2.0) - Float64(Float64(4.0 * A) * C))
	return Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_0 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_0)
end
function tmp = code(A, B, C, F)
	t_0 = (B ^ 2.0) - ((4.0 * A) * C);
	tmp = -sqrt(((2.0 * (t_0 * F)) * ((A + C) - sqrt((((A - C) ^ 2.0) + (B ^ 2.0)))))) / t_0;
end
code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[Power[B, 2.0], $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$0 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$0), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {B}^{2} - \left(4 \cdot A\right) \cdot C\\
\frac{-\sqrt{\left(2 \cdot \left(t\_0 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_0}
\end{array}
\end{array}

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

Herbie found 10 alternatives:

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

Initial Program: 18.7% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := {B}^{2} - \left(4 \cdot A\right) \cdot C\\ \frac{-\sqrt{\left(2 \cdot \left(t\_0 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_0} \end{array} \end{array} \]
(FPCore (A B C F)
 :precision binary64
 (let* ((t_0 (- (pow B 2.0) (* (* 4.0 A) C))))
   (/
    (-
     (sqrt
      (*
       (* 2.0 (* t_0 F))
       (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
    t_0)))
double code(double A, double B, double C, double F) {
	double t_0 = pow(B, 2.0) - ((4.0 * A) * C);
	return -sqrt(((2.0 * (t_0 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / 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(a, b, c, f)
use fmin_fmax_functions
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    real(8), intent (in) :: c
    real(8), intent (in) :: f
    real(8) :: t_0
    t_0 = (b ** 2.0d0) - ((4.0d0 * a) * c)
    code = -sqrt(((2.0d0 * (t_0 * f)) * ((a + c) - sqrt((((a - c) ** 2.0d0) + (b ** 2.0d0)))))) / t_0
end function
public static double code(double A, double B, double C, double F) {
	double t_0 = Math.pow(B, 2.0) - ((4.0 * A) * C);
	return -Math.sqrt(((2.0 * (t_0 * F)) * ((A + C) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B, 2.0)))))) / t_0;
}
def code(A, B, C, F):
	t_0 = math.pow(B, 2.0) - ((4.0 * A) * C)
	return -math.sqrt(((2.0 * (t_0 * F)) * ((A + C) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B, 2.0)))))) / t_0
function code(A, B, C, F)
	t_0 = Float64((B ^ 2.0) - Float64(Float64(4.0 * A) * C))
	return Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_0 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_0)
end
function tmp = code(A, B, C, F)
	t_0 = (B ^ 2.0) - ((4.0 * A) * C);
	tmp = -sqrt(((2.0 * (t_0 * F)) * ((A + C) - sqrt((((A - C) ^ 2.0) + (B ^ 2.0)))))) / t_0;
end
code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[Power[B, 2.0], $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision]}, N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$0 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$0), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := {B}^{2} - \left(4 \cdot A\right) \cdot C\\
\frac{-\sqrt{\left(2 \cdot \left(t\_0 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_0}
\end{array}
\end{array}

Alternative 1: 47.6% accurate, 0.2× speedup?

\[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} t_0 := \left(4 \cdot A\right) \cdot C\\ t_1 := \frac{F}{C} \cdot -1\\ t_2 := B \cdot B - t\_0\\ t_3 := {B}^{2} - t\_0\\ t_4 := \frac{-\sqrt{\left(2 \cdot \left(t\_3 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_3}\\ \mathbf{if}\;t\_4 \leq -\infty:\\ \;\;\;\;-1 \cdot {t\_1}^{0.5}\\ \mathbf{elif}\;t\_4 \leq -5 \cdot 10^{-159}:\\ \;\;\;\;-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}\\ \mathbf{elif}\;t\_4 \leq 0:\\ \;\;\;\;-1 \cdot \sqrt{t\_1}\\ \mathbf{elif}\;t\_4 \leq 2 \cdot 10^{+280}:\\ \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_2 \cdot F\right)\right) \cdot \left(2 \cdot A\right)}}{t\_2}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
(FPCore (A B C F)
 :precision binary64
 (let* ((t_0 (* (* 4.0 A) C))
        (t_1 (* (/ F C) -1.0))
        (t_2 (- (* B B) t_0))
        (t_3 (- (pow B 2.0) t_0))
        (t_4
         (/
          (-
           (sqrt
            (*
             (* 2.0 (* t_3 F))
             (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
          t_3)))
   (if (<= t_4 (- INFINITY))
     (* -1.0 (pow t_1 0.5))
     (if (<= t_4 -5e-159)
       (*
        -1.0
        (sqrt
         (*
          (/
           (* F (- (+ A C) (sqrt (fma B B (* (- A C) (- A C))))))
           (- (* B B) (* 4.0 (* A C))))
          2.0)))
       (if (<= t_4 0.0)
         (* -1.0 (sqrt t_1))
         (if (<= t_4 2e+280)
           (/ (- (sqrt (* (* 2.0 (* t_2 F)) (* 2.0 A)))) t_2)
           (sqrt (* -1.0 (/ F C)))))))))
assert(A < B && B < C && C < F);
double code(double A, double B, double C, double F) {
	double t_0 = (4.0 * A) * C;
	double t_1 = (F / C) * -1.0;
	double t_2 = (B * B) - t_0;
	double t_3 = pow(B, 2.0) - t_0;
	double t_4 = -sqrt(((2.0 * (t_3 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / t_3;
	double tmp;
	if (t_4 <= -((double) INFINITY)) {
		tmp = -1.0 * pow(t_1, 0.5);
	} else if (t_4 <= -5e-159) {
		tmp = -1.0 * sqrt((((F * ((A + C) - sqrt(fma(B, B, ((A - C) * (A - C)))))) / ((B * B) - (4.0 * (A * C)))) * 2.0));
	} else if (t_4 <= 0.0) {
		tmp = -1.0 * sqrt(t_1);
	} else if (t_4 <= 2e+280) {
		tmp = -sqrt(((2.0 * (t_2 * F)) * (2.0 * A))) / t_2;
	} else {
		tmp = sqrt((-1.0 * (F / C)));
	}
	return tmp;
}
A, B, C, F = sort([A, B, C, F])
function code(A, B, C, F)
	t_0 = Float64(Float64(4.0 * A) * C)
	t_1 = Float64(Float64(F / C) * -1.0)
	t_2 = Float64(Float64(B * B) - t_0)
	t_3 = Float64((B ^ 2.0) - t_0)
	t_4 = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_3 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_3)
	tmp = 0.0
	if (t_4 <= Float64(-Inf))
		tmp = Float64(-1.0 * (t_1 ^ 0.5));
	elseif (t_4 <= -5e-159)
		tmp = Float64(-1.0 * sqrt(Float64(Float64(Float64(F * Float64(Float64(A + C) - sqrt(fma(B, B, Float64(Float64(A - C) * Float64(A - C)))))) / Float64(Float64(B * B) - Float64(4.0 * Float64(A * C)))) * 2.0)));
	elseif (t_4 <= 0.0)
		tmp = Float64(-1.0 * sqrt(t_1));
	elseif (t_4 <= 2e+280)
		tmp = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_2 * F)) * Float64(2.0 * A)))) / t_2);
	else
		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
	end
	return tmp
end
NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$1 = N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(B * B), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[(N[Power[B, 2.0], $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$3 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision]}, If[LessEqual[t$95$4, (-Infinity)], N[(-1.0 * N[Power[t$95$1, 0.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$4, -5e-159], N[(-1.0 * N[Sqrt[N[(N[(N[(F * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(B * B + N[(N[(A - C), $MachinePrecision] * N[(A - C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(B * B), $MachinePrecision] - N[(4.0 * N[(A * C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$4, 0.0], N[(-1.0 * N[Sqrt[t$95$1], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$4, 2e+280], N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$2 * F), $MachinePrecision]), $MachinePrecision] * N[(2.0 * A), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$2), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]]]]]
\begin{array}{l}
[A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
\\
\begin{array}{l}
t_0 := \left(4 \cdot A\right) \cdot C\\
t_1 := \frac{F}{C} \cdot -1\\
t_2 := B \cdot B - t\_0\\
t_3 := {B}^{2} - t\_0\\
t_4 := \frac{-\sqrt{\left(2 \cdot \left(t\_3 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_3}\\
\mathbf{if}\;t\_4 \leq -\infty:\\
\;\;\;\;-1 \cdot {t\_1}^{0.5}\\

\mathbf{elif}\;t\_4 \leq -5 \cdot 10^{-159}:\\
\;\;\;\;-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}\\

\mathbf{elif}\;t\_4 \leq 0:\\
\;\;\;\;-1 \cdot \sqrt{t\_1}\\

\mathbf{elif}\;t\_4 \leq 2 \cdot 10^{+280}:\\
\;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_2 \cdot F\right)\right) \cdot \left(2 \cdot A\right)}}{t\_2}\\

\mathbf{else}:\\
\;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\


\end{array}
\end{array}
Derivation
  1. Split input into 5 regimes
  2. if (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -inf.0

    1. Initial program 3.2%

      \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    2. Taylor expanded in A around -inf

      \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
    3. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
      2. sqrt-unprodN/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
      3. metadata-evalN/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      4. lower-*.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
      5. lower-sqrt.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
      6. lower-/.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      7. lower-sqrt.f640.0

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
    4. Applied rewrites0.0%

      \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
      2. lift-/.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      3. lift-sqrt.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
      4. lift-sqrt.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      5. sqrt-unprodN/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      6. lower-sqrt.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      7. lower-*.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      8. lift-/.f6450.5

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
    6. Applied rewrites50.5%

      \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
    7. Step-by-step derivation
      1. lift-sqrt.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      2. lift-*.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      3. lift-/.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      4. pow1/2N/A

        \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
      5. lower-pow.f64N/A

        \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
      6. lift-/.f64N/A

        \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
      7. lift-*.f6450.7

        \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
    8. Applied rewrites50.7%

      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

    if -inf.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -5.00000000000000032e-159

    1. Initial program 97.5%

      \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    2. Taylor expanded in F around 0

      \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2}\right)} \]
    3. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2}\right)} \]
      2. sqrt-unprodN/A

        \[\leadsto -1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
      3. lower-sqrt.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
      4. lower-*.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
    4. Applied rewrites87.1%

      \[\leadsto \color{blue}{-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]

    if -5.00000000000000032e-159 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 0.0

    1. Initial program 12.0%

      \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    2. Taylor expanded in A around -inf

      \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
    3. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
      2. sqrt-unprodN/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
      3. metadata-evalN/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      4. lower-*.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
      5. lower-sqrt.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
      6. lower-/.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      7. lower-sqrt.f640.0

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
    4. Applied rewrites0.0%

      \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
    5. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
      2. lift-/.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      3. lift-sqrt.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
      4. lift-sqrt.f64N/A

        \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      5. sqrt-unprodN/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      6. lower-sqrt.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      7. lower-*.f64N/A

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      8. lift-/.f6445.0

        \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
    6. Applied rewrites45.0%

      \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]

    if 0.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 2.0000000000000001e280

    1. Initial program 96.3%

      \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    2. Taylor expanded in C around inf

      \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    3. Step-by-step derivation
      1. lower--.f64N/A

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1 \cdot A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      2. lower-+.f64N/A

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      3. lower-*.f64N/A

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      4. lower-/.f64N/A

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      5. unpow2N/A

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      6. lower-*.f64N/A

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      7. lower-*.f6497.6

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    4. Applied rewrites97.6%

      \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
    5. Step-by-step derivation
      1. Applied rewrites97.6%

        \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
      2. Taylor expanded in A around -inf

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(2 \cdot A\right)}}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
      3. Step-by-step derivation
        1. lower-*.f6498.5

          \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(2 \cdot \color{blue}{A}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
      4. Applied rewrites98.5%

        \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(2 \cdot A\right)}}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]

      if 2.0000000000000001e280 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)))

      1. Initial program 0.4%

        \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      2. Taylor expanded in F around -inf

        \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
      3. Step-by-step derivation
        1. sqrt-unprodN/A

          \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
        2. metadata-evalN/A

          \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
        3. sqrt-unprodN/A

          \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
      4. Applied rewrites1.1%

        \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
      5. Taylor expanded in A around -inf

        \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
      6. Step-by-step derivation
        1. lower-*.f64N/A

          \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
        2. lift-/.f6426.1

          \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
      7. Applied rewrites26.1%

        \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
    6. Recombined 5 regimes into one program.
    7. Add Preprocessing

    Alternative 2: 47.6% accurate, 0.3× speedup?

    \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} t_0 := \left(4 \cdot A\right) \cdot C\\ t_1 := {B}^{2} - t\_0\\ t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\ t_3 := B \cdot B - t\_0\\ t_4 := 2 \cdot \left(t\_3 \cdot F\right)\\ \mathbf{if}\;t\_2 \leq -\infty:\\ \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\ \mathbf{elif}\;t\_2 \leq -2 \cdot 10^{-218}:\\ \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(A - C, B\right)\right)}}{t\_3}\\ \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+280}:\\ \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{t\_3}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
    NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
    (FPCore (A B C F)
     :precision binary64
     (let* ((t_0 (* (* 4.0 A) C))
            (t_1 (- (pow B 2.0) t_0))
            (t_2
             (/
              (-
               (sqrt
                (*
                 (* 2.0 (* t_1 F))
                 (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
              t_1))
            (t_3 (- (* B B) t_0))
            (t_4 (* 2.0 (* t_3 F))))
       (if (<= t_2 (- INFINITY))
         (* -1.0 (pow (* (/ F C) -1.0) 0.5))
         (if (<= t_2 -2e-218)
           (/ (- (sqrt (* t_4 (- (+ A C) (hypot (- A C) B))))) t_3)
           (if (<= t_2 2e+280)
             (/ (- (sqrt (* t_4 (- (+ A (* -0.5 (/ (* B B) C))) (* -1.0 A))))) t_3)
             (sqrt (* -1.0 (/ F C))))))))
    assert(A < B && B < C && C < F);
    double code(double A, double B, double C, double F) {
    	double t_0 = (4.0 * A) * C;
    	double t_1 = pow(B, 2.0) - t_0;
    	double t_2 = -sqrt(((2.0 * (t_1 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / t_1;
    	double t_3 = (B * B) - t_0;
    	double t_4 = 2.0 * (t_3 * F);
    	double tmp;
    	if (t_2 <= -((double) INFINITY)) {
    		tmp = -1.0 * pow(((F / C) * -1.0), 0.5);
    	} else if (t_2 <= -2e-218) {
    		tmp = -sqrt((t_4 * ((A + C) - hypot((A - C), B)))) / t_3;
    	} else if (t_2 <= 2e+280) {
    		tmp = -sqrt((t_4 * ((A + (-0.5 * ((B * B) / C))) - (-1.0 * A)))) / t_3;
    	} else {
    		tmp = sqrt((-1.0 * (F / C)));
    	}
    	return tmp;
    }
    
    assert A < B && B < C && C < F;
    public static double code(double A, double B, double C, double F) {
    	double t_0 = (4.0 * A) * C;
    	double t_1 = Math.pow(B, 2.0) - t_0;
    	double t_2 = -Math.sqrt(((2.0 * (t_1 * F)) * ((A + C) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B, 2.0)))))) / t_1;
    	double t_3 = (B * B) - t_0;
    	double t_4 = 2.0 * (t_3 * F);
    	double tmp;
    	if (t_2 <= -Double.POSITIVE_INFINITY) {
    		tmp = -1.0 * Math.pow(((F / C) * -1.0), 0.5);
    	} else if (t_2 <= -2e-218) {
    		tmp = -Math.sqrt((t_4 * ((A + C) - Math.hypot((A - C), B)))) / t_3;
    	} else if (t_2 <= 2e+280) {
    		tmp = -Math.sqrt((t_4 * ((A + (-0.5 * ((B * B) / C))) - (-1.0 * A)))) / t_3;
    	} else {
    		tmp = Math.sqrt((-1.0 * (F / C)));
    	}
    	return tmp;
    }
    
    [A, B, C, F] = sort([A, B, C, F])
    def code(A, B, C, F):
    	t_0 = (4.0 * A) * C
    	t_1 = math.pow(B, 2.0) - t_0
    	t_2 = -math.sqrt(((2.0 * (t_1 * F)) * ((A + C) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B, 2.0)))))) / t_1
    	t_3 = (B * B) - t_0
    	t_4 = 2.0 * (t_3 * F)
    	tmp = 0
    	if t_2 <= -math.inf:
    		tmp = -1.0 * math.pow(((F / C) * -1.0), 0.5)
    	elif t_2 <= -2e-218:
    		tmp = -math.sqrt((t_4 * ((A + C) - math.hypot((A - C), B)))) / t_3
    	elif t_2 <= 2e+280:
    		tmp = -math.sqrt((t_4 * ((A + (-0.5 * ((B * B) / C))) - (-1.0 * A)))) / t_3
    	else:
    		tmp = math.sqrt((-1.0 * (F / C)))
    	return tmp
    
    A, B, C, F = sort([A, B, C, F])
    function code(A, B, C, F)
    	t_0 = Float64(Float64(4.0 * A) * C)
    	t_1 = Float64((B ^ 2.0) - t_0)
    	t_2 = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_1 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_1)
    	t_3 = Float64(Float64(B * B) - t_0)
    	t_4 = Float64(2.0 * Float64(t_3 * F))
    	tmp = 0.0
    	if (t_2 <= Float64(-Inf))
    		tmp = Float64(-1.0 * (Float64(Float64(F / C) * -1.0) ^ 0.5));
    	elseif (t_2 <= -2e-218)
    		tmp = Float64(Float64(-sqrt(Float64(t_4 * Float64(Float64(A + C) - hypot(Float64(A - C), B))))) / t_3);
    	elseif (t_2 <= 2e+280)
    		tmp = Float64(Float64(-sqrt(Float64(t_4 * Float64(Float64(A + Float64(-0.5 * Float64(Float64(B * B) / C))) - Float64(-1.0 * A))))) / t_3);
    	else
    		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
    	end
    	return tmp
    end
    
    A, B, C, F = num2cell(sort([A, B, C, F])){:}
    function tmp_2 = code(A, B, C, F)
    	t_0 = (4.0 * A) * C;
    	t_1 = (B ^ 2.0) - t_0;
    	t_2 = -sqrt(((2.0 * (t_1 * F)) * ((A + C) - sqrt((((A - C) ^ 2.0) + (B ^ 2.0)))))) / t_1;
    	t_3 = (B * B) - t_0;
    	t_4 = 2.0 * (t_3 * F);
    	tmp = 0.0;
    	if (t_2 <= -Inf)
    		tmp = -1.0 * (((F / C) * -1.0) ^ 0.5);
    	elseif (t_2 <= -2e-218)
    		tmp = -sqrt((t_4 * ((A + C) - hypot((A - C), B)))) / t_3;
    	elseif (t_2 <= 2e+280)
    		tmp = -sqrt((t_4 * ((A + (-0.5 * ((B * B) / C))) - (-1.0 * A)))) / t_3;
    	else
    		tmp = sqrt((-1.0 * (F / C)));
    	end
    	tmp_2 = tmp;
    end
    
    NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
    code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[B, 2.0], $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$1 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(B * B), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[(2.0 * N[(t$95$3 * F), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, (-Infinity)], N[(-1.0 * N[Power[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision], 0.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, -2e-218], N[((-N[Sqrt[N[(t$95$4 * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(A - C), $MachinePrecision] ^ 2 + B ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision], If[LessEqual[t$95$2, 2e+280], N[((-N[Sqrt[N[(t$95$4 * N[(N[(A + N[(-0.5 * N[(N[(B * B), $MachinePrecision] / C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]]]]
    
    \begin{array}{l}
    [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
    \\
    \begin{array}{l}
    t_0 := \left(4 \cdot A\right) \cdot C\\
    t_1 := {B}^{2} - t\_0\\
    t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\
    t_3 := B \cdot B - t\_0\\
    t_4 := 2 \cdot \left(t\_3 \cdot F\right)\\
    \mathbf{if}\;t\_2 \leq -\infty:\\
    \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\
    
    \mathbf{elif}\;t\_2 \leq -2 \cdot 10^{-218}:\\
    \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(A - C, B\right)\right)}}{t\_3}\\
    
    \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+280}:\\
    \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{t\_3}\\
    
    \mathbf{else}:\\
    \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 4 regimes
    2. if (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -inf.0

      1. Initial program 3.2%

        \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      2. Taylor expanded in A around -inf

        \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
      3. Step-by-step derivation
        1. lower-*.f64N/A

          \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
        2. sqrt-unprodN/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
        3. metadata-evalN/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
        4. lower-*.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
        5. lower-sqrt.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
        6. lower-/.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
        7. lower-sqrt.f640.0

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
      4. Applied rewrites0.0%

        \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
      5. Step-by-step derivation
        1. lift-*.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
        2. lift-/.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
        3. lift-sqrt.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
        4. lift-sqrt.f64N/A

          \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
        5. sqrt-unprodN/A

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
        6. lower-sqrt.f64N/A

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
        7. lower-*.f64N/A

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
        8. lift-/.f6450.5

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
      6. Applied rewrites50.5%

        \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
      7. Step-by-step derivation
        1. lift-sqrt.f64N/A

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
        2. lift-*.f64N/A

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
        3. lift-/.f64N/A

          \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
        4. pow1/2N/A

          \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
        5. lower-pow.f64N/A

          \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
        6. lift-/.f64N/A

          \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
        7. lift-*.f6450.7

          \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
      8. Applied rewrites50.7%

        \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

      if -inf.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -2.0000000000000001e-218

      1. Initial program 97.6%

        \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
      2. Step-by-step derivation
        1. Applied rewrites97.6%

          \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(A - C, A - C, B \cdot B\right)}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
        2. Step-by-step derivation
          1. lift-sqrt.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \color{blue}{\sqrt{\mathsf{fma}\left(A - C, A - C, B \cdot B\right)}}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          2. lift--.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(\color{blue}{A - C}, A - C, B \cdot B\right)}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          3. lift--.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(A - C, \color{blue}{A - C}, B \cdot B\right)}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          4. lift-fma.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{\color{blue}{\left(A - C\right) \cdot \left(A - C\right) + B \cdot B}}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          5. lift-*.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{\left(A - C\right) \cdot \left(A - C\right) + \color{blue}{B \cdot B}}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          6. lower-hypot.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \color{blue}{\mathsf{hypot}\left(A - C, B\right)}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          7. lift--.f6497.6

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(\color{blue}{A - C}, B\right)\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
        3. Applied rewrites97.6%

          \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \color{blue}{\mathsf{hypot}\left(A - C, B\right)}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]

        if -2.0000000000000001e-218 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 2.0000000000000001e280

        1. Initial program 23.5%

          \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
        2. Taylor expanded in C around inf

          \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
        3. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1 \cdot A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          2. lower-+.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          3. lower-*.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          4. lower-/.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          5. unpow2N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          6. lower-*.f64N/A

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          7. lower-*.f6462.0

            \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
        4. Applied rewrites62.0%

          \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
        5. Step-by-step derivation
          1. Applied rewrites62.0%

            \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]

          if 2.0000000000000001e280 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)))

          1. Initial program 0.4%

            \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          2. Taylor expanded in F around -inf

            \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
          3. Step-by-step derivation
            1. sqrt-unprodN/A

              \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
            2. metadata-evalN/A

              \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
            3. sqrt-unprodN/A

              \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
          4. Applied rewrites1.1%

            \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
          5. Taylor expanded in A around -inf

            \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
          6. Step-by-step derivation
            1. lower-*.f64N/A

              \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
            2. lift-/.f6426.1

              \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
          7. Applied rewrites26.1%

            \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
        6. Recombined 4 regimes into one program.
        7. Add Preprocessing

        Alternative 3: 45.1% accurate, 0.3× speedup?

        \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} t_0 := \left(4 \cdot A\right) \cdot C\\ t_1 := {B}^{2} - t\_0\\ t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\ t_3 := B \cdot B - t\_0\\ t_4 := 2 \cdot \left(t\_3 \cdot F\right)\\ \mathbf{if}\;t\_2 \leq -\infty:\\ \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\ \mathbf{elif}\;t\_2 \leq -2 \cdot 10^{-218}:\\ \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(A - C, A - C, B \cdot B\right)}\right)}}{t\_3}\\ \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+280}:\\ \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{t\_3}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
        NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
        (FPCore (A B C F)
         :precision binary64
         (let* ((t_0 (* (* 4.0 A) C))
                (t_1 (- (pow B 2.0) t_0))
                (t_2
                 (/
                  (-
                   (sqrt
                    (*
                     (* 2.0 (* t_1 F))
                     (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
                  t_1))
                (t_3 (- (* B B) t_0))
                (t_4 (* 2.0 (* t_3 F))))
           (if (<= t_2 (- INFINITY))
             (* -1.0 (pow (* (/ F C) -1.0) 0.5))
             (if (<= t_2 -2e-218)
               (/
                (- (sqrt (* t_4 (- (+ A C) (sqrt (fma (- A C) (- A C) (* B B)))))))
                t_3)
               (if (<= t_2 2e+280)
                 (/ (- (sqrt (* t_4 (- (+ A (* -0.5 (/ (* B B) C))) (* -1.0 A))))) t_3)
                 (sqrt (* -1.0 (/ F C))))))))
        assert(A < B && B < C && C < F);
        double code(double A, double B, double C, double F) {
        	double t_0 = (4.0 * A) * C;
        	double t_1 = pow(B, 2.0) - t_0;
        	double t_2 = -sqrt(((2.0 * (t_1 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / t_1;
        	double t_3 = (B * B) - t_0;
        	double t_4 = 2.0 * (t_3 * F);
        	double tmp;
        	if (t_2 <= -((double) INFINITY)) {
        		tmp = -1.0 * pow(((F / C) * -1.0), 0.5);
        	} else if (t_2 <= -2e-218) {
        		tmp = -sqrt((t_4 * ((A + C) - sqrt(fma((A - C), (A - C), (B * B)))))) / t_3;
        	} else if (t_2 <= 2e+280) {
        		tmp = -sqrt((t_4 * ((A + (-0.5 * ((B * B) / C))) - (-1.0 * A)))) / t_3;
        	} else {
        		tmp = sqrt((-1.0 * (F / C)));
        	}
        	return tmp;
        }
        
        A, B, C, F = sort([A, B, C, F])
        function code(A, B, C, F)
        	t_0 = Float64(Float64(4.0 * A) * C)
        	t_1 = Float64((B ^ 2.0) - t_0)
        	t_2 = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_1 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_1)
        	t_3 = Float64(Float64(B * B) - t_0)
        	t_4 = Float64(2.0 * Float64(t_3 * F))
        	tmp = 0.0
        	if (t_2 <= Float64(-Inf))
        		tmp = Float64(-1.0 * (Float64(Float64(F / C) * -1.0) ^ 0.5));
        	elseif (t_2 <= -2e-218)
        		tmp = Float64(Float64(-sqrt(Float64(t_4 * Float64(Float64(A + C) - sqrt(fma(Float64(A - C), Float64(A - C), Float64(B * B))))))) / t_3);
        	elseif (t_2 <= 2e+280)
        		tmp = Float64(Float64(-sqrt(Float64(t_4 * Float64(Float64(A + Float64(-0.5 * Float64(Float64(B * B) / C))) - Float64(-1.0 * A))))) / t_3);
        	else
        		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
        	end
        	return tmp
        end
        
        NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
        code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[B, 2.0], $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$1 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(B * B), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$4 = N[(2.0 * N[(t$95$3 * F), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[t$95$2, (-Infinity)], N[(-1.0 * N[Power[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision], 0.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, -2e-218], N[((-N[Sqrt[N[(t$95$4 * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[(A - C), $MachinePrecision] * N[(A - C), $MachinePrecision] + N[(B * B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision], If[LessEqual[t$95$2, 2e+280], N[((-N[Sqrt[N[(t$95$4 * N[(N[(A + N[(-0.5 * N[(N[(B * B), $MachinePrecision] / C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]]]]
        
        \begin{array}{l}
        [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
        \\
        \begin{array}{l}
        t_0 := \left(4 \cdot A\right) \cdot C\\
        t_1 := {B}^{2} - t\_0\\
        t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\
        t_3 := B \cdot B - t\_0\\
        t_4 := 2 \cdot \left(t\_3 \cdot F\right)\\
        \mathbf{if}\;t\_2 \leq -\infty:\\
        \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\
        
        \mathbf{elif}\;t\_2 \leq -2 \cdot 10^{-218}:\\
        \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(A - C, A - C, B \cdot B\right)}\right)}}{t\_3}\\
        
        \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+280}:\\
        \;\;\;\;\frac{-\sqrt{t\_4 \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{t\_3}\\
        
        \mathbf{else}:\\
        \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
        
        
        \end{array}
        \end{array}
        
        Derivation
        1. Split input into 4 regimes
        2. if (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -inf.0

          1. Initial program 3.2%

            \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          2. Taylor expanded in A around -inf

            \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
          3. Step-by-step derivation
            1. lower-*.f64N/A

              \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
            2. sqrt-unprodN/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
            3. metadata-evalN/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
            4. lower-*.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
            5. lower-sqrt.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
            6. lower-/.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
            7. lower-sqrt.f640.0

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
          4. Applied rewrites0.0%

            \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
          5. Step-by-step derivation
            1. lift-*.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
            2. lift-/.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
            3. lift-sqrt.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
            4. lift-sqrt.f64N/A

              \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
            5. sqrt-unprodN/A

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
            6. lower-sqrt.f64N/A

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
            7. lower-*.f64N/A

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
            8. lift-/.f6450.5

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
          6. Applied rewrites50.5%

            \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
          7. Step-by-step derivation
            1. lift-sqrt.f64N/A

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
            2. lift-*.f64N/A

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
            3. lift-/.f64N/A

              \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
            4. pow1/2N/A

              \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
            5. lower-pow.f64N/A

              \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
            6. lift-/.f64N/A

              \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
            7. lift-*.f6450.7

              \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
          8. Applied rewrites50.7%

            \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

          if -inf.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -2.0000000000000001e-218

          1. Initial program 97.6%

            \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
          2. Step-by-step derivation
            1. Applied rewrites97.6%

              \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(A - C, A - C, B \cdot B\right)}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]

            if -2.0000000000000001e-218 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 2.0000000000000001e280

            1. Initial program 23.5%

              \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
            2. Taylor expanded in C around inf

              \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
            3. Step-by-step derivation
              1. lower--.f64N/A

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1 \cdot A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              2. lower-+.f64N/A

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              3. lower-*.f64N/A

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              4. lower-/.f64N/A

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              5. unpow2N/A

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              6. lower-*.f64N/A

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              7. lower-*.f6462.0

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
            4. Applied rewrites62.0%

              \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
            5. Step-by-step derivation
              1. Applied rewrites62.0%

                \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]

              if 2.0000000000000001e280 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)))

              1. Initial program 0.4%

                \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              2. Taylor expanded in F around -inf

                \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
              3. Step-by-step derivation
                1. sqrt-unprodN/A

                  \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                2. metadata-evalN/A

                  \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                3. sqrt-unprodN/A

                  \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
              4. Applied rewrites1.1%

                \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
              5. Taylor expanded in A around -inf

                \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
              6. Step-by-step derivation
                1. lower-*.f64N/A

                  \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                2. lift-/.f6426.1

                  \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
              7. Applied rewrites26.1%

                \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
            6. Recombined 4 regimes into one program.
            7. Add Preprocessing

            Alternative 4: 44.5% accurate, 0.3× speedup?

            \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} t_0 := \left(4 \cdot A\right) \cdot C\\ t_1 := {B}^{2} - t\_0\\ t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\ t_3 := B \cdot B - t\_0\\ \mathbf{if}\;t\_2 \leq -\infty:\\ \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\ \mathbf{elif}\;t\_2 \leq -5 \cdot 10^{-159}:\\ \;\;\;\;-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}\\ \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+280}:\\ \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_3 \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{t\_3}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
            NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
            (FPCore (A B C F)
             :precision binary64
             (let* ((t_0 (* (* 4.0 A) C))
                    (t_1 (- (pow B 2.0) t_0))
                    (t_2
                     (/
                      (-
                       (sqrt
                        (*
                         (* 2.0 (* t_1 F))
                         (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
                      t_1))
                    (t_3 (- (* B B) t_0)))
               (if (<= t_2 (- INFINITY))
                 (* -1.0 (pow (* (/ F C) -1.0) 0.5))
                 (if (<= t_2 -5e-159)
                   (*
                    -1.0
                    (sqrt
                     (*
                      (/
                       (* F (- (+ A C) (sqrt (fma B B (* (- A C) (- A C))))))
                       (- (* B B) (* 4.0 (* A C))))
                      2.0)))
                   (if (<= t_2 2e+280)
                     (/
                      (-
                       (sqrt
                        (* (* 2.0 (* t_3 F)) (- (+ A (* -0.5 (/ (* B B) C))) (* -1.0 A)))))
                      t_3)
                     (sqrt (* -1.0 (/ F C))))))))
            assert(A < B && B < C && C < F);
            double code(double A, double B, double C, double F) {
            	double t_0 = (4.0 * A) * C;
            	double t_1 = pow(B, 2.0) - t_0;
            	double t_2 = -sqrt(((2.0 * (t_1 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / t_1;
            	double t_3 = (B * B) - t_0;
            	double tmp;
            	if (t_2 <= -((double) INFINITY)) {
            		tmp = -1.0 * pow(((F / C) * -1.0), 0.5);
            	} else if (t_2 <= -5e-159) {
            		tmp = -1.0 * sqrt((((F * ((A + C) - sqrt(fma(B, B, ((A - C) * (A - C)))))) / ((B * B) - (4.0 * (A * C)))) * 2.0));
            	} else if (t_2 <= 2e+280) {
            		tmp = -sqrt(((2.0 * (t_3 * F)) * ((A + (-0.5 * ((B * B) / C))) - (-1.0 * A)))) / t_3;
            	} else {
            		tmp = sqrt((-1.0 * (F / C)));
            	}
            	return tmp;
            }
            
            A, B, C, F = sort([A, B, C, F])
            function code(A, B, C, F)
            	t_0 = Float64(Float64(4.0 * A) * C)
            	t_1 = Float64((B ^ 2.0) - t_0)
            	t_2 = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_1 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_1)
            	t_3 = Float64(Float64(B * B) - t_0)
            	tmp = 0.0
            	if (t_2 <= Float64(-Inf))
            		tmp = Float64(-1.0 * (Float64(Float64(F / C) * -1.0) ^ 0.5));
            	elseif (t_2 <= -5e-159)
            		tmp = Float64(-1.0 * sqrt(Float64(Float64(Float64(F * Float64(Float64(A + C) - sqrt(fma(B, B, Float64(Float64(A - C) * Float64(A - C)))))) / Float64(Float64(B * B) - Float64(4.0 * Float64(A * C)))) * 2.0)));
            	elseif (t_2 <= 2e+280)
            		tmp = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_3 * F)) * Float64(Float64(A + Float64(-0.5 * Float64(Float64(B * B) / C))) - Float64(-1.0 * A))))) / t_3);
            	else
            		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
            	end
            	return tmp
            end
            
            NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
            code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[B, 2.0], $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$1 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[(B * B), $MachinePrecision] - t$95$0), $MachinePrecision]}, If[LessEqual[t$95$2, (-Infinity)], N[(-1.0 * N[Power[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision], 0.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, -5e-159], N[(-1.0 * N[Sqrt[N[(N[(N[(F * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(B * B + N[(N[(A - C), $MachinePrecision] * N[(A - C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(B * B), $MachinePrecision] - N[(4.0 * N[(A * C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 2e+280], N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$3 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + N[(-0.5 * N[(N[(B * B), $MachinePrecision] / C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]]]
            
            \begin{array}{l}
            [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
            \\
            \begin{array}{l}
            t_0 := \left(4 \cdot A\right) \cdot C\\
            t_1 := {B}^{2} - t\_0\\
            t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\
            t_3 := B \cdot B - t\_0\\
            \mathbf{if}\;t\_2 \leq -\infty:\\
            \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\
            
            \mathbf{elif}\;t\_2 \leq -5 \cdot 10^{-159}:\\
            \;\;\;\;-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}\\
            
            \mathbf{elif}\;t\_2 \leq 2 \cdot 10^{+280}:\\
            \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_3 \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{t\_3}\\
            
            \mathbf{else}:\\
            \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 4 regimes
            2. if (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -inf.0

              1. Initial program 3.2%

                \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              2. Taylor expanded in A around -inf

                \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
              3. Step-by-step derivation
                1. lower-*.f64N/A

                  \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                2. sqrt-unprodN/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                3. metadata-evalN/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                4. lower-*.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                5. lower-sqrt.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                6. lower-/.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                7. lower-sqrt.f640.0

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
              4. Applied rewrites0.0%

                \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
              5. Step-by-step derivation
                1. lift-*.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                2. lift-/.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                3. lift-sqrt.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                4. lift-sqrt.f64N/A

                  \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                5. sqrt-unprodN/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                6. lower-sqrt.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                7. lower-*.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                8. lift-/.f6450.5

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
              6. Applied rewrites50.5%

                \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
              7. Step-by-step derivation
                1. lift-sqrt.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                2. lift-*.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                3. lift-/.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                4. pow1/2N/A

                  \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                5. lower-pow.f64N/A

                  \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                6. lift-/.f64N/A

                  \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
                7. lift-*.f6450.7

                  \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
              8. Applied rewrites50.7%

                \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

              if -inf.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -5.00000000000000032e-159

              1. Initial program 97.5%

                \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              2. Taylor expanded in F around 0

                \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2}\right)} \]
              3. Step-by-step derivation
                1. lower-*.f64N/A

                  \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2}\right)} \]
                2. sqrt-unprodN/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                3. lower-sqrt.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                4. lower-*.f64N/A

                  \[\leadsto -1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
              4. Applied rewrites87.1%

                \[\leadsto \color{blue}{-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]

              if -5.00000000000000032e-159 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 2.0000000000000001e280

              1. Initial program 28.8%

                \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              2. Taylor expanded in C around inf

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              3. Step-by-step derivation
                1. lower--.f64N/A

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1 \cdot A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. lower-+.f64N/A

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                3. lower-*.f64N/A

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                4. lower-/.f64N/A

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                5. unpow2N/A

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                6. lower-*.f64N/A

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                7. lower-*.f6458.7

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              4. Applied rewrites58.7%

                \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
              5. Step-by-step derivation
                1. Applied rewrites58.7%

                  \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]

                if 2.0000000000000001e280 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)))

                1. Initial program 0.4%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in F around -inf

                  \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                3. Step-by-step derivation
                  1. sqrt-unprodN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                  2. metadata-evalN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                  3. sqrt-unprodN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                4. Applied rewrites1.1%

                  \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                5. Taylor expanded in A around -inf

                  \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                6. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  2. lift-/.f6426.1

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                7. Applied rewrites26.1%

                  \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
              6. Recombined 4 regimes into one program.
              7. Add Preprocessing

              Alternative 5: 38.8% accurate, 0.2× speedup?

              \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} t_0 := \left(4 \cdot A\right) \cdot C\\ t_1 := \frac{F}{C} \cdot -1\\ t_2 := {B}^{2} - t\_0\\ t_3 := \frac{-\sqrt{\left(2 \cdot \left(t\_2 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_2}\\ t_4 := B \cdot B - t\_0\\ \mathbf{if}\;t\_3 \leq -\infty:\\ \;\;\;\;-1 \cdot {t\_1}^{0.5}\\ \mathbf{elif}\;t\_3 \leq -2 \cdot 10^{-218}:\\ \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right)\\ \mathbf{elif}\;t\_3 \leq 0:\\ \;\;\;\;-1 \cdot \sqrt{t\_1}\\ \mathbf{elif}\;t\_3 \leq 2 \cdot 10^{+280}:\\ \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_4 \cdot F\right)\right) \cdot \left(2 \cdot A\right)}}{t\_4}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
              NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
              (FPCore (A B C F)
               :precision binary64
               (let* ((t_0 (* (* 4.0 A) C))
                      (t_1 (* (/ F C) -1.0))
                      (t_2 (- (pow B 2.0) t_0))
                      (t_3
                       (/
                        (-
                         (sqrt
                          (*
                           (* 2.0 (* t_2 F))
                           (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
                        t_2))
                      (t_4 (- (* B B) t_0)))
                 (if (<= t_3 (- INFINITY))
                   (* -1.0 (pow t_1 0.5))
                   (if (<= t_3 -2e-218)
                     (*
                      -1.0
                      (* (/ (sqrt 2.0) B) (sqrt (* F (- A (sqrt (fma A A (* B B))))))))
                     (if (<= t_3 0.0)
                       (* -1.0 (sqrt t_1))
                       (if (<= t_3 2e+280)
                         (/ (- (sqrt (* (* 2.0 (* t_4 F)) (* 2.0 A)))) t_4)
                         (sqrt (* -1.0 (/ F C)))))))))
              assert(A < B && B < C && C < F);
              double code(double A, double B, double C, double F) {
              	double t_0 = (4.0 * A) * C;
              	double t_1 = (F / C) * -1.0;
              	double t_2 = pow(B, 2.0) - t_0;
              	double t_3 = -sqrt(((2.0 * (t_2 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / t_2;
              	double t_4 = (B * B) - t_0;
              	double tmp;
              	if (t_3 <= -((double) INFINITY)) {
              		tmp = -1.0 * pow(t_1, 0.5);
              	} else if (t_3 <= -2e-218) {
              		tmp = -1.0 * ((sqrt(2.0) / B) * sqrt((F * (A - sqrt(fma(A, A, (B * B)))))));
              	} else if (t_3 <= 0.0) {
              		tmp = -1.0 * sqrt(t_1);
              	} else if (t_3 <= 2e+280) {
              		tmp = -sqrt(((2.0 * (t_4 * F)) * (2.0 * A))) / t_4;
              	} else {
              		tmp = sqrt((-1.0 * (F / C)));
              	}
              	return tmp;
              }
              
              A, B, C, F = sort([A, B, C, F])
              function code(A, B, C, F)
              	t_0 = Float64(Float64(4.0 * A) * C)
              	t_1 = Float64(Float64(F / C) * -1.0)
              	t_2 = Float64((B ^ 2.0) - t_0)
              	t_3 = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_2 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_2)
              	t_4 = Float64(Float64(B * B) - t_0)
              	tmp = 0.0
              	if (t_3 <= Float64(-Inf))
              		tmp = Float64(-1.0 * (t_1 ^ 0.5));
              	elseif (t_3 <= -2e-218)
              		tmp = Float64(-1.0 * Float64(Float64(sqrt(2.0) / B) * sqrt(Float64(F * Float64(A - sqrt(fma(A, A, Float64(B * B))))))));
              	elseif (t_3 <= 0.0)
              		tmp = Float64(-1.0 * sqrt(t_1));
              	elseif (t_3 <= 2e+280)
              		tmp = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_4 * F)) * Float64(2.0 * A)))) / t_4);
              	else
              		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
              	end
              	return tmp
              end
              
              NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
              code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$1 = N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[B, 2.0], $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$3 = N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$2 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$2), $MachinePrecision]}, Block[{t$95$4 = N[(N[(B * B), $MachinePrecision] - t$95$0), $MachinePrecision]}, If[LessEqual[t$95$3, (-Infinity)], N[(-1.0 * N[Power[t$95$1, 0.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, -2e-218], N[(-1.0 * N[(N[(N[Sqrt[2.0], $MachinePrecision] / B), $MachinePrecision] * N[Sqrt[N[(F * N[(A - N[Sqrt[N[(A * A + N[(B * B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 0.0], N[(-1.0 * N[Sqrt[t$95$1], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 2e+280], N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$4 * F), $MachinePrecision]), $MachinePrecision] * N[(2.0 * A), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$4), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]]]]]
              
              \begin{array}{l}
              [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
              \\
              \begin{array}{l}
              t_0 := \left(4 \cdot A\right) \cdot C\\
              t_1 := \frac{F}{C} \cdot -1\\
              t_2 := {B}^{2} - t\_0\\
              t_3 := \frac{-\sqrt{\left(2 \cdot \left(t\_2 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_2}\\
              t_4 := B \cdot B - t\_0\\
              \mathbf{if}\;t\_3 \leq -\infty:\\
              \;\;\;\;-1 \cdot {t\_1}^{0.5}\\
              
              \mathbf{elif}\;t\_3 \leq -2 \cdot 10^{-218}:\\
              \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right)\\
              
              \mathbf{elif}\;t\_3 \leq 0:\\
              \;\;\;\;-1 \cdot \sqrt{t\_1}\\
              
              \mathbf{elif}\;t\_3 \leq 2 \cdot 10^{+280}:\\
              \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_4 \cdot F\right)\right) \cdot \left(2 \cdot A\right)}}{t\_4}\\
              
              \mathbf{else}:\\
              \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 5 regimes
              2. if (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -inf.0

                1. Initial program 3.2%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in A around -inf

                  \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                3. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                  2. sqrt-unprodN/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                  3. metadata-evalN/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  4. lower-*.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                  5. lower-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                  6. lower-/.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  7. lower-sqrt.f640.0

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                4. Applied rewrites0.0%

                  \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
                5. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                  2. lift-/.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  3. lift-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                  4. lift-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  5. sqrt-unprodN/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  6. lower-sqrt.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  7. lower-*.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  8. lift-/.f6450.5

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                6. Applied rewrites50.5%

                  \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                7. Step-by-step derivation
                  1. lift-sqrt.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  2. lift-*.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  3. lift-/.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  4. pow1/2N/A

                    \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                  5. lower-pow.f64N/A

                    \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                  6. lift-/.f64N/A

                    \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
                  7. lift-*.f6450.7

                    \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
                8. Applied rewrites50.7%

                  \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

                if -inf.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -2.0000000000000001e-218

                1. Initial program 97.6%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in C around 0

                  \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right)} \]
                3. Step-by-step derivation
                  1. lower-*.f64N/A

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

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

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

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

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                  6. lower-*.f64N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                  7. lower--.f64N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                  8. lower-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                  9. unpow2N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {B}^{2}}\right)}\right) \]
                  10. lower-fma.f64N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, {B}^{2}\right)}\right)}\right) \]
                  11. unpow2N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right) \]
                  12. lower-*.f6437.1

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right) \]
                4. Applied rewrites37.1%

                  \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right)} \]

                if -2.0000000000000001e-218 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 0.0

                1. Initial program 3.7%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in A around -inf

                  \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                3. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                  2. sqrt-unprodN/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                  3. metadata-evalN/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  4. lower-*.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                  5. lower-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                  6. lower-/.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  7. lower-sqrt.f640.0

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                4. Applied rewrites0.0%

                  \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
                5. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                  2. lift-/.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  3. lift-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                  4. lift-sqrt.f64N/A

                    \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  5. sqrt-unprodN/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  6. lower-sqrt.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  7. lower-*.f64N/A

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  8. lift-/.f6448.9

                    \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                6. Applied rewrites48.9%

                  \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]

                if 0.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 2.0000000000000001e280

                1. Initial program 96.3%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in C around inf

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                3. Step-by-step derivation
                  1. lower--.f64N/A

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1 \cdot A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. lower-+.f64N/A

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  3. lower-*.f64N/A

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  4. lower-/.f64N/A

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  5. unpow2N/A

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  6. lower-*.f64N/A

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  7. lower-*.f6497.6

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                4. Applied rewrites97.6%

                  \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                5. Step-by-step derivation
                  1. Applied rewrites97.6%

                    \[\leadsto \color{blue}{\frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
                  2. Taylor expanded in A around -inf

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(2 \cdot A\right)}}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                  3. Step-by-step derivation
                    1. lower-*.f6498.5

                      \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(2 \cdot \color{blue}{A}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                  4. Applied rewrites98.5%

                    \[\leadsto \frac{-\sqrt{\left(2 \cdot \left(\left(B \cdot B - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \color{blue}{\left(2 \cdot A\right)}}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]

                  if 2.0000000000000001e280 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)))

                  1. Initial program 0.4%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in F around -inf

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                  3. Step-by-step derivation
                    1. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                    2. metadata-evalN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                    3. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                  4. Applied rewrites1.1%

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                  5. Taylor expanded in A around -inf

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  6. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                    2. lift-/.f6426.1

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  7. Applied rewrites26.1%

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                6. Recombined 5 regimes into one program.
                7. Add Preprocessing

                Alternative 6: 38.0% accurate, 0.3× speedup?

                \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} t_0 := \frac{F}{C} \cdot -1\\ t_1 := {B}^{2} - \left(4 \cdot A\right) \cdot C\\ t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\ \mathbf{if}\;t\_2 \leq -\infty:\\ \;\;\;\;-1 \cdot {t\_0}^{0.5}\\ \mathbf{elif}\;t\_2 \leq -2 \cdot 10^{-218}:\\ \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right)\\ \mathbf{elif}\;t\_2 \leq 0:\\ \;\;\;\;-1 \cdot \sqrt{t\_0}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                (FPCore (A B C F)
                 :precision binary64
                 (let* ((t_0 (* (/ F C) -1.0))
                        (t_1 (- (pow B 2.0) (* (* 4.0 A) C)))
                        (t_2
                         (/
                          (-
                           (sqrt
                            (*
                             (* 2.0 (* t_1 F))
                             (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0)))))))
                          t_1)))
                   (if (<= t_2 (- INFINITY))
                     (* -1.0 (pow t_0 0.5))
                     (if (<= t_2 -2e-218)
                       (*
                        -1.0
                        (* (/ (sqrt 2.0) B) (sqrt (* F (- A (sqrt (fma A A (* B B))))))))
                       (if (<= t_2 0.0) (* -1.0 (sqrt t_0)) (sqrt (* -1.0 (/ F C))))))))
                assert(A < B && B < C && C < F);
                double code(double A, double B, double C, double F) {
                	double t_0 = (F / C) * -1.0;
                	double t_1 = pow(B, 2.0) - ((4.0 * A) * C);
                	double t_2 = -sqrt(((2.0 * (t_1 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B, 2.0)))))) / t_1;
                	double tmp;
                	if (t_2 <= -((double) INFINITY)) {
                		tmp = -1.0 * pow(t_0, 0.5);
                	} else if (t_2 <= -2e-218) {
                		tmp = -1.0 * ((sqrt(2.0) / B) * sqrt((F * (A - sqrt(fma(A, A, (B * B)))))));
                	} else if (t_2 <= 0.0) {
                		tmp = -1.0 * sqrt(t_0);
                	} else {
                		tmp = sqrt((-1.0 * (F / C)));
                	}
                	return tmp;
                }
                
                A, B, C, F = sort([A, B, C, F])
                function code(A, B, C, F)
                	t_0 = Float64(Float64(F / C) * -1.0)
                	t_1 = Float64((B ^ 2.0) - Float64(Float64(4.0 * A) * C))
                	t_2 = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_1 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B ^ 2.0))))))) / t_1)
                	tmp = 0.0
                	if (t_2 <= Float64(-Inf))
                		tmp = Float64(-1.0 * (t_0 ^ 0.5));
                	elseif (t_2 <= -2e-218)
                		tmp = Float64(-1.0 * Float64(Float64(sqrt(2.0) / B) * sqrt(Float64(F * Float64(A - sqrt(fma(A, A, Float64(B * B))))))));
                	elseif (t_2 <= 0.0)
                		tmp = Float64(-1.0 * sqrt(t_0));
                	else
                		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
                	end
                	return tmp
                end
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                code[A_, B_, C_, F_] := Block[{t$95$0 = N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]}, Block[{t$95$1 = N[(N[Power[B, 2.0], $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$1 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + C), $MachinePrecision] - N[Sqrt[N[(N[Power[N[(A - C), $MachinePrecision], 2.0], $MachinePrecision] + N[Power[B, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision]}, If[LessEqual[t$95$2, (-Infinity)], N[(-1.0 * N[Power[t$95$0, 0.5], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, -2e-218], N[(-1.0 * N[(N[(N[Sqrt[2.0], $MachinePrecision] / B), $MachinePrecision] * N[Sqrt[N[(F * N[(A - N[Sqrt[N[(A * A + N[(B * B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$2, 0.0], N[(-1.0 * N[Sqrt[t$95$0], $MachinePrecision]), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]]]]]]
                
                \begin{array}{l}
                [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
                \\
                \begin{array}{l}
                t_0 := \frac{F}{C} \cdot -1\\
                t_1 := {B}^{2} - \left(4 \cdot A\right) \cdot C\\
                t_2 := \frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{t\_1}\\
                \mathbf{if}\;t\_2 \leq -\infty:\\
                \;\;\;\;-1 \cdot {t\_0}^{0.5}\\
                
                \mathbf{elif}\;t\_2 \leq -2 \cdot 10^{-218}:\\
                \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right)\\
                
                \mathbf{elif}\;t\_2 \leq 0:\\
                \;\;\;\;-1 \cdot \sqrt{t\_0}\\
                
                \mathbf{else}:\\
                \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 4 regimes
                2. if (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -inf.0

                  1. Initial program 3.2%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in A around -inf

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                    2. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                    3. metadata-evalN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    4. lower-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    5. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    6. lower-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    7. lower-sqrt.f640.0

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  4. Applied rewrites0.0%

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
                  5. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    2. lift-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    3. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    4. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    5. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    6. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    7. lower-*.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    8. lift-/.f6450.5

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  6. Applied rewrites50.5%

                    \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                  7. Step-by-step derivation
                    1. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    2. lift-*.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    3. lift-/.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    4. pow1/2N/A

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                    5. lower-pow.f64N/A

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                    6. lift-/.f64N/A

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
                    7. lift-*.f6450.7

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
                  8. Applied rewrites50.7%

                    \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

                  if -inf.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < -2.0000000000000001e-218

                  1. Initial program 97.6%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in C around 0

                    \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right)} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

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

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

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

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

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                    6. lower-*.f64N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                    7. lower--.f64N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                    8. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                    9. unpow2N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {B}^{2}}\right)}\right) \]
                    10. lower-fma.f64N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, {B}^{2}\right)}\right)}\right) \]
                    11. unpow2N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right) \]
                    12. lower-*.f6437.1

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right) \]
                  4. Applied rewrites37.1%

                    \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B \cdot B\right)}\right)}\right)} \]

                  if -2.0000000000000001e-218 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C))) < 0.0

                  1. Initial program 3.7%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in A around -inf

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                    2. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                    3. metadata-evalN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    4. lower-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    5. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    6. lower-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    7. lower-sqrt.f640.0

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  4. Applied rewrites0.0%

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
                  5. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    2. lift-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    3. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    4. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    5. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    6. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    7. lower-*.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    8. lift-/.f6448.9

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  6. Applied rewrites48.9%

                    \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]

                  if 0.0 < (/.f64 (neg.f64 (sqrt.f64 (*.f64 (*.f64 #s(literal 2 binary64) (*.f64 (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)) F)) (-.f64 (+.f64 A C) (sqrt.f64 (+.f64 (pow.f64 (-.f64 A C) #s(literal 2 binary64)) (pow.f64 B #s(literal 2 binary64)))))))) (-.f64 (pow.f64 B #s(literal 2 binary64)) (*.f64 (*.f64 #s(literal 4 binary64) A) C)))

                  1. Initial program 7.8%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in F around -inf

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                  3. Step-by-step derivation
                    1. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                    2. metadata-evalN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                    3. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                  4. Applied rewrites6.7%

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                  5. Taylor expanded in A around -inf

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  6. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                    2. lift-/.f6429.9

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  7. Applied rewrites29.9%

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                3. Recombined 4 regimes into one program.
                4. Add Preprocessing

                Alternative 7: 37.8% accurate, 3.6× speedup?

                \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} \mathbf{if}\;F \leq -1.26 \cdot 10^{-276}:\\ \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                (FPCore (A B C F)
                 :precision binary64
                 (if (<= F -1.26e-276)
                   (* -1.0 (pow (* (/ F C) -1.0) 0.5))
                   (sqrt (* -1.0 (/ F C)))))
                assert(A < B && B < C && C < F);
                double code(double A, double B, double C, double F) {
                	double tmp;
                	if (F <= -1.26e-276) {
                		tmp = -1.0 * pow(((F / C) * -1.0), 0.5);
                	} else {
                		tmp = sqrt((-1.0 * (F / C)));
                	}
                	return tmp;
                }
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                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(a, b, c, f)
                use fmin_fmax_functions
                    real(8), intent (in) :: a
                    real(8), intent (in) :: b
                    real(8), intent (in) :: c
                    real(8), intent (in) :: f
                    real(8) :: tmp
                    if (f <= (-1.26d-276)) then
                        tmp = (-1.0d0) * (((f / c) * (-1.0d0)) ** 0.5d0)
                    else
                        tmp = sqrt(((-1.0d0) * (f / c)))
                    end if
                    code = tmp
                end function
                
                assert A < B && B < C && C < F;
                public static double code(double A, double B, double C, double F) {
                	double tmp;
                	if (F <= -1.26e-276) {
                		tmp = -1.0 * Math.pow(((F / C) * -1.0), 0.5);
                	} else {
                		tmp = Math.sqrt((-1.0 * (F / C)));
                	}
                	return tmp;
                }
                
                [A, B, C, F] = sort([A, B, C, F])
                def code(A, B, C, F):
                	tmp = 0
                	if F <= -1.26e-276:
                		tmp = -1.0 * math.pow(((F / C) * -1.0), 0.5)
                	else:
                		tmp = math.sqrt((-1.0 * (F / C)))
                	return tmp
                
                A, B, C, F = sort([A, B, C, F])
                function code(A, B, C, F)
                	tmp = 0.0
                	if (F <= -1.26e-276)
                		tmp = Float64(-1.0 * (Float64(Float64(F / C) * -1.0) ^ 0.5));
                	else
                		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
                	end
                	return tmp
                end
                
                A, B, C, F = num2cell(sort([A, B, C, F])){:}
                function tmp_2 = code(A, B, C, F)
                	tmp = 0.0;
                	if (F <= -1.26e-276)
                		tmp = -1.0 * (((F / C) * -1.0) ^ 0.5);
                	else
                		tmp = sqrt((-1.0 * (F / C)));
                	end
                	tmp_2 = tmp;
                end
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                code[A_, B_, C_, F_] := If[LessEqual[F, -1.26e-276], N[(-1.0 * N[Power[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision], 0.5], $MachinePrecision]), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
                
                \begin{array}{l}
                [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
                \\
                \begin{array}{l}
                \mathbf{if}\;F \leq -1.26 \cdot 10^{-276}:\\
                \;\;\;\;-1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5}\\
                
                \mathbf{else}:\\
                \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if F < -1.25999999999999992e-276

                  1. Initial program 16.8%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in A around -inf

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                    2. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                    3. metadata-evalN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    4. lower-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    5. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    6. lower-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    7. lower-sqrt.f640.0

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  4. Applied rewrites0.0%

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
                  5. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    2. lift-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    3. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    4. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    5. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    6. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    7. lower-*.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    8. lift-/.f6433.1

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  6. Applied rewrites33.1%

                    \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                  7. Step-by-step derivation
                    1. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    2. lift-*.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    3. lift-/.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    4. pow1/2N/A

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                    5. lower-pow.f64N/A

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{\frac{1}{2}}} \]
                    6. lift-/.f64N/A

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\frac{1}{2}} \]
                    7. lift-*.f6433.2

                      \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{0.5} \]
                  8. Applied rewrites33.2%

                    \[\leadsto -1 \cdot {\left(\frac{F}{C} \cdot -1\right)}^{\color{blue}{0.5}} \]

                  if -1.25999999999999992e-276 < F

                  1. Initial program 28.0%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in F around -inf

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                  3. Step-by-step derivation
                    1. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                    2. metadata-evalN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                    3. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                  4. Applied rewrites24.4%

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                  5. Taylor expanded in A around -inf

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  6. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                    2. lift-/.f6460.9

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  7. Applied rewrites60.9%

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                3. Recombined 2 regimes into one program.
                4. Add Preprocessing

                Alternative 8: 37.8% accurate, 6.9× speedup?

                \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \begin{array}{l} \mathbf{if}\;F \leq -4.3 \cdot 10^{-275}:\\ \;\;\;\;-1 \cdot \sqrt{\frac{F}{C} \cdot -1}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\ \end{array} \end{array} \]
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                (FPCore (A B C F)
                 :precision binary64
                 (if (<= F -4.3e-275)
                   (* -1.0 (sqrt (* (/ F C) -1.0)))
                   (sqrt (* -1.0 (/ F C)))))
                assert(A < B && B < C && C < F);
                double code(double A, double B, double C, double F) {
                	double tmp;
                	if (F <= -4.3e-275) {
                		tmp = -1.0 * sqrt(((F / C) * -1.0));
                	} else {
                		tmp = sqrt((-1.0 * (F / C)));
                	}
                	return tmp;
                }
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                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(a, b, c, f)
                use fmin_fmax_functions
                    real(8), intent (in) :: a
                    real(8), intent (in) :: b
                    real(8), intent (in) :: c
                    real(8), intent (in) :: f
                    real(8) :: tmp
                    if (f <= (-4.3d-275)) then
                        tmp = (-1.0d0) * sqrt(((f / c) * (-1.0d0)))
                    else
                        tmp = sqrt(((-1.0d0) * (f / c)))
                    end if
                    code = tmp
                end function
                
                assert A < B && B < C && C < F;
                public static double code(double A, double B, double C, double F) {
                	double tmp;
                	if (F <= -4.3e-275) {
                		tmp = -1.0 * Math.sqrt(((F / C) * -1.0));
                	} else {
                		tmp = Math.sqrt((-1.0 * (F / C)));
                	}
                	return tmp;
                }
                
                [A, B, C, F] = sort([A, B, C, F])
                def code(A, B, C, F):
                	tmp = 0
                	if F <= -4.3e-275:
                		tmp = -1.0 * math.sqrt(((F / C) * -1.0))
                	else:
                		tmp = math.sqrt((-1.0 * (F / C)))
                	return tmp
                
                A, B, C, F = sort([A, B, C, F])
                function code(A, B, C, F)
                	tmp = 0.0
                	if (F <= -4.3e-275)
                		tmp = Float64(-1.0 * sqrt(Float64(Float64(F / C) * -1.0)));
                	else
                		tmp = sqrt(Float64(-1.0 * Float64(F / C)));
                	end
                	return tmp
                end
                
                A, B, C, F = num2cell(sort([A, B, C, F])){:}
                function tmp_2 = code(A, B, C, F)
                	tmp = 0.0;
                	if (F <= -4.3e-275)
                		tmp = -1.0 * sqrt(((F / C) * -1.0));
                	else
                		tmp = sqrt((-1.0 * (F / C)));
                	end
                	tmp_2 = tmp;
                end
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                code[A_, B_, C_, F_] := If[LessEqual[F, -4.3e-275], N[(-1.0 * N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]]
                
                \begin{array}{l}
                [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
                \\
                \begin{array}{l}
                \mathbf{if}\;F \leq -4.3 \cdot 10^{-275}:\\
                \;\;\;\;-1 \cdot \sqrt{\frac{F}{C} \cdot -1}\\
                
                \mathbf{else}:\\
                \;\;\;\;\sqrt{-1 \cdot \frac{F}{C}}\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if F < -4.29999999999999976e-275

                  1. Initial program 16.7%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in A around -inf

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                  3. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto -1 \cdot \color{blue}{\left(\sqrt{\frac{F}{C}} \cdot \left(\sqrt{\frac{-1}{2}} \cdot \sqrt{2}\right)\right)} \]
                    2. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\frac{-1}{2} \cdot 2}\right) \]
                    3. metadata-evalN/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    4. lower-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    5. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    6. lower-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    7. lower-sqrt.f640.0

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                  4. Applied rewrites0.0%

                    \[\leadsto \color{blue}{-1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right)} \]
                  5. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \color{blue}{\sqrt{-1}}\right) \]
                    2. lift-/.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    3. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{\color{blue}{-1}}\right) \]
                    4. lift-sqrt.f64N/A

                      \[\leadsto -1 \cdot \left(\sqrt{\frac{F}{C}} \cdot \sqrt{-1}\right) \]
                    5. sqrt-unprodN/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    6. lower-sqrt.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    7. lower-*.f64N/A

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                    8. lift-/.f6433.2

                      \[\leadsto -1 \cdot \sqrt{\frac{F}{C} \cdot -1} \]
                  6. Applied rewrites33.2%

                    \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]

                  if -4.29999999999999976e-275 < F

                  1. Initial program 28.0%

                    \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                  2. Taylor expanded in F around -inf

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                  3. Step-by-step derivation
                    1. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                    2. metadata-evalN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                    3. sqrt-unprodN/A

                      \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                  4. Applied rewrites24.2%

                    \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                  5. Taylor expanded in A around -inf

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  6. Step-by-step derivation
                    1. lower-*.f64N/A

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                    2. lift-/.f6460.2

                      \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  7. Applied rewrites60.2%

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                3. Recombined 2 regimes into one program.
                4. Add Preprocessing

                Alternative 9: 21.0% accurate, 12.0× speedup?

                \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \sqrt{-1 \cdot \frac{F}{C}} \end{array} \]
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                (FPCore (A B C F) :precision binary64 (sqrt (* -1.0 (/ F C))))
                assert(A < B && B < C && C < F);
                double code(double A, double B, double C, double F) {
                	return sqrt((-1.0 * (F / C)));
                }
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                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(a, b, c, f)
                use fmin_fmax_functions
                    real(8), intent (in) :: a
                    real(8), intent (in) :: b
                    real(8), intent (in) :: c
                    real(8), intent (in) :: f
                    code = sqrt(((-1.0d0) * (f / c)))
                end function
                
                assert A < B && B < C && C < F;
                public static double code(double A, double B, double C, double F) {
                	return Math.sqrt((-1.0 * (F / C)));
                }
                
                [A, B, C, F] = sort([A, B, C, F])
                def code(A, B, C, F):
                	return math.sqrt((-1.0 * (F / C)))
                
                A, B, C, F = sort([A, B, C, F])
                function code(A, B, C, F)
                	return sqrt(Float64(-1.0 * Float64(F / C)))
                end
                
                A, B, C, F = num2cell(sort([A, B, C, F])){:}
                function tmp = code(A, B, C, F)
                	tmp = sqrt((-1.0 * (F / C)));
                end
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                code[A_, B_, C_, F_] := N[Sqrt[N[(-1.0 * N[(F / C), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
                
                \begin{array}{l}
                [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
                \\
                \sqrt{-1 \cdot \frac{F}{C}}
                \end{array}
                
                Derivation
                1. Initial program 18.7%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in F around -inf

                  \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                3. Step-by-step derivation
                  1. sqrt-unprodN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                  2. metadata-evalN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                  3. sqrt-unprodN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                4. Applied rewrites5.2%

                  \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                5. Taylor expanded in A around -inf

                  \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                6. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                  2. lift-/.f6421.0

                    \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                7. Applied rewrites21.0%

                  \[\leadsto \sqrt{-1 \cdot \frac{F}{C}} \]
                8. Add Preprocessing

                Alternative 10: 2.0% accurate, 12.0× speedup?

                \[\begin{array}{l} [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\ \\ \sqrt{-2 \cdot \frac{F}{B}} \end{array} \]
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                (FPCore (A B C F) :precision binary64 (sqrt (* -2.0 (/ F B))))
                assert(A < B && B < C && C < F);
                double code(double A, double B, double C, double F) {
                	return sqrt((-2.0 * (F / B)));
                }
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                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(a, b, c, f)
                use fmin_fmax_functions
                    real(8), intent (in) :: a
                    real(8), intent (in) :: b
                    real(8), intent (in) :: c
                    real(8), intent (in) :: f
                    code = sqrt(((-2.0d0) * (f / b)))
                end function
                
                assert A < B && B < C && C < F;
                public static double code(double A, double B, double C, double F) {
                	return Math.sqrt((-2.0 * (F / B)));
                }
                
                [A, B, C, F] = sort([A, B, C, F])
                def code(A, B, C, F):
                	return math.sqrt((-2.0 * (F / B)))
                
                A, B, C, F = sort([A, B, C, F])
                function code(A, B, C, F)
                	return sqrt(Float64(-2.0 * Float64(F / B)))
                end
                
                A, B, C, F = num2cell(sort([A, B, C, F])){:}
                function tmp = code(A, B, C, F)
                	tmp = sqrt((-2.0 * (F / B)));
                end
                
                NOTE: A, B, C, and F should be sorted in increasing order before calling this function.
                code[A_, B_, C_, F_] := N[Sqrt[N[(-2.0 * N[(F / B), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]
                
                \begin{array}{l}
                [A, B, C, F] = \mathsf{sort}([A, B, C, F])\\
                \\
                \sqrt{-2 \cdot \frac{F}{B}}
                \end{array}
                
                Derivation
                1. Initial program 18.7%

                  \[\frac{-\sqrt{\left(2 \cdot \left(\left({B}^{2} - \left(4 \cdot A\right) \cdot C\right) \cdot F\right)\right) \cdot \left(\left(A + C\right) - \sqrt{{\left(A - C\right)}^{2} + {B}^{2}}\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                2. Taylor expanded in F around -inf

                  \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \left(\sqrt{-2} \cdot \sqrt{-1}\right)} \]
                3. Step-by-step derivation
                  1. sqrt-unprodN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{-2 \cdot -1} \]
                  2. metadata-evalN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)}} \cdot \sqrt{2} \]
                  3. sqrt-unprodN/A

                    \[\leadsto \sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{{B}^{2} + {\left(A - C\right)}^{2}}\right)}{{B}^{2} - 4 \cdot \left(A \cdot C\right)} \cdot 2} \]
                4. Applied rewrites5.2%

                  \[\leadsto \color{blue}{\sqrt{\frac{F \cdot \left(\left(A + C\right) - \sqrt{\mathsf{fma}\left(B, B, \left(A - C\right) \cdot \left(A - C\right)\right)}\right)}{B \cdot B - 4 \cdot \left(A \cdot C\right)} \cdot 2}} \]
                5. Taylor expanded in B around inf

                  \[\leadsto \sqrt{-2 \cdot \frac{F}{B}} \]
                6. Step-by-step derivation
                  1. lower-*.f64N/A

                    \[\leadsto \sqrt{-2 \cdot \frac{F}{B}} \]
                  2. lower-/.f642.0

                    \[\leadsto \sqrt{-2 \cdot \frac{F}{B}} \]
                7. Applied rewrites2.0%

                  \[\leadsto \sqrt{-2 \cdot \frac{F}{B}} \]
                8. Add Preprocessing

                Reproduce

                ?
                herbie shell --seed 2025106 
                (FPCore (A B C F)
                  :name "ABCF->ab-angle b"
                  :precision binary64
                  (/ (- (sqrt (* (* 2.0 (* (- (pow B 2.0) (* (* 4.0 A) C)) F)) (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B 2.0))))))) (- (pow B 2.0) (* (* 4.0 A) C))))