ABCF->ab-angle b

Percentage Accurate: 18.7% → 53.3%
Time: 8.8s
Alternatives: 11
Speedup: 18.2×

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 11 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: 53.3% accurate, 0.2× speedup?

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

\mathbf{elif}\;t\_4 \leq -2 \cdot 10^{-218}:\\
\;\;\;\;\frac{-\sqrt{t\_2 \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(A - C, B\_m\right)\right)}}{t\_1}\\

\mathbf{elif}\;t\_4 \leq 2 \cdot 10^{+280}:\\
\;\;\;\;\frac{-\sqrt{t\_2 \cdot \left(\left(A + -0.5 \cdot \frac{B\_m \cdot B\_m}{C}\right) - -1 \cdot A\right)}}{t\_1}\\

\mathbf{elif}\;t\_4 \leq \infty:\\
\;\;\;\;t\_5\\

\mathbf{else}:\\
\;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\_m\right)\right)}\right)\\


\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}} \]

    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) - \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. Step-by-step derivation
        1. Applied rewrites23.5%

          \[\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) - \mathsf{hypot}\left(A - C, B\right)\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
        2. Taylor expanded in C 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(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{B \cdot B - \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 \cdot B - \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 \cdot B - \left(4 \cdot A\right) \cdot C} \]
          2. lower-+.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          3. lower-*.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          4. lower-/.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          5. pow2N/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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          6. 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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
          7. lower-*.f6462.0

            \[\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 + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
        4. Applied rewrites62.0%

          \[\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(\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))) < +inf.0

        1. Initial program 3.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-/.f641.3

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

          \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
        7. Taylor expanded in F around -inf

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

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

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

            \[\leadsto \sqrt{\frac{F}{C} \cdot -1} \]
          4. lift-sqrt.f6479.7

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

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

        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)))

        1. Initial program 0.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 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. unpow2N/A

            \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
          10. lower-hypot.f6433.2

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

          \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
      3. Recombined 5 regimes into one program.
      4. Add Preprocessing

      Alternative 2: 47.7% accurate, 0.2× speedup?

      \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \begin{array}{l} t_0 := \frac{\sqrt{2}}{B\_m}\\ t_1 := \left(4 \cdot A\right) \cdot C\\ t_2 := B\_m \cdot B\_m - t\_1\\ t_3 := {B\_m}^{2} - t\_1\\ 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\_m}^{2}}\right)}}{t\_3}\\ t_5 := \sqrt{\frac{F}{C} \cdot -1}\\ t_6 := -1 \cdot t\_5\\ \mathbf{if}\;t\_4 \leq -\infty:\\ \;\;\;\;t\_6\\ \mathbf{elif}\;t\_4 \leq -2 \cdot 10^{-218}:\\ \;\;\;\;-1 \cdot \left(t\_0 \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B\_m \cdot B\_m\right)}\right)}\right)\\ \mathbf{elif}\;t\_4 \leq 0:\\ \;\;\;\;t\_6\\ \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{elif}\;t\_4 \leq \infty:\\ \;\;\;\;t\_5\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \left(t\_0 \cdot \sqrt{F \cdot \left(A - B\_m\right)}\right)\\ \end{array} \end{array} \]
      B_m = (fabs.f64 B)
      NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
      (FPCore (A B_m C F)
       :precision binary64
       (let* ((t_0 (/ (sqrt 2.0) B_m))
              (t_1 (* (* 4.0 A) C))
              (t_2 (- (* B_m B_m) t_1))
              (t_3 (- (pow B_m 2.0) t_1))
              (t_4
               (/
                (-
                 (sqrt
                  (*
                   (* 2.0 (* t_3 F))
                   (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B_m 2.0)))))))
                t_3))
              (t_5 (sqrt (* (/ F C) -1.0)))
              (t_6 (* -1.0 t_5)))
         (if (<= t_4 (- INFINITY))
           t_6
           (if (<= t_4 -2e-218)
             (* -1.0 (* t_0 (sqrt (* F (- A (sqrt (fma A A (* B_m B_m))))))))
             (if (<= t_4 0.0)
               t_6
               (if (<= t_4 2e+280)
                 (/ (- (sqrt (* (* 2.0 (* t_2 F)) (* 2.0 A)))) t_2)
                 (if (<= t_4 INFINITY)
                   t_5
                   (* -1.0 (* t_0 (sqrt (* F (- A B_m))))))))))))
      B_m = fabs(B);
      assert(A < B_m && B_m < C && C < F);
      double code(double A, double B_m, double C, double F) {
      	double t_0 = sqrt(2.0) / B_m;
      	double t_1 = (4.0 * A) * C;
      	double t_2 = (B_m * B_m) - t_1;
      	double t_3 = pow(B_m, 2.0) - t_1;
      	double t_4 = -sqrt(((2.0 * (t_3 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B_m, 2.0)))))) / t_3;
      	double t_5 = sqrt(((F / C) * -1.0));
      	double t_6 = -1.0 * t_5;
      	double tmp;
      	if (t_4 <= -((double) INFINITY)) {
      		tmp = t_6;
      	} else if (t_4 <= -2e-218) {
      		tmp = -1.0 * (t_0 * sqrt((F * (A - sqrt(fma(A, A, (B_m * B_m)))))));
      	} else if (t_4 <= 0.0) {
      		tmp = t_6;
      	} else if (t_4 <= 2e+280) {
      		tmp = -sqrt(((2.0 * (t_2 * F)) * (2.0 * A))) / t_2;
      	} else if (t_4 <= ((double) INFINITY)) {
      		tmp = t_5;
      	} else {
      		tmp = -1.0 * (t_0 * sqrt((F * (A - B_m))));
      	}
      	return tmp;
      }
      
      B_m = abs(B)
      A, B_m, C, F = sort([A, B_m, C, F])
      function code(A, B_m, C, F)
      	t_0 = Float64(sqrt(2.0) / B_m)
      	t_1 = Float64(Float64(4.0 * A) * C)
      	t_2 = Float64(Float64(B_m * B_m) - t_1)
      	t_3 = Float64((B_m ^ 2.0) - t_1)
      	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_m ^ 2.0))))))) / t_3)
      	t_5 = sqrt(Float64(Float64(F / C) * -1.0))
      	t_6 = Float64(-1.0 * t_5)
      	tmp = 0.0
      	if (t_4 <= Float64(-Inf))
      		tmp = t_6;
      	elseif (t_4 <= -2e-218)
      		tmp = Float64(-1.0 * Float64(t_0 * sqrt(Float64(F * Float64(A - sqrt(fma(A, A, Float64(B_m * B_m))))))));
      	elseif (t_4 <= 0.0)
      		tmp = t_6;
      	elseif (t_4 <= 2e+280)
      		tmp = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_2 * F)) * Float64(2.0 * A)))) / t_2);
      	elseif (t_4 <= Inf)
      		tmp = t_5;
      	else
      		tmp = Float64(-1.0 * Float64(t_0 * sqrt(Float64(F * Float64(A - B_m)))));
      	end
      	return tmp
      end
      
      B_m = N[Abs[B], $MachinePrecision]
      NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
      code[A_, B$95$m_, C_, F_] := Block[{t$95$0 = N[(N[Sqrt[2.0], $MachinePrecision] / B$95$m), $MachinePrecision]}, Block[{t$95$1 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$2 = N[(N[(B$95$m * B$95$m), $MachinePrecision] - t$95$1), $MachinePrecision]}, Block[{t$95$3 = N[(N[Power[B$95$m, 2.0], $MachinePrecision] - t$95$1), $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$95$m, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$3), $MachinePrecision]}, Block[{t$95$5 = N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision]}, Block[{t$95$6 = N[(-1.0 * t$95$5), $MachinePrecision]}, If[LessEqual[t$95$4, (-Infinity)], t$95$6, If[LessEqual[t$95$4, -2e-218], N[(-1.0 * N[(t$95$0 * N[Sqrt[N[(F * N[(A - N[Sqrt[N[(A * A + N[(B$95$m * B$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$4, 0.0], t$95$6, 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], If[LessEqual[t$95$4, Infinity], t$95$5, N[(-1.0 * N[(t$95$0 * N[Sqrt[N[(F * N[(A - B$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]]]]]]
      
      \begin{array}{l}
      B_m = \left|B\right|
      \\
      [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
      \\
      \begin{array}{l}
      t_0 := \frac{\sqrt{2}}{B\_m}\\
      t_1 := \left(4 \cdot A\right) \cdot C\\
      t_2 := B\_m \cdot B\_m - t\_1\\
      t_3 := {B\_m}^{2} - t\_1\\
      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\_m}^{2}}\right)}}{t\_3}\\
      t_5 := \sqrt{\frac{F}{C} \cdot -1}\\
      t_6 := -1 \cdot t\_5\\
      \mathbf{if}\;t\_4 \leq -\infty:\\
      \;\;\;\;t\_6\\
      
      \mathbf{elif}\;t\_4 \leq -2 \cdot 10^{-218}:\\
      \;\;\;\;-1 \cdot \left(t\_0 \cdot \sqrt{F \cdot \left(A - \sqrt{\mathsf{fma}\left(A, A, B\_m \cdot B\_m\right)}\right)}\right)\\
      
      \mathbf{elif}\;t\_4 \leq 0:\\
      \;\;\;\;t\_6\\
      
      \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{elif}\;t\_4 \leq \infty:\\
      \;\;\;\;t\_5\\
      
      \mathbf{else}:\\
      \;\;\;\;-1 \cdot \left(t\_0 \cdot \sqrt{F \cdot \left(A - B\_m\right)}\right)\\
      
      
      \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 or -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.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 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-/.f6449.8

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

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

        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. unpow2N/A

            \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
          10. lower-hypot.f6471.5

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

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

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

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

            \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{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{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
          5. pow2N/A

            \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {B}^{2}}\right)}\right) \]
          6. 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) \]
          7. pow2N/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) \]
          8. lift-*.f6471.4

            \[\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) \]
        6. Applied rewrites71.4%

          \[\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) \]

        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. Step-by-step derivation
          1. Applied rewrites96.3%

            \[\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) - \mathsf{hypot}\left(A - C, B\right)\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))) < +inf.0

          1. Initial program 3.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-/.f641.3

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

            \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
          7. Taylor expanded in F around -inf

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

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

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

              \[\leadsto \sqrt{\frac{F}{C} \cdot -1} \]
            4. lift-sqrt.f6479.7

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

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

          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)))

          1. Initial program 0.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 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. unpow2N/A

              \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
            10. lower-hypot.f6433.2

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

            \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
          5. Taylor expanded in A around 0

            \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
          6. Step-by-step derivation
            1. Applied rewrites29.8%

              \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
          7. Recombined 5 regimes into one program.
          8. Add Preprocessing

          Alternative 3: 48.2% accurate, 0.2× speedup?

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

            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. unpow2N/A

                \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
              10. lower-hypot.f6471.5

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

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

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

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

                \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{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{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
              5. pow2N/A

                \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {B}^{2}}\right)}\right) \]
              6. 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) \]
              7. pow2N/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) \]
              8. lift-*.f6471.4

                \[\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) \]
            6. Applied rewrites71.4%

              \[\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) \]

            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. Step-by-step derivation
              1. Applied rewrites23.5%

                \[\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) - \mathsf{hypot}\left(A - C, B\right)\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
              2. Taylor expanded in C 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(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{B \cdot B - \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 \cdot B - \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 \cdot B - \left(4 \cdot A\right) \cdot C} \]
                2. lower-+.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                3. lower-*.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                4. lower-/.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                5. pow2N/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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                6. 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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                7. lower-*.f6462.0

                  \[\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 + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
              4. Applied rewrites62.0%

                \[\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(\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))) < +inf.0

              1. Initial program 3.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-/.f641.3

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

                \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
              7. Taylor expanded in F around -inf

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

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

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

                  \[\leadsto \sqrt{\frac{F}{C} \cdot -1} \]
                4. lift-sqrt.f6479.7

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

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

              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)))

              1. Initial program 0.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 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. unpow2N/A

                  \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                10. lower-hypot.f6433.2

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

                \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
              5. Taylor expanded in A around 0

                \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
              6. Step-by-step derivation
                1. Applied rewrites29.8%

                  \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
              7. Recombined 5 regimes into one program.
              8. Add Preprocessing

              Alternative 4: 46.8% accurate, 0.2× speedup?

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

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

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

                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. unpow2N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                  10. lower-hypot.f6471.5

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

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

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

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

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{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{F \cdot \left(A - \sqrt{{A}^{2} + {B}^{2}}\right)}\right) \]
                  5. pow2N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {B}^{2}}\right)}\right) \]
                  6. 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) \]
                  7. pow2N/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) \]
                  8. lift-*.f6471.4

                    \[\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) \]
                6. Applied rewrites71.4%

                  \[\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) \]

                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))) < +inf.0

                1. Initial program 44.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-/.f641.3

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

                  \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                7. Taylor expanded in F around -inf

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

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

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

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

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

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

                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)))

                1. Initial program 0.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 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. unpow2N/A

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                  10. lower-hypot.f6433.2

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

                  \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
                5. Taylor expanded in A around 0

                  \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
                6. Step-by-step derivation
                  1. Applied rewrites29.8%

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
                7. Recombined 4 regimes into one program.
                8. Add Preprocessing

                Alternative 5: 44.5% accurate, 0.2× speedup?

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

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

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

                  if -2e53 < (/.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 or +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)))

                  1. Initial program 17.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 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. unpow2N/A

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                    10. lower-hypot.f6441.2

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

                    \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
                  5. Taylor expanded in A around 0

                    \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
                  6. Step-by-step derivation
                    1. Applied rewrites36.5%

                      \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]

                    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))) < +inf.0

                    1. Initial program 44.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-/.f641.3

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

                      \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                    7. Taylor expanded in F around -inf

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

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

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

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

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

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

                  Alternative 6: 49.0% accurate, 0.3× speedup?

                  \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \begin{array}{l} t_0 := \left(4 \cdot A\right) \cdot C\\ t_1 := B\_m \cdot B\_m - t\_0\\ t_2 := {B\_m}^{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\_m}^{2}}\right)}}{t\_2}\\ \mathbf{if}\;t\_3 \leq -5 \cdot 10^{-159}:\\ \;\;\;\;-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(B\_m, A - C\right)\right)}{B\_m \cdot B\_m - 4 \cdot \left(A \cdot C\right)} \cdot 2}\\ \mathbf{elif}\;t\_3 \leq 2 \cdot 10^{+280}:\\ \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B\_m \cdot B\_m}{C}\right) - -1 \cdot A\right)}}{t\_1}\\ \mathbf{elif}\;t\_3 \leq \infty:\\ \;\;\;\;\sqrt{\frac{F}{C} \cdot -1}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\_m\right)\right)}\right)\\ \end{array} \end{array} \]
                  B_m = (fabs.f64 B)
                  NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                  (FPCore (A B_m C F)
                   :precision binary64
                   (let* ((t_0 (* (* 4.0 A) C))
                          (t_1 (- (* B_m B_m) t_0))
                          (t_2 (- (pow B_m 2.0) t_0))
                          (t_3
                           (/
                            (-
                             (sqrt
                              (*
                               (* 2.0 (* t_2 F))
                               (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B_m 2.0)))))))
                            t_2)))
                     (if (<= t_3 -5e-159)
                       (*
                        -1.0
                        (sqrt
                         (*
                          (/
                           (* F (- (+ A C) (hypot B_m (- A C))))
                           (- (* B_m B_m) (* 4.0 (* A C))))
                          2.0)))
                       (if (<= t_3 2e+280)
                         (/
                          (-
                           (sqrt
                            (*
                             (* 2.0 (* t_1 F))
                             (- (+ A (* -0.5 (/ (* B_m B_m) C))) (* -1.0 A)))))
                          t_1)
                         (if (<= t_3 INFINITY)
                           (sqrt (* (/ F C) -1.0))
                           (* -1.0 (* (/ (sqrt 2.0) B_m) (sqrt (* F (- A (hypot A B_m)))))))))))
                  B_m = fabs(B);
                  assert(A < B_m && B_m < C && C < F);
                  double code(double A, double B_m, double C, double F) {
                  	double t_0 = (4.0 * A) * C;
                  	double t_1 = (B_m * B_m) - t_0;
                  	double t_2 = pow(B_m, 2.0) - t_0;
                  	double t_3 = -sqrt(((2.0 * (t_2 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B_m, 2.0)))))) / t_2;
                  	double tmp;
                  	if (t_3 <= -5e-159) {
                  		tmp = -1.0 * sqrt((((F * ((A + C) - hypot(B_m, (A - C)))) / ((B_m * B_m) - (4.0 * (A * C)))) * 2.0));
                  	} else if (t_3 <= 2e+280) {
                  		tmp = -sqrt(((2.0 * (t_1 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_1;
                  	} else if (t_3 <= ((double) INFINITY)) {
                  		tmp = sqrt(((F / C) * -1.0));
                  	} else {
                  		tmp = -1.0 * ((sqrt(2.0) / B_m) * sqrt((F * (A - hypot(A, B_m)))));
                  	}
                  	return tmp;
                  }
                  
                  B_m = Math.abs(B);
                  assert A < B_m && B_m < C && C < F;
                  public static double code(double A, double B_m, double C, double F) {
                  	double t_0 = (4.0 * A) * C;
                  	double t_1 = (B_m * B_m) - t_0;
                  	double t_2 = Math.pow(B_m, 2.0) - t_0;
                  	double t_3 = -Math.sqrt(((2.0 * (t_2 * F)) * ((A + C) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B_m, 2.0)))))) / t_2;
                  	double tmp;
                  	if (t_3 <= -5e-159) {
                  		tmp = -1.0 * Math.sqrt((((F * ((A + C) - Math.hypot(B_m, (A - C)))) / ((B_m * B_m) - (4.0 * (A * C)))) * 2.0));
                  	} else if (t_3 <= 2e+280) {
                  		tmp = -Math.sqrt(((2.0 * (t_1 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_1;
                  	} else if (t_3 <= Double.POSITIVE_INFINITY) {
                  		tmp = Math.sqrt(((F / C) * -1.0));
                  	} else {
                  		tmp = -1.0 * ((Math.sqrt(2.0) / B_m) * Math.sqrt((F * (A - Math.hypot(A, B_m)))));
                  	}
                  	return tmp;
                  }
                  
                  B_m = math.fabs(B)
                  [A, B_m, C, F] = sort([A, B_m, C, F])
                  def code(A, B_m, C, F):
                  	t_0 = (4.0 * A) * C
                  	t_1 = (B_m * B_m) - t_0
                  	t_2 = math.pow(B_m, 2.0) - t_0
                  	t_3 = -math.sqrt(((2.0 * (t_2 * F)) * ((A + C) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B_m, 2.0)))))) / t_2
                  	tmp = 0
                  	if t_3 <= -5e-159:
                  		tmp = -1.0 * math.sqrt((((F * ((A + C) - math.hypot(B_m, (A - C)))) / ((B_m * B_m) - (4.0 * (A * C)))) * 2.0))
                  	elif t_3 <= 2e+280:
                  		tmp = -math.sqrt(((2.0 * (t_1 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_1
                  	elif t_3 <= math.inf:
                  		tmp = math.sqrt(((F / C) * -1.0))
                  	else:
                  		tmp = -1.0 * ((math.sqrt(2.0) / B_m) * math.sqrt((F * (A - math.hypot(A, B_m)))))
                  	return tmp
                  
                  B_m = abs(B)
                  A, B_m, C, F = sort([A, B_m, C, F])
                  function code(A, B_m, C, F)
                  	t_0 = Float64(Float64(4.0 * A) * C)
                  	t_1 = Float64(Float64(B_m * B_m) - t_0)
                  	t_2 = Float64((B_m ^ 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_m ^ 2.0))))))) / t_2)
                  	tmp = 0.0
                  	if (t_3 <= -5e-159)
                  		tmp = Float64(-1.0 * sqrt(Float64(Float64(Float64(F * Float64(Float64(A + C) - hypot(B_m, Float64(A - C)))) / Float64(Float64(B_m * B_m) - Float64(4.0 * Float64(A * C)))) * 2.0)));
                  	elseif (t_3 <= 2e+280)
                  		tmp = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_1 * F)) * Float64(Float64(A + Float64(-0.5 * Float64(Float64(B_m * B_m) / C))) - Float64(-1.0 * A))))) / t_1);
                  	elseif (t_3 <= Inf)
                  		tmp = sqrt(Float64(Float64(F / C) * -1.0));
                  	else
                  		tmp = Float64(-1.0 * Float64(Float64(sqrt(2.0) / B_m) * sqrt(Float64(F * Float64(A - hypot(A, B_m))))));
                  	end
                  	return tmp
                  end
                  
                  B_m = abs(B);
                  A, B_m, C, F = num2cell(sort([A, B_m, C, F])){:}
                  function tmp_2 = code(A, B_m, C, F)
                  	t_0 = (4.0 * A) * C;
                  	t_1 = (B_m * B_m) - t_0;
                  	t_2 = (B_m ^ 2.0) - t_0;
                  	t_3 = -sqrt(((2.0 * (t_2 * F)) * ((A + C) - sqrt((((A - C) ^ 2.0) + (B_m ^ 2.0)))))) / t_2;
                  	tmp = 0.0;
                  	if (t_3 <= -5e-159)
                  		tmp = -1.0 * sqrt((((F * ((A + C) - hypot(B_m, (A - C)))) / ((B_m * B_m) - (4.0 * (A * C)))) * 2.0));
                  	elseif (t_3 <= 2e+280)
                  		tmp = -sqrt(((2.0 * (t_1 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_1;
                  	elseif (t_3 <= Inf)
                  		tmp = sqrt(((F / C) * -1.0));
                  	else
                  		tmp = -1.0 * ((sqrt(2.0) / B_m) * sqrt((F * (A - hypot(A, B_m)))));
                  	end
                  	tmp_2 = tmp;
                  end
                  
                  B_m = N[Abs[B], $MachinePrecision]
                  NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                  code[A_, B$95$m_, C_, F_] := Block[{t$95$0 = N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]}, Block[{t$95$1 = N[(N[(B$95$m * B$95$m), $MachinePrecision] - t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[Power[B$95$m, 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$95$m, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$2), $MachinePrecision]}, If[LessEqual[t$95$3, -5e-159], N[(-1.0 * N[Sqrt[N[(N[(N[(F * N[(N[(A + C), $MachinePrecision] - N[Sqrt[B$95$m ^ 2 + N[(A - C), $MachinePrecision] ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(N[(B$95$m * B$95$m), $MachinePrecision] - N[(4.0 * N[(A * C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * 2.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], If[LessEqual[t$95$3, 2e+280], N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$1 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + N[(-0.5 * N[(N[(B$95$m * B$95$m), $MachinePrecision] / C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$1), $MachinePrecision], If[LessEqual[t$95$3, Infinity], N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision], N[(-1.0 * N[(N[(N[Sqrt[2.0], $MachinePrecision] / B$95$m), $MachinePrecision] * N[Sqrt[N[(F * N[(A - N[Sqrt[A ^ 2 + B$95$m ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]]]]]]
                  
                  \begin{array}{l}
                  B_m = \left|B\right|
                  \\
                  [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
                  \\
                  \begin{array}{l}
                  t_0 := \left(4 \cdot A\right) \cdot C\\
                  t_1 := B\_m \cdot B\_m - t\_0\\
                  t_2 := {B\_m}^{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\_m}^{2}}\right)}}{t\_2}\\
                  \mathbf{if}\;t\_3 \leq -5 \cdot 10^{-159}:\\
                  \;\;\;\;-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(B\_m, A - C\right)\right)}{B\_m \cdot B\_m - 4 \cdot \left(A \cdot C\right)} \cdot 2}\\
                  
                  \mathbf{elif}\;t\_3 \leq 2 \cdot 10^{+280}:\\
                  \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_1 \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B\_m \cdot B\_m}{C}\right) - -1 \cdot A\right)}}{t\_1}\\
                  
                  \mathbf{elif}\;t\_3 \leq \infty:\\
                  \;\;\;\;\sqrt{\frac{F}{C} \cdot -1}\\
                  
                  \mathbf{else}:\\
                  \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\_m\right)\right)}\right)\\
                  
                  
                  \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))) < -5.00000000000000032e-159

                    1. Initial program 39.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 rewrites59.1%

                      \[\leadsto \color{blue}{-1 \cdot \sqrt{\frac{F \cdot \left(\left(A + C\right) - \mathsf{hypot}\left(B, A - C\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. Step-by-step derivation
                      1. Applied rewrites28.8%

                        \[\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) - \mathsf{hypot}\left(A - C, B\right)\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
                      2. Taylor expanded in C 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(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{B \cdot B - \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 \cdot B - \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 \cdot B - \left(4 \cdot A\right) \cdot C} \]
                        2. lower-+.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                        3. lower-*.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                        4. lower-/.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                        5. pow2N/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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                        6. 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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                        7. lower-*.f6458.7

                          \[\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 + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                      4. Applied rewrites58.7%

                        \[\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(\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))) < +inf.0

                      1. Initial program 3.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-/.f641.3

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

                        \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                      7. Taylor expanded in F around -inf

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

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

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

                          \[\leadsto \sqrt{\frac{F}{C} \cdot -1} \]
                        4. lift-sqrt.f6479.7

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

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

                      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)))

                      1. Initial program 0.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 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. unpow2N/A

                          \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                        10. lower-hypot.f6433.2

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

                        \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
                    3. Recombined 4 regimes into one program.
                    4. Add Preprocessing

                    Alternative 7: 25.8% accurate, 0.9× speedup?

                    \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \begin{array}{l} t_0 := {B\_m}^{2} - \left(4 \cdot A\right) \cdot C\\ \mathbf{if}\;\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\_m}^{2}}\right)}}{t\_0} \leq -2 \cdot 10^{-218}:\\ \;\;\;\;\sqrt{A \cdot F} \cdot \frac{-2}{B\_m}\\ \mathbf{else}:\\ \;\;\;\;\sqrt{\frac{F}{C} \cdot -1}\\ \end{array} \end{array} \]
                    B_m = (fabs.f64 B)
                    NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                    (FPCore (A B_m C F)
                     :precision binary64
                     (let* ((t_0 (- (pow B_m 2.0) (* (* 4.0 A) C))))
                       (if (<=
                            (/
                             (-
                              (sqrt
                               (*
                                (* 2.0 (* t_0 F))
                                (- (+ A C) (sqrt (+ (pow (- A C) 2.0) (pow B_m 2.0)))))))
                             t_0)
                            -2e-218)
                         (* (sqrt (* A F)) (/ -2.0 B_m))
                         (sqrt (* (/ F C) -1.0)))))
                    B_m = fabs(B);
                    assert(A < B_m && B_m < C && C < F);
                    double code(double A, double B_m, double C, double F) {
                    	double t_0 = pow(B_m, 2.0) - ((4.0 * A) * C);
                    	double tmp;
                    	if ((-sqrt(((2.0 * (t_0 * F)) * ((A + C) - sqrt((pow((A - C), 2.0) + pow(B_m, 2.0)))))) / t_0) <= -2e-218) {
                    		tmp = sqrt((A * F)) * (-2.0 / B_m);
                    	} else {
                    		tmp = sqrt(((F / C) * -1.0));
                    	}
                    	return tmp;
                    }
                    
                    B_m =     private
                    NOTE: A, B_m, 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_m, c, f)
                    use fmin_fmax_functions
                        real(8), intent (in) :: a
                        real(8), intent (in) :: b_m
                        real(8), intent (in) :: c
                        real(8), intent (in) :: f
                        real(8) :: t_0
                        real(8) :: tmp
                        t_0 = (b_m ** 2.0d0) - ((4.0d0 * a) * c)
                        if ((-sqrt(((2.0d0 * (t_0 * f)) * ((a + c) - sqrt((((a - c) ** 2.0d0) + (b_m ** 2.0d0)))))) / t_0) <= (-2d-218)) then
                            tmp = sqrt((a * f)) * ((-2.0d0) / b_m)
                        else
                            tmp = sqrt(((f / c) * (-1.0d0)))
                        end if
                        code = tmp
                    end function
                    
                    B_m = Math.abs(B);
                    assert A < B_m && B_m < C && C < F;
                    public static double code(double A, double B_m, double C, double F) {
                    	double t_0 = Math.pow(B_m, 2.0) - ((4.0 * A) * C);
                    	double tmp;
                    	if ((-Math.sqrt(((2.0 * (t_0 * F)) * ((A + C) - Math.sqrt((Math.pow((A - C), 2.0) + Math.pow(B_m, 2.0)))))) / t_0) <= -2e-218) {
                    		tmp = Math.sqrt((A * F)) * (-2.0 / B_m);
                    	} else {
                    		tmp = Math.sqrt(((F / C) * -1.0));
                    	}
                    	return tmp;
                    }
                    
                    B_m = math.fabs(B)
                    [A, B_m, C, F] = sort([A, B_m, C, F])
                    def code(A, B_m, C, F):
                    	t_0 = math.pow(B_m, 2.0) - ((4.0 * A) * C)
                    	tmp = 0
                    	if (-math.sqrt(((2.0 * (t_0 * F)) * ((A + C) - math.sqrt((math.pow((A - C), 2.0) + math.pow(B_m, 2.0)))))) / t_0) <= -2e-218:
                    		tmp = math.sqrt((A * F)) * (-2.0 / B_m)
                    	else:
                    		tmp = math.sqrt(((F / C) * -1.0))
                    	return tmp
                    
                    B_m = abs(B)
                    A, B_m, C, F = sort([A, B_m, C, F])
                    function code(A, B_m, C, F)
                    	t_0 = Float64((B_m ^ 2.0) - Float64(Float64(4.0 * A) * C))
                    	tmp = 0.0
                    	if (Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_0 * F)) * Float64(Float64(A + C) - sqrt(Float64((Float64(A - C) ^ 2.0) + (B_m ^ 2.0))))))) / t_0) <= -2e-218)
                    		tmp = Float64(sqrt(Float64(A * F)) * Float64(-2.0 / B_m));
                    	else
                    		tmp = sqrt(Float64(Float64(F / C) * -1.0));
                    	end
                    	return tmp
                    end
                    
                    B_m = abs(B);
                    A, B_m, C, F = num2cell(sort([A, B_m, C, F])){:}
                    function tmp_2 = code(A, B_m, C, F)
                    	t_0 = (B_m ^ 2.0) - ((4.0 * A) * C);
                    	tmp = 0.0;
                    	if ((-sqrt(((2.0 * (t_0 * F)) * ((A + C) - sqrt((((A - C) ^ 2.0) + (B_m ^ 2.0)))))) / t_0) <= -2e-218)
                    		tmp = sqrt((A * F)) * (-2.0 / B_m);
                    	else
                    		tmp = sqrt(((F / C) * -1.0));
                    	end
                    	tmp_2 = tmp;
                    end
                    
                    B_m = N[Abs[B], $MachinePrecision]
                    NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                    code[A_, B$95$m_, C_, F_] := Block[{t$95$0 = N[(N[Power[B$95$m, 2.0], $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[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$95$m, 2.0], $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$0), $MachinePrecision], -2e-218], N[(N[Sqrt[N[(A * F), $MachinePrecision]], $MachinePrecision] * N[(-2.0 / B$95$m), $MachinePrecision]), $MachinePrecision], N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision]]]
                    
                    \begin{array}{l}
                    B_m = \left|B\right|
                    \\
                    [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
                    \\
                    \begin{array}{l}
                    t_0 := {B\_m}^{2} - \left(4 \cdot A\right) \cdot C\\
                    \mathbf{if}\;\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\_m}^{2}}\right)}}{t\_0} \leq -2 \cdot 10^{-218}:\\
                    \;\;\;\;\sqrt{A \cdot F} \cdot \frac{-2}{B\_m}\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;\sqrt{\frac{F}{C} \cdot -1}\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 2 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))) < -2.0000000000000001e-218

                      1. Initial program 42.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 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. unpow2N/A

                          \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                        10. lower-hypot.f6444.0

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

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

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

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

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

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

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

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

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

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

                          \[\leadsto \sqrt{A \cdot F} \cdot \frac{-1 \cdot {2}^{1}}{B} \]
                        9. metadata-evalN/A

                          \[\leadsto \sqrt{A \cdot F} \cdot \frac{-1 \cdot 2}{B} \]
                        10. metadata-evalN/A

                          \[\leadsto \sqrt{A \cdot F} \cdot \frac{-2}{B} \]
                        11. lower-/.f6415.6

                          \[\leadsto \sqrt{A \cdot F} \cdot \frac{-2}{B} \]
                      7. Applied rewrites15.6%

                        \[\leadsto \sqrt{A \cdot F} \cdot \color{blue}{\frac{-2}{B}} \]

                      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)))

                      1. Initial program 6.9%

                        \[\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-/.f6422.8

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

                        \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                      7. Taylor expanded in F around -inf

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

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

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

                          \[\leadsto \sqrt{\frac{F}{C} \cdot -1} \]
                        4. lift-sqrt.f6430.9

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

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

                    Alternative 8: 41.2% accurate, 1.9× speedup?

                    \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \begin{array}{l} \mathbf{if}\;{B\_m}^{2} \leq 5 \cdot 10^{-273}:\\ \;\;\;\;\frac{-\sqrt{-8 \cdot \left(A \cdot \left(C \cdot \left(F \cdot \left(A - -1 \cdot A\right)\right)\right)\right)}}{-4 \cdot \left(A \cdot C\right)}\\ \mathbf{elif}\;{B\_m}^{2} \leq 2 \cdot 10^{+74}:\\ \;\;\;\;-1 \cdot \sqrt{\frac{F}{C} \cdot -1}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - B\_m\right)}\right)\\ \end{array} \end{array} \]
                    B_m = (fabs.f64 B)
                    NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                    (FPCore (A B_m C F)
                     :precision binary64
                     (if (<= (pow B_m 2.0) 5e-273)
                       (/ (- (sqrt (* -8.0 (* A (* C (* F (- A (* -1.0 A)))))))) (* -4.0 (* A C)))
                       (if (<= (pow B_m 2.0) 2e+74)
                         (* -1.0 (sqrt (* (/ F C) -1.0)))
                         (* -1.0 (* (/ (sqrt 2.0) B_m) (sqrt (* F (- A B_m))))))))
                    B_m = fabs(B);
                    assert(A < B_m && B_m < C && C < F);
                    double code(double A, double B_m, double C, double F) {
                    	double tmp;
                    	if (pow(B_m, 2.0) <= 5e-273) {
                    		tmp = -sqrt((-8.0 * (A * (C * (F * (A - (-1.0 * A))))))) / (-4.0 * (A * C));
                    	} else if (pow(B_m, 2.0) <= 2e+74) {
                    		tmp = -1.0 * sqrt(((F / C) * -1.0));
                    	} else {
                    		tmp = -1.0 * ((sqrt(2.0) / B_m) * sqrt((F * (A - B_m))));
                    	}
                    	return tmp;
                    }
                    
                    B_m =     private
                    NOTE: A, B_m, 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_m, c, f)
                    use fmin_fmax_functions
                        real(8), intent (in) :: a
                        real(8), intent (in) :: b_m
                        real(8), intent (in) :: c
                        real(8), intent (in) :: f
                        real(8) :: tmp
                        if ((b_m ** 2.0d0) <= 5d-273) then
                            tmp = -sqrt(((-8.0d0) * (a * (c * (f * (a - ((-1.0d0) * a))))))) / ((-4.0d0) * (a * c))
                        else if ((b_m ** 2.0d0) <= 2d+74) then
                            tmp = (-1.0d0) * sqrt(((f / c) * (-1.0d0)))
                        else
                            tmp = (-1.0d0) * ((sqrt(2.0d0) / b_m) * sqrt((f * (a - b_m))))
                        end if
                        code = tmp
                    end function
                    
                    B_m = Math.abs(B);
                    assert A < B_m && B_m < C && C < F;
                    public static double code(double A, double B_m, double C, double F) {
                    	double tmp;
                    	if (Math.pow(B_m, 2.0) <= 5e-273) {
                    		tmp = -Math.sqrt((-8.0 * (A * (C * (F * (A - (-1.0 * A))))))) / (-4.0 * (A * C));
                    	} else if (Math.pow(B_m, 2.0) <= 2e+74) {
                    		tmp = -1.0 * Math.sqrt(((F / C) * -1.0));
                    	} else {
                    		tmp = -1.0 * ((Math.sqrt(2.0) / B_m) * Math.sqrt((F * (A - B_m))));
                    	}
                    	return tmp;
                    }
                    
                    B_m = math.fabs(B)
                    [A, B_m, C, F] = sort([A, B_m, C, F])
                    def code(A, B_m, C, F):
                    	tmp = 0
                    	if math.pow(B_m, 2.0) <= 5e-273:
                    		tmp = -math.sqrt((-8.0 * (A * (C * (F * (A - (-1.0 * A))))))) / (-4.0 * (A * C))
                    	elif math.pow(B_m, 2.0) <= 2e+74:
                    		tmp = -1.0 * math.sqrt(((F / C) * -1.0))
                    	else:
                    		tmp = -1.0 * ((math.sqrt(2.0) / B_m) * math.sqrt((F * (A - B_m))))
                    	return tmp
                    
                    B_m = abs(B)
                    A, B_m, C, F = sort([A, B_m, C, F])
                    function code(A, B_m, C, F)
                    	tmp = 0.0
                    	if ((B_m ^ 2.0) <= 5e-273)
                    		tmp = Float64(Float64(-sqrt(Float64(-8.0 * Float64(A * Float64(C * Float64(F * Float64(A - Float64(-1.0 * A)))))))) / Float64(-4.0 * Float64(A * C)));
                    	elseif ((B_m ^ 2.0) <= 2e+74)
                    		tmp = Float64(-1.0 * sqrt(Float64(Float64(F / C) * -1.0)));
                    	else
                    		tmp = Float64(-1.0 * Float64(Float64(sqrt(2.0) / B_m) * sqrt(Float64(F * Float64(A - B_m)))));
                    	end
                    	return tmp
                    end
                    
                    B_m = abs(B);
                    A, B_m, C, F = num2cell(sort([A, B_m, C, F])){:}
                    function tmp_2 = code(A, B_m, C, F)
                    	tmp = 0.0;
                    	if ((B_m ^ 2.0) <= 5e-273)
                    		tmp = -sqrt((-8.0 * (A * (C * (F * (A - (-1.0 * A))))))) / (-4.0 * (A * C));
                    	elseif ((B_m ^ 2.0) <= 2e+74)
                    		tmp = -1.0 * sqrt(((F / C) * -1.0));
                    	else
                    		tmp = -1.0 * ((sqrt(2.0) / B_m) * sqrt((F * (A - B_m))));
                    	end
                    	tmp_2 = tmp;
                    end
                    
                    B_m = N[Abs[B], $MachinePrecision]
                    NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                    code[A_, B$95$m_, C_, F_] := If[LessEqual[N[Power[B$95$m, 2.0], $MachinePrecision], 5e-273], N[((-N[Sqrt[N[(-8.0 * N[(A * N[(C * N[(F * N[(A - N[(-1.0 * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / N[(-4.0 * N[(A * C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[N[Power[B$95$m, 2.0], $MachinePrecision], 2e+74], N[(-1.0 * N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision]), $MachinePrecision], N[(-1.0 * N[(N[(N[Sqrt[2.0], $MachinePrecision] / B$95$m), $MachinePrecision] * N[Sqrt[N[(F * N[(A - B$95$m), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
                    
                    \begin{array}{l}
                    B_m = \left|B\right|
                    \\
                    [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
                    \\
                    \begin{array}{l}
                    \mathbf{if}\;{B\_m}^{2} \leq 5 \cdot 10^{-273}:\\
                    \;\;\;\;\frac{-\sqrt{-8 \cdot \left(A \cdot \left(C \cdot \left(F \cdot \left(A - -1 \cdot A\right)\right)\right)\right)}}{-4 \cdot \left(A \cdot C\right)}\\
                    
                    \mathbf{elif}\;{B\_m}^{2} \leq 2 \cdot 10^{+74}:\\
                    \;\;\;\;-1 \cdot \sqrt{\frac{F}{C} \cdot -1}\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - B\_m\right)}\right)\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 3 regimes
                    2. if (pow.f64 B #s(literal 2 binary64)) < 4.99999999999999965e-273

                      1. Initial program 18.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{\color{blue}{-8 \cdot \left(A \cdot \left(C \cdot \left(F \cdot \left(A - -1 \cdot A\right)\right)\right)\right)}}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                      3. Step-by-step derivation
                        1. lower-*.f64N/A

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

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

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

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

                          \[\leadsto \frac{-\sqrt{-8 \cdot \left(A \cdot \left(C \cdot \left(F \cdot \left(A - \color{blue}{-1 \cdot A}\right)\right)\right)\right)}}{{B}^{2} - \left(4 \cdot A\right) \cdot C} \]
                        6. lower-*.f6444.1

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

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

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

                          \[\leadsto \frac{-\sqrt{-8 \cdot \left(A \cdot \left(C \cdot \left(F \cdot \left(A - -1 \cdot A\right)\right)\right)\right)}}{-4 \cdot \color{blue}{\left(A \cdot C\right)}} \]
                        2. lower-*.f6444.0

                          \[\leadsto \frac{-\sqrt{-8 \cdot \left(A \cdot \left(C \cdot \left(F \cdot \left(A - -1 \cdot A\right)\right)\right)\right)}}{-4 \cdot \left(A \cdot \color{blue}{C}\right)} \]
                      7. Applied rewrites44.0%

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

                      if 4.99999999999999965e-273 < (pow.f64 B #s(literal 2 binary64)) < 1.9999999999999999e74

                      1. Initial program 30.9%

                        \[\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-/.f6435.2

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

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

                      if 1.9999999999999999e74 < (pow.f64 B #s(literal 2 binary64))

                      1. Initial program 10.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 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. unpow2N/A

                          \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                        10. lower-hypot.f6449.8

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

                        \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
                      5. Taylor expanded in A around 0

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

                          \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - B\right)}\right) \]
                      7. Recombined 3 regimes into one program.
                      8. Add Preprocessing

                      Alternative 9: 46.0% accurate, 3.1× speedup?

                      \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \begin{array}{l} t_0 := B\_m \cdot B\_m - \left(4 \cdot A\right) \cdot C\\ \mathbf{if}\;B\_m \leq 1.2 \cdot 10^{+37}:\\ \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_0 \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B\_m \cdot B\_m}{C}\right) - -1 \cdot A\right)}}{t\_0}\\ \mathbf{else}:\\ \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\_m\right)\right)}\right)\\ \end{array} \end{array} \]
                      B_m = (fabs.f64 B)
                      NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                      (FPCore (A B_m C F)
                       :precision binary64
                       (let* ((t_0 (- (* B_m B_m) (* (* 4.0 A) C))))
                         (if (<= B_m 1.2e+37)
                           (/
                            (-
                             (sqrt
                              (* (* 2.0 (* t_0 F)) (- (+ A (* -0.5 (/ (* B_m B_m) C))) (* -1.0 A)))))
                            t_0)
                           (* -1.0 (* (/ (sqrt 2.0) B_m) (sqrt (* F (- A (hypot A B_m)))))))))
                      B_m = fabs(B);
                      assert(A < B_m && B_m < C && C < F);
                      double code(double A, double B_m, double C, double F) {
                      	double t_0 = (B_m * B_m) - ((4.0 * A) * C);
                      	double tmp;
                      	if (B_m <= 1.2e+37) {
                      		tmp = -sqrt(((2.0 * (t_0 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_0;
                      	} else {
                      		tmp = -1.0 * ((sqrt(2.0) / B_m) * sqrt((F * (A - hypot(A, B_m)))));
                      	}
                      	return tmp;
                      }
                      
                      B_m = Math.abs(B);
                      assert A < B_m && B_m < C && C < F;
                      public static double code(double A, double B_m, double C, double F) {
                      	double t_0 = (B_m * B_m) - ((4.0 * A) * C);
                      	double tmp;
                      	if (B_m <= 1.2e+37) {
                      		tmp = -Math.sqrt(((2.0 * (t_0 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_0;
                      	} else {
                      		tmp = -1.0 * ((Math.sqrt(2.0) / B_m) * Math.sqrt((F * (A - Math.hypot(A, B_m)))));
                      	}
                      	return tmp;
                      }
                      
                      B_m = math.fabs(B)
                      [A, B_m, C, F] = sort([A, B_m, C, F])
                      def code(A, B_m, C, F):
                      	t_0 = (B_m * B_m) - ((4.0 * A) * C)
                      	tmp = 0
                      	if B_m <= 1.2e+37:
                      		tmp = -math.sqrt(((2.0 * (t_0 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_0
                      	else:
                      		tmp = -1.0 * ((math.sqrt(2.0) / B_m) * math.sqrt((F * (A - math.hypot(A, B_m)))))
                      	return tmp
                      
                      B_m = abs(B)
                      A, B_m, C, F = sort([A, B_m, C, F])
                      function code(A, B_m, C, F)
                      	t_0 = Float64(Float64(B_m * B_m) - Float64(Float64(4.0 * A) * C))
                      	tmp = 0.0
                      	if (B_m <= 1.2e+37)
                      		tmp = Float64(Float64(-sqrt(Float64(Float64(2.0 * Float64(t_0 * F)) * Float64(Float64(A + Float64(-0.5 * Float64(Float64(B_m * B_m) / C))) - Float64(-1.0 * A))))) / t_0);
                      	else
                      		tmp = Float64(-1.0 * Float64(Float64(sqrt(2.0) / B_m) * sqrt(Float64(F * Float64(A - hypot(A, B_m))))));
                      	end
                      	return tmp
                      end
                      
                      B_m = abs(B);
                      A, B_m, C, F = num2cell(sort([A, B_m, C, F])){:}
                      function tmp_2 = code(A, B_m, C, F)
                      	t_0 = (B_m * B_m) - ((4.0 * A) * C);
                      	tmp = 0.0;
                      	if (B_m <= 1.2e+37)
                      		tmp = -sqrt(((2.0 * (t_0 * F)) * ((A + (-0.5 * ((B_m * B_m) / C))) - (-1.0 * A)))) / t_0;
                      	else
                      		tmp = -1.0 * ((sqrt(2.0) / B_m) * sqrt((F * (A - hypot(A, B_m)))));
                      	end
                      	tmp_2 = tmp;
                      end
                      
                      B_m = N[Abs[B], $MachinePrecision]
                      NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                      code[A_, B$95$m_, C_, F_] := Block[{t$95$0 = N[(N[(B$95$m * B$95$m), $MachinePrecision] - N[(N[(4.0 * A), $MachinePrecision] * C), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[B$95$m, 1.2e+37], N[((-N[Sqrt[N[(N[(2.0 * N[(t$95$0 * F), $MachinePrecision]), $MachinePrecision] * N[(N[(A + N[(-0.5 * N[(N[(B$95$m * B$95$m), $MachinePrecision] / C), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(-1.0 * A), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]) / t$95$0), $MachinePrecision], N[(-1.0 * N[(N[(N[Sqrt[2.0], $MachinePrecision] / B$95$m), $MachinePrecision] * N[Sqrt[N[(F * N[(A - N[Sqrt[A ^ 2 + B$95$m ^ 2], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]]]
                      
                      \begin{array}{l}
                      B_m = \left|B\right|
                      \\
                      [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
                      \\
                      \begin{array}{l}
                      t_0 := B\_m \cdot B\_m - \left(4 \cdot A\right) \cdot C\\
                      \mathbf{if}\;B\_m \leq 1.2 \cdot 10^{+37}:\\
                      \;\;\;\;\frac{-\sqrt{\left(2 \cdot \left(t\_0 \cdot F\right)\right) \cdot \left(\left(A + -0.5 \cdot \frac{B\_m \cdot B\_m}{C}\right) - -1 \cdot A\right)}}{t\_0}\\
                      
                      \mathbf{else}:\\
                      \;\;\;\;-1 \cdot \left(\frac{\sqrt{2}}{B\_m} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\_m\right)\right)}\right)\\
                      
                      
                      \end{array}
                      \end{array}
                      
                      Derivation
                      1. Split input into 2 regimes
                      2. if B < 1.2e37

                        1. Initial program 24.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. Step-by-step derivation
                          1. Applied rewrites32.3%

                            \[\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) - \mathsf{hypot}\left(A - C, B\right)\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C}} \]
                          2. Taylor expanded in C 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(\left(A + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}}{B \cdot B - \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 \cdot B - \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 \cdot B - \left(4 \cdot A\right) \cdot C} \]
                            2. lower-+.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - \color{blue}{-1} \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                            3. lower-*.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                            4. lower-/.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 + \frac{-1}{2} \cdot \frac{{B}^{2}}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                            5. pow2N/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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                            6. 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 + \frac{-1}{2} \cdot \frac{B \cdot B}{C}\right) - -1 \cdot A\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                            7. lower-*.f6443.1

                              \[\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 + -0.5 \cdot \frac{B \cdot B}{C}\right) - -1 \cdot \color{blue}{A}\right)}}{B \cdot B - \left(4 \cdot A\right) \cdot C} \]
                          4. Applied rewrites43.1%

                            \[\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(\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 1.2e37 < B

                          1. Initial program 10.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 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. unpow2N/A

                              \[\leadsto -1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \sqrt{A \cdot A + {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 \cdot B}\right)}\right) \]
                            10. lower-hypot.f6449.8

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

                            \[\leadsto \color{blue}{-1 \cdot \left(\frac{\sqrt{2}}{B} \cdot \sqrt{F \cdot \left(A - \mathsf{hypot}\left(A, B\right)\right)}\right)} \]
                        3. Recombined 2 regimes into one program.
                        4. Add Preprocessing

                        Alternative 10: 37.8% accurate, 12.9× speedup?

                        \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \begin{array}{l} t_0 := \sqrt{\frac{F}{C} \cdot -1}\\ \mathbf{if}\;F \leq -4.3 \cdot 10^{-275}:\\ \;\;\;\;-1 \cdot t\_0\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                        B_m = (fabs.f64 B)
                        NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                        (FPCore (A B_m C F)
                         :precision binary64
                         (let* ((t_0 (sqrt (* (/ F C) -1.0)))) (if (<= F -4.3e-275) (* -1.0 t_0) t_0)))
                        B_m = fabs(B);
                        assert(A < B_m && B_m < C && C < F);
                        double code(double A, double B_m, double C, double F) {
                        	double t_0 = sqrt(((F / C) * -1.0));
                        	double tmp;
                        	if (F <= -4.3e-275) {
                        		tmp = -1.0 * t_0;
                        	} else {
                        		tmp = t_0;
                        	}
                        	return tmp;
                        }
                        
                        B_m =     private
                        NOTE: A, B_m, 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_m, c, f)
                        use fmin_fmax_functions
                            real(8), intent (in) :: a
                            real(8), intent (in) :: b_m
                            real(8), intent (in) :: c
                            real(8), intent (in) :: f
                            real(8) :: t_0
                            real(8) :: tmp
                            t_0 = sqrt(((f / c) * (-1.0d0)))
                            if (f <= (-4.3d-275)) then
                                tmp = (-1.0d0) * t_0
                            else
                                tmp = t_0
                            end if
                            code = tmp
                        end function
                        
                        B_m = Math.abs(B);
                        assert A < B_m && B_m < C && C < F;
                        public static double code(double A, double B_m, double C, double F) {
                        	double t_0 = Math.sqrt(((F / C) * -1.0));
                        	double tmp;
                        	if (F <= -4.3e-275) {
                        		tmp = -1.0 * t_0;
                        	} else {
                        		tmp = t_0;
                        	}
                        	return tmp;
                        }
                        
                        B_m = math.fabs(B)
                        [A, B_m, C, F] = sort([A, B_m, C, F])
                        def code(A, B_m, C, F):
                        	t_0 = math.sqrt(((F / C) * -1.0))
                        	tmp = 0
                        	if F <= -4.3e-275:
                        		tmp = -1.0 * t_0
                        	else:
                        		tmp = t_0
                        	return tmp
                        
                        B_m = abs(B)
                        A, B_m, C, F = sort([A, B_m, C, F])
                        function code(A, B_m, C, F)
                        	t_0 = sqrt(Float64(Float64(F / C) * -1.0))
                        	tmp = 0.0
                        	if (F <= -4.3e-275)
                        		tmp = Float64(-1.0 * t_0);
                        	else
                        		tmp = t_0;
                        	end
                        	return tmp
                        end
                        
                        B_m = abs(B);
                        A, B_m, C, F = num2cell(sort([A, B_m, C, F])){:}
                        function tmp_2 = code(A, B_m, C, F)
                        	t_0 = sqrt(((F / C) * -1.0));
                        	tmp = 0.0;
                        	if (F <= -4.3e-275)
                        		tmp = -1.0 * t_0;
                        	else
                        		tmp = t_0;
                        	end
                        	tmp_2 = tmp;
                        end
                        
                        B_m = N[Abs[B], $MachinePrecision]
                        NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                        code[A_, B$95$m_, C_, F_] := Block[{t$95$0 = N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[F, -4.3e-275], N[(-1.0 * t$95$0), $MachinePrecision], t$95$0]]
                        
                        \begin{array}{l}
                        B_m = \left|B\right|
                        \\
                        [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
                        \\
                        \begin{array}{l}
                        t_0 := \sqrt{\frac{F}{C} \cdot -1}\\
                        \mathbf{if}\;F \leq -4.3 \cdot 10^{-275}:\\
                        \;\;\;\;-1 \cdot t\_0\\
                        
                        \mathbf{else}:\\
                        \;\;\;\;t\_0\\
                        
                        
                        \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 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-/.f646.0

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

                            \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                          7. Taylor expanded in F around -inf

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

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

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

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

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

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

                        Alternative 11: 21.0% accurate, 18.2× speedup?

                        \[\begin{array}{l} B_m = \left|B\right| \\ [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\ \\ \sqrt{\frac{F}{C} \cdot -1} \end{array} \]
                        B_m = (fabs.f64 B)
                        NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                        (FPCore (A B_m C F) :precision binary64 (sqrt (* (/ F C) -1.0)))
                        B_m = fabs(B);
                        assert(A < B_m && B_m < C && C < F);
                        double code(double A, double B_m, double C, double F) {
                        	return sqrt(((F / C) * -1.0));
                        }
                        
                        B_m =     private
                        NOTE: A, B_m, 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_m, c, f)
                        use fmin_fmax_functions
                            real(8), intent (in) :: a
                            real(8), intent (in) :: b_m
                            real(8), intent (in) :: c
                            real(8), intent (in) :: f
                            code = sqrt(((f / c) * (-1.0d0)))
                        end function
                        
                        B_m = Math.abs(B);
                        assert A < B_m && B_m < C && C < F;
                        public static double code(double A, double B_m, double C, double F) {
                        	return Math.sqrt(((F / C) * -1.0));
                        }
                        
                        B_m = math.fabs(B)
                        [A, B_m, C, F] = sort([A, B_m, C, F])
                        def code(A, B_m, C, F):
                        	return math.sqrt(((F / C) * -1.0))
                        
                        B_m = abs(B)
                        A, B_m, C, F = sort([A, B_m, C, F])
                        function code(A, B_m, C, F)
                        	return sqrt(Float64(Float64(F / C) * -1.0))
                        end
                        
                        B_m = abs(B);
                        A, B_m, C, F = num2cell(sort([A, B_m, C, F])){:}
                        function tmp = code(A, B_m, C, F)
                        	tmp = sqrt(((F / C) * -1.0));
                        end
                        
                        B_m = N[Abs[B], $MachinePrecision]
                        NOTE: A, B_m, C, and F should be sorted in increasing order before calling this function.
                        code[A_, B$95$m_, C_, F_] := N[Sqrt[N[(N[(F / C), $MachinePrecision] * -1.0), $MachinePrecision]], $MachinePrecision]
                        
                        \begin{array}{l}
                        B_m = \left|B\right|
                        \\
                        [A, B_m, C, F] = \mathsf{sort}([A, B_m, C, F])\\
                        \\
                        \sqrt{\frac{F}{C} \cdot -1}
                        \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 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-/.f6428.5

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

                          \[\leadsto -1 \cdot \color{blue}{\sqrt{\frac{F}{C} \cdot -1}} \]
                        7. Taylor expanded in F around -inf

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

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

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

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

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

                          \[\leadsto \sqrt{\frac{F}{C} \cdot -1} \]
                        10. 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))))