Rosa's TurbineBenchmark

Percentage Accurate: 84.8% → 99.3%
Time: 5.3s
Alternatives: 14
Speedup: 1.6×

Specification

?
\[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
(FPCore (v w r)
  :precision binary64
  (-
 (-
  (+ 3.0 (/ 2.0 (* r r)))
  (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v)))
 4.5))
double code(double v, double w, double r) {
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
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(v, w, r)
use fmin_fmax_functions
    real(8), intent (in) :: v
    real(8), intent (in) :: w
    real(8), intent (in) :: r
    code = ((3.0d0 + (2.0d0 / (r * r))) - (((0.125d0 * (3.0d0 - (2.0d0 * v))) * (((w * w) * r) * r)) / (1.0d0 - v))) - 4.5d0
end function
public static double code(double v, double w, double r) {
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
def code(v, w, r):
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5
function code(v, w, r)
	return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5)
end
function tmp = code(v, w, r)
	tmp = ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
end
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5

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 14 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: 84.8% accurate, 1.0× speedup?

\[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
(FPCore (v w r)
  :precision binary64
  (-
 (-
  (+ 3.0 (/ 2.0 (* r r)))
  (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v)))
 4.5))
double code(double v, double w, double r) {
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
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(v, w, r)
use fmin_fmax_functions
    real(8), intent (in) :: v
    real(8), intent (in) :: w
    real(8), intent (in) :: r
    code = ((3.0d0 + (2.0d0 / (r * r))) - (((0.125d0 * (3.0d0 - (2.0d0 * v))) * (((w * w) * r) * r)) / (1.0d0 - v))) - 4.5d0
end function
public static double code(double v, double w, double r) {
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
}
def code(v, w, r):
	return ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5
function code(v, w, r)
	return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5)
end
function tmp = code(v, w, r)
	tmp = ((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5;
end
code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5

Alternative 1: 99.3% accurate, 0.8× speedup?

\[\begin{array}{l} t_0 := w \cdot \left|r\right|\\ t_1 := \frac{2}{\left|r\right| \cdot \left|r\right|}\\ \mathbf{if}\;\left|r\right| \leq 3 \cdot 10^{+207}:\\ \;\;\;\;\left(\left(3 + t\_1\right) - \left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(t\_0 \cdot \left|r\right|\right)\right) - 4.5\\ \mathbf{else}:\\ \;\;\;\;-\left(1.5 - \left(t\_1 - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot t\_0\right) \cdot \frac{\left|r\right|}{1 - v}\right)\right)\\ \end{array} \]
(FPCore (v w r)
  :precision binary64
  (let* ((t_0 (* w (fabs r))) (t_1 (/ 2.0 (* (fabs r) (fabs r)))))
  (if (<= (fabs r) 3e+207)
    (-
     (-
      (+ 3.0 t_1)
      (*
       (* (/ (fma (+ v v) 0.125 -0.375) (- v 1.0)) w)
       (* t_0 (fabs r))))
     4.5)
    (-
     (-
      1.5
      (-
       t_1
       (*
        (* (* (* (fma -2.0 v 3.0) 0.125) w) t_0)
        (/ (fabs r) (- 1.0 v)))))))))
double code(double v, double w, double r) {
	double t_0 = w * fabs(r);
	double t_1 = 2.0 / (fabs(r) * fabs(r));
	double tmp;
	if (fabs(r) <= 3e+207) {
		tmp = ((3.0 + t_1) - (((fma((v + v), 0.125, -0.375) / (v - 1.0)) * w) * (t_0 * fabs(r)))) - 4.5;
	} else {
		tmp = -(1.5 - (t_1 - ((((fma(-2.0, v, 3.0) * 0.125) * w) * t_0) * (fabs(r) / (1.0 - v)))));
	}
	return tmp;
}
function code(v, w, r)
	t_0 = Float64(w * abs(r))
	t_1 = Float64(2.0 / Float64(abs(r) * abs(r)))
	tmp = 0.0
	if (abs(r) <= 3e+207)
		tmp = Float64(Float64(Float64(3.0 + t_1) - Float64(Float64(Float64(fma(Float64(v + v), 0.125, -0.375) / Float64(v - 1.0)) * w) * Float64(t_0 * abs(r)))) - 4.5);
	else
		tmp = Float64(-Float64(1.5 - Float64(t_1 - Float64(Float64(Float64(Float64(fma(-2.0, v, 3.0) * 0.125) * w) * t_0) * Float64(abs(r) / Float64(1.0 - v))))));
	end
	return tmp
end
code[v_, w_, r_] := Block[{t$95$0 = N[(w * N[Abs[r], $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 / N[(N[Abs[r], $MachinePrecision] * N[Abs[r], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[r], $MachinePrecision], 3e+207], N[(N[(N[(3.0 + t$95$1), $MachinePrecision] - N[(N[(N[(N[(N[(v + v), $MachinePrecision] * 0.125 + -0.375), $MachinePrecision] / N[(v - 1.0), $MachinePrecision]), $MachinePrecision] * w), $MachinePrecision] * N[(t$95$0 * N[Abs[r], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], (-N[(1.5 - N[(t$95$1 - N[(N[(N[(N[(N[(-2.0 * v + 3.0), $MachinePrecision] * 0.125), $MachinePrecision] * w), $MachinePrecision] * t$95$0), $MachinePrecision] * N[(N[Abs[r], $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision])]]]
\begin{array}{l}
t_0 := w \cdot \left|r\right|\\
t_1 := \frac{2}{\left|r\right| \cdot \left|r\right|}\\
\mathbf{if}\;\left|r\right| \leq 3 \cdot 10^{+207}:\\
\;\;\;\;\left(\left(3 + t\_1\right) - \left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(t\_0 \cdot \left|r\right|\right)\right) - 4.5\\

\mathbf{else}:\\
\;\;\;\;-\left(1.5 - \left(t\_1 - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot t\_0\right) \cdot \frac{\left|r\right|}{1 - v}\right)\right)\\


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if r < 2.9999999999999998e207

    1. Initial program 84.8%

      \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
    2. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
      2. lift-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
      3. associate-*l*N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
      4. lift-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
      5. unswap-sqrN/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
      6. lower-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
      7. lower-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
      8. lower-*.f6494.4%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
    3. Applied rewrites94.4%

      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
    4. Applied rewrites96.6%

      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]

    if 2.9999999999999998e207 < r

    1. Initial program 84.8%

      \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
    2. Step-by-step derivation
      1. lift--.f64N/A

        \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - \frac{9}{2}} \]
      2. sub-negate-revN/A

        \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)\right)} \]
      3. lower-neg.f64N/A

        \[\leadsto \color{blue}{-\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
      4. lift--.f64N/A

        \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
      5. lift-+.f64N/A

        \[\leadsto -\left(\frac{9}{2} - \left(\color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
      6. associate--l+N/A

        \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(3 + \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)}\right) \]
      7. associate--r+N/A

        \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
      8. lower--.f64N/A

        \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
      9. metadata-evalN/A

        \[\leadsto -\left(\color{blue}{\frac{3}{2}} - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
      10. lower--.f6484.9%

        \[\leadsto -\left(1.5 - \color{blue}{\left(\frac{2}{r \cdot r} - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
    3. Applied rewrites91.5%

      \[\leadsto \color{blue}{-\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right)} \]
  3. Recombined 2 regimes into one program.
  4. Add Preprocessing

Alternative 2: 98.6% accurate, 0.9× speedup?

\[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ t_1 := t\_0 - -3\\ t_2 := \left(w \cdot r\right) \cdot r\\ \mathbf{if}\;v \leq -4 \cdot 10^{+43}:\\ \;\;\;\;\mathsf{fma}\left(t\_2, \left(-w\right) \cdot 0.25, t\_1\right) - 4.5\\ \mathbf{elif}\;v \leq 4.05 \cdot 10^{-20}:\\ \;\;\;\;\left(\left(3 + t\_0\right) - \frac{\left(0.375 + -0.25 \cdot v\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5\\ \mathbf{else}:\\ \;\;\;\;t\_1 - \mathsf{fma}\left(0.25 \cdot w, t\_2, 4.5\right)\\ \end{array} \]
(FPCore (v w r)
  :precision binary64
  (let* ((t_0 (/ 2.0 (* r r))) (t_1 (- t_0 -3.0)) (t_2 (* (* w r) r)))
  (if (<= v -4e+43)
    (- (fma t_2 (* (- w) 0.25) t_1) 4.5)
    (if (<= v 4.05e-20)
      (-
       (-
        (+ 3.0 t_0)
        (/ (* (+ 0.375 (* -0.25 v)) (* (* w r) (* w r))) (- 1.0 v)))
       4.5)
      (- t_1 (fma (* 0.25 w) t_2 4.5))))))
double code(double v, double w, double r) {
	double t_0 = 2.0 / (r * r);
	double t_1 = t_0 - -3.0;
	double t_2 = (w * r) * r;
	double tmp;
	if (v <= -4e+43) {
		tmp = fma(t_2, (-w * 0.25), t_1) - 4.5;
	} else if (v <= 4.05e-20) {
		tmp = ((3.0 + t_0) - (((0.375 + (-0.25 * v)) * ((w * r) * (w * r))) / (1.0 - v))) - 4.5;
	} else {
		tmp = t_1 - fma((0.25 * w), t_2, 4.5);
	}
	return tmp;
}
function code(v, w, r)
	t_0 = Float64(2.0 / Float64(r * r))
	t_1 = Float64(t_0 - -3.0)
	t_2 = Float64(Float64(w * r) * r)
	tmp = 0.0
	if (v <= -4e+43)
		tmp = Float64(fma(t_2, Float64(Float64(-w) * 0.25), t_1) - 4.5);
	elseif (v <= 4.05e-20)
		tmp = Float64(Float64(Float64(3.0 + t_0) - Float64(Float64(Float64(0.375 + Float64(-0.25 * v)) * Float64(Float64(w * r) * Float64(w * r))) / Float64(1.0 - v))) - 4.5);
	else
		tmp = Float64(t_1 - fma(Float64(0.25 * w), t_2, 4.5));
	end
	return tmp
end
code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 - -3.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]}, If[LessEqual[v, -4e+43], N[(N[(t$95$2 * N[((-w) * 0.25), $MachinePrecision] + t$95$1), $MachinePrecision] - 4.5), $MachinePrecision], If[LessEqual[v, 4.05e-20], N[(N[(N[(3.0 + t$95$0), $MachinePrecision] - N[(N[(N[(0.375 + N[(-0.25 * v), $MachinePrecision]), $MachinePrecision] * N[(N[(w * r), $MachinePrecision] * N[(w * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], N[(t$95$1 - N[(N[(0.25 * w), $MachinePrecision] * t$95$2 + 4.5), $MachinePrecision]), $MachinePrecision]]]]]]
\begin{array}{l}
t_0 := \frac{2}{r \cdot r}\\
t_1 := t\_0 - -3\\
t_2 := \left(w \cdot r\right) \cdot r\\
\mathbf{if}\;v \leq -4 \cdot 10^{+43}:\\
\;\;\;\;\mathsf{fma}\left(t\_2, \left(-w\right) \cdot 0.25, t\_1\right) - 4.5\\

\mathbf{elif}\;v \leq 4.05 \cdot 10^{-20}:\\
\;\;\;\;\left(\left(3 + t\_0\right) - \frac{\left(0.375 + -0.25 \cdot v\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5\\

\mathbf{else}:\\
\;\;\;\;t\_1 - \mathsf{fma}\left(0.25 \cdot w, t\_2, 4.5\right)\\


\end{array}
Derivation
  1. Split input into 3 regimes
  2. if v < -4.0000000000000001e43

    1. Initial program 84.8%

      \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
    2. Step-by-step derivation
      1. lift-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
      2. lift-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
      3. associate-*l*N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
      4. lift-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
      5. unswap-sqrN/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
      6. lower-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
      7. lower-*.f64N/A

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
      8. lower-*.f6494.4%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
    3. Applied rewrites94.4%

      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
    4. Applied rewrites96.6%

      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
    5. Taylor expanded in v around inf

      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
    6. Step-by-step derivation
      1. Applied rewrites91.7%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
      2. Step-by-step derivation
        1. lift--.f64N/A

          \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
        2. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - \frac{9}{2} \]
        3. fp-cancel-sub-sign-invN/A

          \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) + \left(\mathsf{neg}\left(\frac{1}{4} \cdot w\right)\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
        4. +-commutativeN/A

          \[\leadsto \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{4} \cdot w\right)\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \left(3 + \frac{2}{r \cdot r}\right)\right)} - \frac{9}{2} \]
        5. *-commutativeN/A

          \[\leadsto \left(\color{blue}{\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\mathsf{neg}\left(\frac{1}{4} \cdot w\right)\right)} + \left(3 + \frac{2}{r \cdot r}\right)\right) - \frac{9}{2} \]
        6. lower-fma.f64N/A

          \[\leadsto \color{blue}{\mathsf{fma}\left(\left(w \cdot r\right) \cdot r, \mathsf{neg}\left(\frac{1}{4} \cdot w\right), 3 + \frac{2}{r \cdot r}\right)} - \frac{9}{2} \]
      3. Applied rewrites91.7%

        \[\leadsto \color{blue}{\mathsf{fma}\left(\left(w \cdot r\right) \cdot r, \left(-w\right) \cdot 0.25, \frac{2}{r \cdot r} - -3\right)} - 4.5 \]

      if -4.0000000000000001e43 < v < 4.0500000000000002e-20

      1. Initial program 84.8%

        \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
      2. Step-by-step derivation
        1. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
        2. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
        3. associate-*l*N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
        4. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
        5. unswap-sqrN/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
        6. lower-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
        7. lower-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
        8. lower-*.f6494.4%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
      3. Applied rewrites94.4%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
      4. Taylor expanded in v around 0

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\color{blue}{\left(\frac{3}{8} + \frac{-1}{4} \cdot v\right)} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5 \]
      5. Step-by-step derivation
        1. lower-+.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{3}{8} + \color{blue}{\frac{-1}{4} \cdot v}\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
        2. lower-*.f6494.5%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.375 + -0.25 \cdot \color{blue}{v}\right) \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5 \]
      6. Applied rewrites94.5%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\color{blue}{\left(0.375 + -0.25 \cdot v\right)} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5 \]

      if 4.0500000000000002e-20 < v

      1. Initial program 84.8%

        \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
      2. Step-by-step derivation
        1. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
        2. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
        3. associate-*l*N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
        4. lift-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
        5. unswap-sqrN/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
        6. lower-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
        7. lower-*.f64N/A

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
        8. lower-*.f6494.4%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
      3. Applied rewrites94.4%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
      4. Applied rewrites96.6%

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
      5. Taylor expanded in v around inf

        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
      6. Step-by-step derivation
        1. Applied rewrites91.7%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
        2. Step-by-step derivation
          1. lift--.f64N/A

            \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
          2. lift--.f64N/A

            \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
          3. associate--l-N/A

            \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
          4. lower--.f64N/A

            \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
          5. lift-+.f64N/A

            \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
          6. +-commutativeN/A

            \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
          7. add-flipN/A

            \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
          8. lower--.f64N/A

            \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
          9. metadata-evalN/A

            \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
          10. lift-*.f64N/A

            \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
          11. lower-fma.f6491.7%

            \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
        3. Applied rewrites91.7%

          \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
      7. Recombined 3 regimes into one program.
      8. Add Preprocessing

      Alternative 3: 98.0% accurate, 1.0× speedup?

      \[\begin{array}{l} t_0 := \left(w \cdot r\right) \cdot r\\ t_1 := \frac{2}{r \cdot r}\\ t_2 := 3 + t\_1\\ \mathbf{if}\;v \leq -50:\\ \;\;\;\;\left(t\_2 - \left(t\_0 \cdot \left(0.25 - \frac{0.125}{v}\right)\right) \cdot w\right) - 4.5\\ \mathbf{elif}\;v \leq 4.05 \cdot 10^{-20}:\\ \;\;\;\;\left(t\_2 - \frac{0.375 \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5\\ \mathbf{else}:\\ \;\;\;\;\left(t\_1 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_0, 4.5\right)\\ \end{array} \]
      (FPCore (v w r)
        :precision binary64
        (let* ((t_0 (* (* w r) r)) (t_1 (/ 2.0 (* r r))) (t_2 (+ 3.0 t_1)))
        (if (<= v -50.0)
          (- (- t_2 (* (* t_0 (- 0.25 (/ 0.125 v))) w)) 4.5)
          (if (<= v 4.05e-20)
            (- (- t_2 (/ (* 0.375 (* (* w r) (* w r))) (- 1.0 v))) 4.5)
            (- (- t_1 -3.0) (fma (* 0.25 w) t_0 4.5))))))
      double code(double v, double w, double r) {
      	double t_0 = (w * r) * r;
      	double t_1 = 2.0 / (r * r);
      	double t_2 = 3.0 + t_1;
      	double tmp;
      	if (v <= -50.0) {
      		tmp = (t_2 - ((t_0 * (0.25 - (0.125 / v))) * w)) - 4.5;
      	} else if (v <= 4.05e-20) {
      		tmp = (t_2 - ((0.375 * ((w * r) * (w * r))) / (1.0 - v))) - 4.5;
      	} else {
      		tmp = (t_1 - -3.0) - fma((0.25 * w), t_0, 4.5);
      	}
      	return tmp;
      }
      
      function code(v, w, r)
      	t_0 = Float64(Float64(w * r) * r)
      	t_1 = Float64(2.0 / Float64(r * r))
      	t_2 = Float64(3.0 + t_1)
      	tmp = 0.0
      	if (v <= -50.0)
      		tmp = Float64(Float64(t_2 - Float64(Float64(t_0 * Float64(0.25 - Float64(0.125 / v))) * w)) - 4.5);
      	elseif (v <= 4.05e-20)
      		tmp = Float64(Float64(t_2 - Float64(Float64(0.375 * Float64(Float64(w * r) * Float64(w * r))) / Float64(1.0 - v))) - 4.5);
      	else
      		tmp = Float64(Float64(t_1 - -3.0) - fma(Float64(0.25 * w), t_0, 4.5));
      	end
      	return tmp
      end
      
      code[v_, w_, r_] := Block[{t$95$0 = N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(3.0 + t$95$1), $MachinePrecision]}, If[LessEqual[v, -50.0], N[(N[(t$95$2 - N[(N[(t$95$0 * N[(0.25 - N[(0.125 / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * w), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], If[LessEqual[v, 4.05e-20], N[(N[(t$95$2 - N[(N[(0.375 * N[(N[(w * r), $MachinePrecision] * N[(w * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], N[(N[(t$95$1 - -3.0), $MachinePrecision] - N[(N[(0.25 * w), $MachinePrecision] * t$95$0 + 4.5), $MachinePrecision]), $MachinePrecision]]]]]]
      
      \begin{array}{l}
      t_0 := \left(w \cdot r\right) \cdot r\\
      t_1 := \frac{2}{r \cdot r}\\
      t_2 := 3 + t\_1\\
      \mathbf{if}\;v \leq -50:\\
      \;\;\;\;\left(t\_2 - \left(t\_0 \cdot \left(0.25 - \frac{0.125}{v}\right)\right) \cdot w\right) - 4.5\\
      
      \mathbf{elif}\;v \leq 4.05 \cdot 10^{-20}:\\
      \;\;\;\;\left(t\_2 - \frac{0.375 \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5\\
      
      \mathbf{else}:\\
      \;\;\;\;\left(t\_1 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_0, 4.5\right)\\
      
      
      \end{array}
      
      Derivation
      1. Split input into 3 regimes
      2. if v < -50

        1. Initial program 84.8%

          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
        2. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
          2. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
          3. associate-*l*N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
          4. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
          5. unswap-sqrN/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
          6. lower-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
          7. lower-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
          8. lower-*.f6494.4%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
        3. Applied rewrites94.4%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
        4. Applied rewrites96.6%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
        5. Taylor expanded in v around inf

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right)} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
        6. Step-by-step derivation
          1. lower--.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} - \color{blue}{\frac{1}{8} \cdot \frac{1}{v}}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2} \]
          2. lower-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} - \frac{1}{8} \cdot \color{blue}{\frac{1}{v}}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2} \]
          3. lower-/.f6477.9%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(0.25 - 0.125 \cdot \frac{1}{\color{blue}{v}}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
        7. Applied rewrites77.9%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\left(0.25 - 0.125 \cdot \frac{1}{v}\right)} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
        8. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - \frac{9}{2} \]
          2. *-commutativeN/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right) \cdot w\right)}\right) - \frac{9}{2} \]
          3. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(w \cdot r\right) \cdot r\right) \cdot \color{blue}{\left(\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right) \cdot w\right)}\right) - \frac{9}{2} \]
          4. associate-*r*N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right)\right) \cdot w}\right) - \frac{9}{2} \]
          5. lower-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right)\right) \cdot w}\right) - \frac{9}{2} \]
          6. lower-*.f6479.8%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(0.25 - 0.125 \cdot \frac{1}{v}\right)\right)} \cdot w\right) - 4.5 \]
          7. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \color{blue}{\frac{1}{v}}\right)\right) \cdot w\right) - \frac{9}{2} \]
          8. lift-/.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{\color{blue}{v}}\right)\right) \cdot w\right) - \frac{9}{2} \]
          9. mult-flip-revN/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{\frac{1}{8}}{\color{blue}{v}}\right)\right) \cdot w\right) - \frac{9}{2} \]
          10. lower-/.f6479.8%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(0.25 - \frac{0.125}{\color{blue}{v}}\right)\right) \cdot w\right) - 4.5 \]
        9. Applied rewrites79.8%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(0.25 - \frac{0.125}{v}\right)\right) \cdot w}\right) - 4.5 \]

        if -50 < v < 4.0500000000000002e-20

        1. Initial program 84.8%

          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
        2. Step-by-step derivation
          1. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
          2. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
          3. associate-*l*N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
          4. lift-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
          5. unswap-sqrN/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
          6. lower-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
          7. lower-*.f64N/A

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
          8. lower-*.f6494.4%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
        3. Applied rewrites94.4%

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
        4. Taylor expanded in v around 0

          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\color{blue}{\frac{3}{8}} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5 \]
        5. Step-by-step derivation
          1. Applied rewrites84.4%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\color{blue}{0.375} \cdot \left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - 4.5 \]

          if 4.0500000000000002e-20 < v

          1. Initial program 84.8%

            \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
          2. Step-by-step derivation
            1. lift-*.f64N/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
            2. lift-*.f64N/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
            3. associate-*l*N/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
            4. lift-*.f64N/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
            5. unswap-sqrN/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
            6. lower-*.f64N/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
            7. lower-*.f64N/A

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
            8. lower-*.f6494.4%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
          3. Applied rewrites94.4%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
          4. Applied rewrites96.6%

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
          5. Taylor expanded in v around inf

            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
          6. Step-by-step derivation
            1. Applied rewrites91.7%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
            2. Step-by-step derivation
              1. lift--.f64N/A

                \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
              2. lift--.f64N/A

                \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
              3. associate--l-N/A

                \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
              4. lower--.f64N/A

                \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
              5. lift-+.f64N/A

                \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
              6. +-commutativeN/A

                \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
              7. add-flipN/A

                \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
              8. lower--.f64N/A

                \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
              9. metadata-evalN/A

                \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
              10. lift-*.f64N/A

                \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
              11. lower-fma.f6491.7%

                \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
            3. Applied rewrites91.7%

              \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
          7. Recombined 3 regimes into one program.
          8. Add Preprocessing

          Alternative 4: 97.8% accurate, 0.9× speedup?

          \[\begin{array}{l} t_0 := \left|w\right| \cdot r\\ t_1 := \frac{2}{r \cdot r}\\ \mathbf{if}\;\left|w\right| \leq 2.3 \cdot 10^{-78}:\\ \;\;\;\;-\left(1.5 - \left(t\_1 - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot \left|w\right|\right) \cdot t\_0\right) \cdot \frac{r}{1 - v}\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(\left(3 + t\_1\right) - \left|w\right| \cdot \left(t\_0 \cdot \frac{r \cdot \mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1}\right)\right) - 4.5\\ \end{array} \]
          (FPCore (v w r)
            :precision binary64
            (let* ((t_0 (* (fabs w) r)) (t_1 (/ 2.0 (* r r))))
            (if (<= (fabs w) 2.3e-78)
              (-
               (-
                1.5
                (-
                 t_1
                 (*
                  (* (* (* (fma -2.0 v 3.0) 0.125) (fabs w)) t_0)
                  (/ r (- 1.0 v))))))
              (-
               (-
                (+ 3.0 t_1)
                (*
                 (fabs w)
                 (* t_0 (/ (* r (fma (+ v v) 0.125 -0.375)) (- v 1.0)))))
               4.5))))
          double code(double v, double w, double r) {
          	double t_0 = fabs(w) * r;
          	double t_1 = 2.0 / (r * r);
          	double tmp;
          	if (fabs(w) <= 2.3e-78) {
          		tmp = -(1.5 - (t_1 - ((((fma(-2.0, v, 3.0) * 0.125) * fabs(w)) * t_0) * (r / (1.0 - v)))));
          	} else {
          		tmp = ((3.0 + t_1) - (fabs(w) * (t_0 * ((r * fma((v + v), 0.125, -0.375)) / (v - 1.0))))) - 4.5;
          	}
          	return tmp;
          }
          
          function code(v, w, r)
          	t_0 = Float64(abs(w) * r)
          	t_1 = Float64(2.0 / Float64(r * r))
          	tmp = 0.0
          	if (abs(w) <= 2.3e-78)
          		tmp = Float64(-Float64(1.5 - Float64(t_1 - Float64(Float64(Float64(Float64(fma(-2.0, v, 3.0) * 0.125) * abs(w)) * t_0) * Float64(r / Float64(1.0 - v))))));
          	else
          		tmp = Float64(Float64(Float64(3.0 + t_1) - Float64(abs(w) * Float64(t_0 * Float64(Float64(r * fma(Float64(v + v), 0.125, -0.375)) / Float64(v - 1.0))))) - 4.5);
          	end
          	return tmp
          end
          
          code[v_, w_, r_] := Block[{t$95$0 = N[(N[Abs[w], $MachinePrecision] * r), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[Abs[w], $MachinePrecision], 2.3e-78], (-N[(1.5 - N[(t$95$1 - N[(N[(N[(N[(N[(-2.0 * v + 3.0), $MachinePrecision] * 0.125), $MachinePrecision] * N[Abs[w], $MachinePrecision]), $MachinePrecision] * t$95$0), $MachinePrecision] * N[(r / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), N[(N[(N[(3.0 + t$95$1), $MachinePrecision] - N[(N[Abs[w], $MachinePrecision] * N[(t$95$0 * N[(N[(r * N[(N[(v + v), $MachinePrecision] * 0.125 + -0.375), $MachinePrecision]), $MachinePrecision] / N[(v - 1.0), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]]]]
          
          \begin{array}{l}
          t_0 := \left|w\right| \cdot r\\
          t_1 := \frac{2}{r \cdot r}\\
          \mathbf{if}\;\left|w\right| \leq 2.3 \cdot 10^{-78}:\\
          \;\;\;\;-\left(1.5 - \left(t\_1 - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot \left|w\right|\right) \cdot t\_0\right) \cdot \frac{r}{1 - v}\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(\left(3 + t\_1\right) - \left|w\right| \cdot \left(t\_0 \cdot \frac{r \cdot \mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1}\right)\right) - 4.5\\
          
          
          \end{array}
          
          Derivation
          1. Split input into 2 regimes
          2. if w < 2.3000000000000002e-78

            1. Initial program 84.8%

              \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
            2. Step-by-step derivation
              1. lift--.f64N/A

                \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - \frac{9}{2}} \]
              2. sub-negate-revN/A

                \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)\right)} \]
              3. lower-neg.f64N/A

                \[\leadsto \color{blue}{-\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
              4. lift--.f64N/A

                \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
              5. lift-+.f64N/A

                \[\leadsto -\left(\frac{9}{2} - \left(\color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
              6. associate--l+N/A

                \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(3 + \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)}\right) \]
              7. associate--r+N/A

                \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
              8. lower--.f64N/A

                \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
              9. metadata-evalN/A

                \[\leadsto -\left(\color{blue}{\frac{3}{2}} - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
              10. lower--.f6484.9%

                \[\leadsto -\left(1.5 - \color{blue}{\left(\frac{2}{r \cdot r} - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
            3. Applied rewrites91.5%

              \[\leadsto \color{blue}{-\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right)} \]

            if 2.3000000000000002e-78 < w

            1. Initial program 84.8%

              \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
            2. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
              2. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
              3. associate-*l*N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
              4. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
              5. unswap-sqrN/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
              6. lower-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
              7. lower-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
              8. lower-*.f6494.4%

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
            3. Applied rewrites94.4%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
            4. Applied rewrites92.9%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{w \cdot \left(\left(w \cdot r\right) \cdot \frac{r \cdot \mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1}\right)}\right) - 4.5 \]
          3. Recombined 2 regimes into one program.
          4. Add Preprocessing

          Alternative 5: 96.5% accurate, 1.1× speedup?

          \[\begin{array}{l} t_0 := \left(w \cdot r\right) \cdot r\\ t_1 := \frac{2}{r \cdot r}\\ \mathbf{if}\;v \leq -760:\\ \;\;\;\;\left(\left(3 + t\_1\right) - \left(t\_0 \cdot \left(0.25 - \frac{0.125}{v}\right)\right) \cdot w\right) - 4.5\\ \mathbf{elif}\;v \leq 1.6 \cdot 10^{-21}:\\ \;\;\;\;-\left(1.5 - \left(t\_1 - \left(\left(\left(3 \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right)\\ \mathbf{else}:\\ \;\;\;\;\left(t\_1 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_0, 4.5\right)\\ \end{array} \]
          (FPCore (v w r)
            :precision binary64
            (let* ((t_0 (* (* w r) r)) (t_1 (/ 2.0 (* r r))))
            (if (<= v -760.0)
              (- (- (+ 3.0 t_1) (* (* t_0 (- 0.25 (/ 0.125 v))) w)) 4.5)
              (if (<= v 1.6e-21)
                (- (- 1.5 (- t_1 (* (* (* (* 3.0 0.125) w) (* w r)) r))))
                (- (- t_1 -3.0) (fma (* 0.25 w) t_0 4.5))))))
          double code(double v, double w, double r) {
          	double t_0 = (w * r) * r;
          	double t_1 = 2.0 / (r * r);
          	double tmp;
          	if (v <= -760.0) {
          		tmp = ((3.0 + t_1) - ((t_0 * (0.25 - (0.125 / v))) * w)) - 4.5;
          	} else if (v <= 1.6e-21) {
          		tmp = -(1.5 - (t_1 - ((((3.0 * 0.125) * w) * (w * r)) * r)));
          	} else {
          		tmp = (t_1 - -3.0) - fma((0.25 * w), t_0, 4.5);
          	}
          	return tmp;
          }
          
          function code(v, w, r)
          	t_0 = Float64(Float64(w * r) * r)
          	t_1 = Float64(2.0 / Float64(r * r))
          	tmp = 0.0
          	if (v <= -760.0)
          		tmp = Float64(Float64(Float64(3.0 + t_1) - Float64(Float64(t_0 * Float64(0.25 - Float64(0.125 / v))) * w)) - 4.5);
          	elseif (v <= 1.6e-21)
          		tmp = Float64(-Float64(1.5 - Float64(t_1 - Float64(Float64(Float64(Float64(3.0 * 0.125) * w) * Float64(w * r)) * r))));
          	else
          		tmp = Float64(Float64(t_1 - -3.0) - fma(Float64(0.25 * w), t_0, 4.5));
          	end
          	return tmp
          end
          
          code[v_, w_, r_] := Block[{t$95$0 = N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[v, -760.0], N[(N[(N[(3.0 + t$95$1), $MachinePrecision] - N[(N[(t$95$0 * N[(0.25 - N[(0.125 / v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * w), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], If[LessEqual[v, 1.6e-21], (-N[(1.5 - N[(t$95$1 - N[(N[(N[(N[(3.0 * 0.125), $MachinePrecision] * w), $MachinePrecision] * N[(w * r), $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), N[(N[(t$95$1 - -3.0), $MachinePrecision] - N[(N[(0.25 * w), $MachinePrecision] * t$95$0 + 4.5), $MachinePrecision]), $MachinePrecision]]]]]
          
          \begin{array}{l}
          t_0 := \left(w \cdot r\right) \cdot r\\
          t_1 := \frac{2}{r \cdot r}\\
          \mathbf{if}\;v \leq -760:\\
          \;\;\;\;\left(\left(3 + t\_1\right) - \left(t\_0 \cdot \left(0.25 - \frac{0.125}{v}\right)\right) \cdot w\right) - 4.5\\
          
          \mathbf{elif}\;v \leq 1.6 \cdot 10^{-21}:\\
          \;\;\;\;-\left(1.5 - \left(t\_1 - \left(\left(\left(3 \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right)\\
          
          \mathbf{else}:\\
          \;\;\;\;\left(t\_1 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_0, 4.5\right)\\
          
          
          \end{array}
          
          Derivation
          1. Split input into 3 regimes
          2. if v < -760

            1. Initial program 84.8%

              \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
            2. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
              2. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
              3. associate-*l*N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
              4. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
              5. unswap-sqrN/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
              6. lower-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
              7. lower-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
              8. lower-*.f6494.4%

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
            3. Applied rewrites94.4%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
            4. Applied rewrites96.6%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
            5. Taylor expanded in v around inf

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right)} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
            6. Step-by-step derivation
              1. lower--.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} - \color{blue}{\frac{1}{8} \cdot \frac{1}{v}}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2} \]
              2. lower-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} - \frac{1}{8} \cdot \color{blue}{\frac{1}{v}}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2} \]
              3. lower-/.f6477.9%

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(0.25 - 0.125 \cdot \frac{1}{\color{blue}{v}}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
            7. Applied rewrites77.9%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\left(0.25 - 0.125 \cdot \frac{1}{v}\right)} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
            8. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right) \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - \frac{9}{2} \]
              2. *-commutativeN/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right) \cdot w\right)}\right) - \frac{9}{2} \]
              3. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(w \cdot r\right) \cdot r\right) \cdot \color{blue}{\left(\left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right) \cdot w\right)}\right) - \frac{9}{2} \]
              4. associate-*r*N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right)\right) \cdot w}\right) - \frac{9}{2} \]
              5. lower-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{v}\right)\right) \cdot w}\right) - \frac{9}{2} \]
              6. lower-*.f6479.8%

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(0.25 - 0.125 \cdot \frac{1}{v}\right)\right)} \cdot w\right) - 4.5 \]
              7. lift-*.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \color{blue}{\frac{1}{v}}\right)\right) \cdot w\right) - \frac{9}{2} \]
              8. lift-/.f64N/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{1}{8} \cdot \frac{1}{\color{blue}{v}}\right)\right) \cdot w\right) - \frac{9}{2} \]
              9. mult-flip-revN/A

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\frac{1}{4} - \frac{\frac{1}{8}}{\color{blue}{v}}\right)\right) \cdot w\right) - \frac{9}{2} \]
              10. lower-/.f6479.8%

                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(0.25 - \frac{0.125}{\color{blue}{v}}\right)\right) \cdot w\right) - 4.5 \]
            9. Applied rewrites79.8%

              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(0.25 - \frac{0.125}{v}\right)\right) \cdot w}\right) - 4.5 \]

            if -760 < v < 1.6000000000000001e-21

            1. Initial program 84.8%

              \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
            2. Step-by-step derivation
              1. lift--.f64N/A

                \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - \frac{9}{2}} \]
              2. sub-negate-revN/A

                \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)\right)} \]
              3. lower-neg.f64N/A

                \[\leadsto \color{blue}{-\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
              4. lift--.f64N/A

                \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
              5. lift-+.f64N/A

                \[\leadsto -\left(\frac{9}{2} - \left(\color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
              6. associate--l+N/A

                \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(3 + \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)}\right) \]
              7. associate--r+N/A

                \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
              8. lower--.f64N/A

                \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
              9. metadata-evalN/A

                \[\leadsto -\left(\color{blue}{\frac{3}{2}} - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
              10. lower--.f6484.9%

                \[\leadsto -\left(1.5 - \color{blue}{\left(\frac{2}{r \cdot r} - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
            3. Applied rewrites91.5%

              \[\leadsto \color{blue}{-\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right)} \]
            4. Taylor expanded in v around 0

              \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \color{blue}{r}\right)\right) \]
            5. Step-by-step derivation
              1. Applied rewrites76.9%

                \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \color{blue}{r}\right)\right) \]
              2. Taylor expanded in v around 0

                \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\color{blue}{3} \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right) \]
              3. Step-by-step derivation
                1. Applied rewrites90.4%

                  \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\color{blue}{3} \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right) \]

                if 1.6000000000000001e-21 < v

                1. Initial program 84.8%

                  \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                2. Step-by-step derivation
                  1. lift-*.f64N/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                  2. lift-*.f64N/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                  3. associate-*l*N/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                  4. lift-*.f64N/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                  5. unswap-sqrN/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                  6. lower-*.f64N/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                  7. lower-*.f64N/A

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                  8. lower-*.f6494.4%

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                3. Applied rewrites94.4%

                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                4. Applied rewrites96.6%

                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                5. Taylor expanded in v around inf

                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                6. Step-by-step derivation
                  1. Applied rewrites91.7%

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                  2. Step-by-step derivation
                    1. lift--.f64N/A

                      \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
                    2. lift--.f64N/A

                      \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                    3. associate--l-N/A

                      \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                    4. lower--.f64N/A

                      \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                    5. lift-+.f64N/A

                      \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                    6. +-commutativeN/A

                      \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                    7. add-flipN/A

                      \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                    8. lower--.f64N/A

                      \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                    9. metadata-evalN/A

                      \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                    10. lift-*.f64N/A

                      \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
                    11. lower-fma.f6491.7%

                      \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                  3. Applied rewrites91.7%

                    \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                7. Recombined 3 regimes into one program.
                8. Add Preprocessing

                Alternative 6: 96.5% accurate, 1.2× speedup?

                \[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ t_1 := t\_0 - -3\\ t_2 := \left(w \cdot r\right) \cdot r\\ \mathbf{if}\;v \leq -390:\\ \;\;\;\;\mathsf{fma}\left(t\_2, \left(-w\right) \cdot 0.25, t\_1\right) - 4.5\\ \mathbf{elif}\;v \leq 1.6 \cdot 10^{-21}:\\ \;\;\;\;-\left(1.5 - \left(t\_0 - \left(\left(\left(3 \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right)\\ \mathbf{else}:\\ \;\;\;\;t\_1 - \mathsf{fma}\left(0.25 \cdot w, t\_2, 4.5\right)\\ \end{array} \]
                (FPCore (v w r)
                  :precision binary64
                  (let* ((t_0 (/ 2.0 (* r r))) (t_1 (- t_0 -3.0)) (t_2 (* (* w r) r)))
                  (if (<= v -390.0)
                    (- (fma t_2 (* (- w) 0.25) t_1) 4.5)
                    (if (<= v 1.6e-21)
                      (- (- 1.5 (- t_0 (* (* (* (* 3.0 0.125) w) (* w r)) r))))
                      (- t_1 (fma (* 0.25 w) t_2 4.5))))))
                double code(double v, double w, double r) {
                	double t_0 = 2.0 / (r * r);
                	double t_1 = t_0 - -3.0;
                	double t_2 = (w * r) * r;
                	double tmp;
                	if (v <= -390.0) {
                		tmp = fma(t_2, (-w * 0.25), t_1) - 4.5;
                	} else if (v <= 1.6e-21) {
                		tmp = -(1.5 - (t_0 - ((((3.0 * 0.125) * w) * (w * r)) * r)));
                	} else {
                		tmp = t_1 - fma((0.25 * w), t_2, 4.5);
                	}
                	return tmp;
                }
                
                function code(v, w, r)
                	t_0 = Float64(2.0 / Float64(r * r))
                	t_1 = Float64(t_0 - -3.0)
                	t_2 = Float64(Float64(w * r) * r)
                	tmp = 0.0
                	if (v <= -390.0)
                		tmp = Float64(fma(t_2, Float64(Float64(-w) * 0.25), t_1) - 4.5);
                	elseif (v <= 1.6e-21)
                		tmp = Float64(-Float64(1.5 - Float64(t_0 - Float64(Float64(Float64(Float64(3.0 * 0.125) * w) * Float64(w * r)) * r))));
                	else
                		tmp = Float64(t_1 - fma(Float64(0.25 * w), t_2, 4.5));
                	end
                	return tmp
                end
                
                code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(t$95$0 - -3.0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]}, If[LessEqual[v, -390.0], N[(N[(t$95$2 * N[((-w) * 0.25), $MachinePrecision] + t$95$1), $MachinePrecision] - 4.5), $MachinePrecision], If[LessEqual[v, 1.6e-21], (-N[(1.5 - N[(t$95$0 - N[(N[(N[(N[(3.0 * 0.125), $MachinePrecision] * w), $MachinePrecision] * N[(w * r), $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), N[(t$95$1 - N[(N[(0.25 * w), $MachinePrecision] * t$95$2 + 4.5), $MachinePrecision]), $MachinePrecision]]]]]]
                
                \begin{array}{l}
                t_0 := \frac{2}{r \cdot r}\\
                t_1 := t\_0 - -3\\
                t_2 := \left(w \cdot r\right) \cdot r\\
                \mathbf{if}\;v \leq -390:\\
                \;\;\;\;\mathsf{fma}\left(t\_2, \left(-w\right) \cdot 0.25, t\_1\right) - 4.5\\
                
                \mathbf{elif}\;v \leq 1.6 \cdot 10^{-21}:\\
                \;\;\;\;-\left(1.5 - \left(t\_0 - \left(\left(\left(3 \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right)\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_1 - \mathsf{fma}\left(0.25 \cdot w, t\_2, 4.5\right)\\
                
                
                \end{array}
                
                Derivation
                1. Split input into 3 regimes
                2. if v < -390

                  1. Initial program 84.8%

                    \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                  2. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                    2. lift-*.f64N/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                    3. associate-*l*N/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                    4. lift-*.f64N/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                    5. unswap-sqrN/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                    6. lower-*.f64N/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                    7. lower-*.f64N/A

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                    8. lower-*.f6494.4%

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                  3. Applied rewrites94.4%

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                  4. Applied rewrites96.6%

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                  5. Taylor expanded in v around inf

                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                  6. Step-by-step derivation
                    1. Applied rewrites91.7%

                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                    2. Step-by-step derivation
                      1. lift--.f64N/A

                        \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                      2. lift-*.f64N/A

                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - \frac{9}{2} \]
                      3. fp-cancel-sub-sign-invN/A

                        \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) + \left(\mathsf{neg}\left(\frac{1}{4} \cdot w\right)\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                      4. +-commutativeN/A

                        \[\leadsto \color{blue}{\left(\left(\mathsf{neg}\left(\frac{1}{4} \cdot w\right)\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \left(3 + \frac{2}{r \cdot r}\right)\right)} - \frac{9}{2} \]
                      5. *-commutativeN/A

                        \[\leadsto \left(\color{blue}{\left(\left(w \cdot r\right) \cdot r\right) \cdot \left(\mathsf{neg}\left(\frac{1}{4} \cdot w\right)\right)} + \left(3 + \frac{2}{r \cdot r}\right)\right) - \frac{9}{2} \]
                      6. lower-fma.f64N/A

                        \[\leadsto \color{blue}{\mathsf{fma}\left(\left(w \cdot r\right) \cdot r, \mathsf{neg}\left(\frac{1}{4} \cdot w\right), 3 + \frac{2}{r \cdot r}\right)} - \frac{9}{2} \]
                    3. Applied rewrites91.7%

                      \[\leadsto \color{blue}{\mathsf{fma}\left(\left(w \cdot r\right) \cdot r, \left(-w\right) \cdot 0.25, \frac{2}{r \cdot r} - -3\right)} - 4.5 \]

                    if -390 < v < 1.6000000000000001e-21

                    1. Initial program 84.8%

                      \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                    2. Step-by-step derivation
                      1. lift--.f64N/A

                        \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - \frac{9}{2}} \]
                      2. sub-negate-revN/A

                        \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)\right)} \]
                      3. lower-neg.f64N/A

                        \[\leadsto \color{blue}{-\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
                      4. lift--.f64N/A

                        \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
                      5. lift-+.f64N/A

                        \[\leadsto -\left(\frac{9}{2} - \left(\color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
                      6. associate--l+N/A

                        \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(3 + \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)}\right) \]
                      7. associate--r+N/A

                        \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
                      8. lower--.f64N/A

                        \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right)} \]
                      9. metadata-evalN/A

                        \[\leadsto -\left(\color{blue}{\frac{3}{2}} - \left(\frac{2}{r \cdot r} - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)\right) \]
                      10. lower--.f6484.9%

                        \[\leadsto -\left(1.5 - \color{blue}{\left(\frac{2}{r \cdot r} - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right)}\right) \]
                    3. Applied rewrites91.5%

                      \[\leadsto \color{blue}{-\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right)} \]
                    4. Taylor expanded in v around 0

                      \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \color{blue}{r}\right)\right) \]
                    5. Step-by-step derivation
                      1. Applied rewrites76.9%

                        \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \color{blue}{r}\right)\right) \]
                      2. Taylor expanded in v around 0

                        \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\color{blue}{3} \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right) \]
                      3. Step-by-step derivation
                        1. Applied rewrites90.4%

                          \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(\left(\color{blue}{3} \cdot 0.125\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot r\right)\right) \]

                        if 1.6000000000000001e-21 < v

                        1. Initial program 84.8%

                          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                        2. Step-by-step derivation
                          1. lift-*.f64N/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                          2. lift-*.f64N/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                          3. associate-*l*N/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                          4. lift-*.f64N/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                          5. unswap-sqrN/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                          6. lower-*.f64N/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                          7. lower-*.f64N/A

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                          8. lower-*.f6494.4%

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                        3. Applied rewrites94.4%

                          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                        4. Applied rewrites96.6%

                          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                        5. Taylor expanded in v around inf

                          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                        6. Step-by-step derivation
                          1. Applied rewrites91.7%

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                          2. Step-by-step derivation
                            1. lift--.f64N/A

                              \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
                            2. lift--.f64N/A

                              \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                            3. associate--l-N/A

                              \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                            4. lower--.f64N/A

                              \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                            5. lift-+.f64N/A

                              \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                            6. +-commutativeN/A

                              \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                            7. add-flipN/A

                              \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                            8. lower--.f64N/A

                              \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                            9. metadata-evalN/A

                              \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                            10. lift-*.f64N/A

                              \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
                            11. lower-fma.f6491.7%

                              \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                          3. Applied rewrites91.7%

                            \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                        7. Recombined 3 regimes into one program.
                        8. Add Preprocessing

                        Alternative 7: 96.1% accurate, 1.2× speedup?

                        \[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ t_1 := 3 + t\_0\\ t_2 := \left(w \cdot r\right) \cdot r\\ \mathbf{if}\;v \leq -1.65 \cdot 10^{-141}:\\ \;\;\;\;\left(t\_1 - \left(\left(0.25 \cdot w\right) \cdot r\right) \cdot \left(w \cdot r\right)\right) - 4.5\\ \mathbf{elif}\;v \leq 4 \cdot 10^{-20}:\\ \;\;\;\;\left(t\_1 - \left(0.375 \cdot w\right) \cdot t\_2\right) - 4.5\\ \mathbf{else}:\\ \;\;\;\;\left(t\_0 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_2, 4.5\right)\\ \end{array} \]
                        (FPCore (v w r)
                          :precision binary64
                          (let* ((t_0 (/ 2.0 (* r r))) (t_1 (+ 3.0 t_0)) (t_2 (* (* w r) r)))
                          (if (<= v -1.65e-141)
                            (- (- t_1 (* (* (* 0.25 w) r) (* w r))) 4.5)
                            (if (<= v 4e-20)
                              (- (- t_1 (* (* 0.375 w) t_2)) 4.5)
                              (- (- t_0 -3.0) (fma (* 0.25 w) t_2 4.5))))))
                        double code(double v, double w, double r) {
                        	double t_0 = 2.0 / (r * r);
                        	double t_1 = 3.0 + t_0;
                        	double t_2 = (w * r) * r;
                        	double tmp;
                        	if (v <= -1.65e-141) {
                        		tmp = (t_1 - (((0.25 * w) * r) * (w * r))) - 4.5;
                        	} else if (v <= 4e-20) {
                        		tmp = (t_1 - ((0.375 * w) * t_2)) - 4.5;
                        	} else {
                        		tmp = (t_0 - -3.0) - fma((0.25 * w), t_2, 4.5);
                        	}
                        	return tmp;
                        }
                        
                        function code(v, w, r)
                        	t_0 = Float64(2.0 / Float64(r * r))
                        	t_1 = Float64(3.0 + t_0)
                        	t_2 = Float64(Float64(w * r) * r)
                        	tmp = 0.0
                        	if (v <= -1.65e-141)
                        		tmp = Float64(Float64(t_1 - Float64(Float64(Float64(0.25 * w) * r) * Float64(w * r))) - 4.5);
                        	elseif (v <= 4e-20)
                        		tmp = Float64(Float64(t_1 - Float64(Float64(0.375 * w) * t_2)) - 4.5);
                        	else
                        		tmp = Float64(Float64(t_0 - -3.0) - fma(Float64(0.25 * w), t_2, 4.5));
                        	end
                        	return tmp
                        end
                        
                        code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$1 = N[(3.0 + t$95$0), $MachinePrecision]}, Block[{t$95$2 = N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]}, If[LessEqual[v, -1.65e-141], N[(N[(t$95$1 - N[(N[(N[(0.25 * w), $MachinePrecision] * r), $MachinePrecision] * N[(w * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], If[LessEqual[v, 4e-20], N[(N[(t$95$1 - N[(N[(0.375 * w), $MachinePrecision] * t$95$2), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], N[(N[(t$95$0 - -3.0), $MachinePrecision] - N[(N[(0.25 * w), $MachinePrecision] * t$95$2 + 4.5), $MachinePrecision]), $MachinePrecision]]]]]]
                        
                        \begin{array}{l}
                        t_0 := \frac{2}{r \cdot r}\\
                        t_1 := 3 + t\_0\\
                        t_2 := \left(w \cdot r\right) \cdot r\\
                        \mathbf{if}\;v \leq -1.65 \cdot 10^{-141}:\\
                        \;\;\;\;\left(t\_1 - \left(\left(0.25 \cdot w\right) \cdot r\right) \cdot \left(w \cdot r\right)\right) - 4.5\\
                        
                        \mathbf{elif}\;v \leq 4 \cdot 10^{-20}:\\
                        \;\;\;\;\left(t\_1 - \left(0.375 \cdot w\right) \cdot t\_2\right) - 4.5\\
                        
                        \mathbf{else}:\\
                        \;\;\;\;\left(t\_0 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_2, 4.5\right)\\
                        
                        
                        \end{array}
                        
                        Derivation
                        1. Split input into 3 regimes
                        2. if v < -1.65e-141

                          1. Initial program 84.8%

                            \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                          2. Step-by-step derivation
                            1. lift-*.f64N/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                            2. lift-*.f64N/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                            3. associate-*l*N/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                            4. lift-*.f64N/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                            5. unswap-sqrN/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                            6. lower-*.f64N/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                            7. lower-*.f64N/A

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                            8. lower-*.f6494.4%

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                          3. Applied rewrites94.4%

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                          4. Applied rewrites96.6%

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                          5. Taylor expanded in v around inf

                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                          6. Step-by-step derivation
                            1. Applied rewrites91.7%

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                            2. Step-by-step derivation
                              1. lift-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - \frac{9}{2} \]
                              2. lift-*.f64N/A

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

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

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\frac{1}{4} \cdot w\right) \cdot r\right) \cdot \left(w \cdot r\right)}\right) - \frac{9}{2} \]
                              5. lower-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(\frac{1}{4} \cdot w\right) \cdot r\right) \cdot \left(w \cdot r\right)}\right) - \frac{9}{2} \]
                              6. lower-*.f6493.4%

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(0.25 \cdot w\right) \cdot r\right)} \cdot \left(w \cdot r\right)\right) - 4.5 \]
                            3. Applied rewrites93.4%

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\left(0.25 \cdot w\right) \cdot r\right) \cdot \left(w \cdot r\right)}\right) - 4.5 \]

                            if -1.65e-141 < v < 3.9999999999999998e-20

                            1. Initial program 84.8%

                              \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                            2. Step-by-step derivation
                              1. lift-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                              2. lift-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                              3. associate-*l*N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                              4. lift-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                              5. unswap-sqrN/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                              6. lower-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                              7. lower-*.f64N/A

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                              8. lower-*.f6494.4%

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                            3. Applied rewrites94.4%

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                            4. Applied rewrites96.6%

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                            5. Taylor expanded in v around 0

                              \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{3}{8}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                            6. Step-by-step derivation
                              1. Applied rewrites91.0%

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.375} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]

                              if 3.9999999999999998e-20 < v

                              1. Initial program 84.8%

                                \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                              2. Step-by-step derivation
                                1. lift-*.f64N/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                                2. lift-*.f64N/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                                3. associate-*l*N/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                4. lift-*.f64N/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                5. unswap-sqrN/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                6. lower-*.f64N/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                7. lower-*.f64N/A

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                8. lower-*.f6494.4%

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                              3. Applied rewrites94.4%

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                              4. Applied rewrites96.6%

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                              5. Taylor expanded in v around inf

                                \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                              6. Step-by-step derivation
                                1. Applied rewrites91.7%

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                2. Step-by-step derivation
                                  1. lift--.f64N/A

                                    \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
                                  2. lift--.f64N/A

                                    \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                                  3. associate--l-N/A

                                    \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                                  4. lower--.f64N/A

                                    \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                                  5. lift-+.f64N/A

                                    \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                  6. +-commutativeN/A

                                    \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                  7. add-flipN/A

                                    \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                  8. lower--.f64N/A

                                    \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                  9. metadata-evalN/A

                                    \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                  10. lift-*.f64N/A

                                    \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
                                  11. lower-fma.f6491.7%

                                    \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                                3. Applied rewrites91.7%

                                  \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                              7. Recombined 3 regimes into one program.
                              8. Add Preprocessing

                              Alternative 8: 95.9% accurate, 1.2× speedup?

                              \[\begin{array}{l} t_0 := \left(w \cdot r\right) \cdot r\\ t_1 := \frac{2}{r \cdot r}\\ t_2 := \left(t\_1 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_0, 4.5\right)\\ \mathbf{if}\;v \leq -1 \cdot 10^{-60}:\\ \;\;\;\;t\_2\\ \mathbf{elif}\;v \leq 4 \cdot 10^{-20}:\\ \;\;\;\;\left(\left(3 + t\_1\right) - \left(0.375 \cdot w\right) \cdot t\_0\right) - 4.5\\ \mathbf{else}:\\ \;\;\;\;t\_2\\ \end{array} \]
                              (FPCore (v w r)
                                :precision binary64
                                (let* ((t_0 (* (* w r) r))
                                     (t_1 (/ 2.0 (* r r)))
                                     (t_2 (- (- t_1 -3.0) (fma (* 0.25 w) t_0 4.5))))
                                (if (<= v -1e-60)
                                  t_2
                                  (if (<= v 4e-20)
                                    (- (- (+ 3.0 t_1) (* (* 0.375 w) t_0)) 4.5)
                                    t_2))))
                              double code(double v, double w, double r) {
                              	double t_0 = (w * r) * r;
                              	double t_1 = 2.0 / (r * r);
                              	double t_2 = (t_1 - -3.0) - fma((0.25 * w), t_0, 4.5);
                              	double tmp;
                              	if (v <= -1e-60) {
                              		tmp = t_2;
                              	} else if (v <= 4e-20) {
                              		tmp = ((3.0 + t_1) - ((0.375 * w) * t_0)) - 4.5;
                              	} else {
                              		tmp = t_2;
                              	}
                              	return tmp;
                              }
                              
                              function code(v, w, r)
                              	t_0 = Float64(Float64(w * r) * r)
                              	t_1 = Float64(2.0 / Float64(r * r))
                              	t_2 = Float64(Float64(t_1 - -3.0) - fma(Float64(0.25 * w), t_0, 4.5))
                              	tmp = 0.0
                              	if (v <= -1e-60)
                              		tmp = t_2;
                              	elseif (v <= 4e-20)
                              		tmp = Float64(Float64(Float64(3.0 + t_1) - Float64(Float64(0.375 * w) * t_0)) - 4.5);
                              	else
                              		tmp = t_2;
                              	end
                              	return tmp
                              end
                              
                              code[v_, w_, r_] := Block[{t$95$0 = N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]}, Block[{t$95$1 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, Block[{t$95$2 = N[(N[(t$95$1 - -3.0), $MachinePrecision] - N[(N[(0.25 * w), $MachinePrecision] * t$95$0 + 4.5), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[v, -1e-60], t$95$2, If[LessEqual[v, 4e-20], N[(N[(N[(3.0 + t$95$1), $MachinePrecision] - N[(N[(0.375 * w), $MachinePrecision] * t$95$0), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], t$95$2]]]]]
                              
                              \begin{array}{l}
                              t_0 := \left(w \cdot r\right) \cdot r\\
                              t_1 := \frac{2}{r \cdot r}\\
                              t_2 := \left(t\_1 - -3\right) - \mathsf{fma}\left(0.25 \cdot w, t\_0, 4.5\right)\\
                              \mathbf{if}\;v \leq -1 \cdot 10^{-60}:\\
                              \;\;\;\;t\_2\\
                              
                              \mathbf{elif}\;v \leq 4 \cdot 10^{-20}:\\
                              \;\;\;\;\left(\left(3 + t\_1\right) - \left(0.375 \cdot w\right) \cdot t\_0\right) - 4.5\\
                              
                              \mathbf{else}:\\
                              \;\;\;\;t\_2\\
                              
                              
                              \end{array}
                              
                              Derivation
                              1. Split input into 2 regimes
                              2. if v < -9.9999999999999997e-61 or 3.9999999999999998e-20 < v

                                1. Initial program 84.8%

                                  \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                2. Step-by-step derivation
                                  1. lift-*.f64N/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                                  2. lift-*.f64N/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                                  3. associate-*l*N/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                  4. lift-*.f64N/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                  5. unswap-sqrN/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                  6. lower-*.f64N/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                  7. lower-*.f64N/A

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                  8. lower-*.f6494.4%

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                                3. Applied rewrites94.4%

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                                4. Applied rewrites96.6%

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                                5. Taylor expanded in v around inf

                                  \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                6. Step-by-step derivation
                                  1. Applied rewrites91.7%

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                  2. Step-by-step derivation
                                    1. lift--.f64N/A

                                      \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
                                    2. lift--.f64N/A

                                      \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                                    3. associate--l-N/A

                                      \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                                    4. lower--.f64N/A

                                      \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                                    5. lift-+.f64N/A

                                      \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                    6. +-commutativeN/A

                                      \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                    7. add-flipN/A

                                      \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                    8. lower--.f64N/A

                                      \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                    9. metadata-evalN/A

                                      \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                    10. lift-*.f64N/A

                                      \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
                                    11. lower-fma.f6491.7%

                                      \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                                  3. Applied rewrites91.7%

                                    \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]

                                  if -9.9999999999999997e-61 < v < 3.9999999999999998e-20

                                  1. Initial program 84.8%

                                    \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                  2. Step-by-step derivation
                                    1. lift-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    2. lift-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                                    3. associate-*l*N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    4. lift-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                    5. unswap-sqrN/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    6. lower-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    7. lower-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                    8. lower-*.f6494.4%

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                                  3. Applied rewrites94.4%

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                                  4. Applied rewrites96.6%

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                                  5. Taylor expanded in v around 0

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{3}{8}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                  6. Step-by-step derivation
                                    1. Applied rewrites91.0%

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.375} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                  7. Recombined 2 regimes into one program.
                                  8. Add Preprocessing

                                  Alternative 9: 91.7% accurate, 1.5× speedup?

                                  \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(0.25 \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                  (FPCore (v w r)
                                    :precision binary64
                                    (- (- (+ 3.0 (/ 2.0 (* r r))) (* (* 0.25 w) (* (* w r) r))) 4.5))
                                  double code(double v, double w, double r) {
                                  	return ((3.0 + (2.0 / (r * r))) - ((0.25 * w) * ((w * r) * r))) - 4.5;
                                  }
                                  
                                  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(v, w, r)
                                  use fmin_fmax_functions
                                      real(8), intent (in) :: v
                                      real(8), intent (in) :: w
                                      real(8), intent (in) :: r
                                      code = ((3.0d0 + (2.0d0 / (r * r))) - ((0.25d0 * w) * ((w * r) * r))) - 4.5d0
                                  end function
                                  
                                  public static double code(double v, double w, double r) {
                                  	return ((3.0 + (2.0 / (r * r))) - ((0.25 * w) * ((w * r) * r))) - 4.5;
                                  }
                                  
                                  def code(v, w, r):
                                  	return ((3.0 + (2.0 / (r * r))) - ((0.25 * w) * ((w * r) * r))) - 4.5
                                  
                                  function code(v, w, r)
                                  	return Float64(Float64(Float64(3.0 + Float64(2.0 / Float64(r * r))) - Float64(Float64(0.25 * w) * Float64(Float64(w * r) * r))) - 4.5)
                                  end
                                  
                                  function tmp = code(v, w, r)
                                  	tmp = ((3.0 + (2.0 / (r * r))) - ((0.25 * w) * ((w * r) * r))) - 4.5;
                                  end
                                  
                                  code[v_, w_, r_] := N[(N[(N[(3.0 + N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - N[(N[(0.25 * w), $MachinePrecision] * N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision]
                                  
                                  \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(0.25 \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5
                                  
                                  Derivation
                                  1. Initial program 84.8%

                                    \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                  2. Step-by-step derivation
                                    1. lift-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    2. lift-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                                    3. associate-*l*N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    4. lift-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                    5. unswap-sqrN/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    6. lower-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                    7. lower-*.f64N/A

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                    8. lower-*.f6494.4%

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                                  3. Applied rewrites94.4%

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                                  4. Applied rewrites96.6%

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                                  5. Taylor expanded in v around inf

                                    \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                  6. Step-by-step derivation
                                    1. Applied rewrites91.7%

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                    2. Add Preprocessing

                                    Alternative 10: 91.7% accurate, 1.6× speedup?

                                    \[\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right) \]
                                    (FPCore (v w r)
                                      :precision binary64
                                      (- (- (/ 2.0 (* r r)) -3.0) (fma (* 0.25 w) (* (* w r) r) 4.5)))
                                    double code(double v, double w, double r) {
                                    	return ((2.0 / (r * r)) - -3.0) - fma((0.25 * w), ((w * r) * r), 4.5);
                                    }
                                    
                                    function code(v, w, r)
                                    	return Float64(Float64(Float64(2.0 / Float64(r * r)) - -3.0) - fma(Float64(0.25 * w), Float64(Float64(w * r) * r), 4.5))
                                    end
                                    
                                    code[v_, w_, r_] := N[(N[(N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision] - -3.0), $MachinePrecision] - N[(N[(0.25 * w), $MachinePrecision] * N[(N[(w * r), $MachinePrecision] * r), $MachinePrecision] + 4.5), $MachinePrecision]), $MachinePrecision]
                                    
                                    \left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)
                                    
                                    Derivation
                                    1. Initial program 84.8%

                                      \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                    2. Step-by-step derivation
                                      1. lift-*.f64N/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                                      2. lift-*.f64N/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                                      3. associate-*l*N/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                      4. lift-*.f64N/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                      5. unswap-sqrN/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                      6. lower-*.f64N/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                      7. lower-*.f64N/A

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                      8. lower-*.f6494.4%

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                                    3. Applied rewrites94.4%

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                                    4. Applied rewrites96.6%

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                                    5. Taylor expanded in v around inf

                                      \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                    6. Step-by-step derivation
                                      1. Applied rewrites91.7%

                                        \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                      2. Step-by-step derivation
                                        1. lift--.f64N/A

                                          \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
                                        2. lift--.f64N/A

                                          \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)} - \frac{9}{2} \]
                                        3. associate--l-N/A

                                          \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                                        4. lower--.f64N/A

                                          \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right)} \]
                                        5. lift-+.f64N/A

                                          \[\leadsto \color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                        6. +-commutativeN/A

                                          \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} + 3\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                        7. add-flipN/A

                                          \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                        8. lower--.f64N/A

                                          \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - \left(\mathsf{neg}\left(3\right)\right)\right)} - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                        9. metadata-evalN/A

                                          \[\leadsto \left(\frac{2}{r \cdot r} - \color{blue}{-3}\right) - \left(\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right) + \frac{9}{2}\right) \]
                                        10. lift-*.f64N/A

                                          \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \left(\color{blue}{\left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)} + \frac{9}{2}\right) \]
                                        11. lower-fma.f6491.7%

                                          \[\leadsto \left(\frac{2}{r \cdot r} - -3\right) - \color{blue}{\mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                                      3. Applied rewrites91.7%

                                        \[\leadsto \color{blue}{\left(\frac{2}{r \cdot r} - -3\right) - \mathsf{fma}\left(0.25 \cdot w, \left(w \cdot r\right) \cdot r, 4.5\right)} \]
                                      4. Add Preprocessing

                                      Alternative 11: 87.8% accurate, 0.6× speedup?

                                      \[\begin{array}{l} t_0 := \frac{2}{r \cdot r}\\ \mathbf{if}\;\left(\left(3 + t\_0\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \leq -1.500000000010223:\\ \;\;\;\;-\left(1.5 - \left(t\_0 - \left(\left(0.25 \cdot w\right) \cdot w\right) \cdot \left(r \cdot r\right)\right)\right)\\ \mathbf{else}:\\ \;\;\;\;2 \cdot {r}^{-2} - 1.5\\ \end{array} \]
                                      (FPCore (v w r)
                                        :precision binary64
                                        (let* ((t_0 (/ 2.0 (* r r))))
                                        (if (<=
                                             (-
                                              (-
                                               (+ 3.0 t_0)
                                               (/
                                                (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r))
                                                (- 1.0 v)))
                                              4.5)
                                             -1.500000000010223)
                                          (- (- 1.5 (- t_0 (* (* (* 0.25 w) w) (* r r)))))
                                          (- (* 2.0 (pow r -2.0)) 1.5))))
                                      double code(double v, double w, double r) {
                                      	double t_0 = 2.0 / (r * r);
                                      	double tmp;
                                      	if ((((3.0 + t_0) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5) <= -1.500000000010223) {
                                      		tmp = -(1.5 - (t_0 - (((0.25 * w) * w) * (r * r))));
                                      	} else {
                                      		tmp = (2.0 * pow(r, -2.0)) - 1.5;
                                      	}
                                      	return tmp;
                                      }
                                      
                                      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(v, w, r)
                                      use fmin_fmax_functions
                                          real(8), intent (in) :: v
                                          real(8), intent (in) :: w
                                          real(8), intent (in) :: r
                                          real(8) :: t_0
                                          real(8) :: tmp
                                          t_0 = 2.0d0 / (r * r)
                                          if ((((3.0d0 + t_0) - (((0.125d0 * (3.0d0 - (2.0d0 * v))) * (((w * w) * r) * r)) / (1.0d0 - v))) - 4.5d0) <= (-1.500000000010223d0)) then
                                              tmp = -(1.5d0 - (t_0 - (((0.25d0 * w) * w) * (r * r))))
                                          else
                                              tmp = (2.0d0 * (r ** (-2.0d0))) - 1.5d0
                                          end if
                                          code = tmp
                                      end function
                                      
                                      public static double code(double v, double w, double r) {
                                      	double t_0 = 2.0 / (r * r);
                                      	double tmp;
                                      	if ((((3.0 + t_0) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5) <= -1.500000000010223) {
                                      		tmp = -(1.5 - (t_0 - (((0.25 * w) * w) * (r * r))));
                                      	} else {
                                      		tmp = (2.0 * Math.pow(r, -2.0)) - 1.5;
                                      	}
                                      	return tmp;
                                      }
                                      
                                      def code(v, w, r):
                                      	t_0 = 2.0 / (r * r)
                                      	tmp = 0
                                      	if (((3.0 + t_0) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5) <= -1.500000000010223:
                                      		tmp = -(1.5 - (t_0 - (((0.25 * w) * w) * (r * r))))
                                      	else:
                                      		tmp = (2.0 * math.pow(r, -2.0)) - 1.5
                                      	return tmp
                                      
                                      function code(v, w, r)
                                      	t_0 = Float64(2.0 / Float64(r * r))
                                      	tmp = 0.0
                                      	if (Float64(Float64(Float64(3.0 + t_0) - Float64(Float64(Float64(0.125 * Float64(3.0 - Float64(2.0 * v))) * Float64(Float64(Float64(w * w) * r) * r)) / Float64(1.0 - v))) - 4.5) <= -1.500000000010223)
                                      		tmp = Float64(-Float64(1.5 - Float64(t_0 - Float64(Float64(Float64(0.25 * w) * w) * Float64(r * r)))));
                                      	else
                                      		tmp = Float64(Float64(2.0 * (r ^ -2.0)) - 1.5);
                                      	end
                                      	return tmp
                                      end
                                      
                                      function tmp_2 = code(v, w, r)
                                      	t_0 = 2.0 / (r * r);
                                      	tmp = 0.0;
                                      	if ((((3.0 + t_0) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5) <= -1.500000000010223)
                                      		tmp = -(1.5 - (t_0 - (((0.25 * w) * w) * (r * r))));
                                      	else
                                      		tmp = (2.0 * (r ^ -2.0)) - 1.5;
                                      	end
                                      	tmp_2 = tmp;
                                      end
                                      
                                      code[v_, w_, r_] := Block[{t$95$0 = N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]}, If[LessEqual[N[(N[(N[(3.0 + t$95$0), $MachinePrecision] - N[(N[(N[(0.125 * N[(3.0 - N[(2.0 * v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] * N[(N[(N[(w * w), $MachinePrecision] * r), $MachinePrecision] * r), $MachinePrecision]), $MachinePrecision] / N[(1.0 - v), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] - 4.5), $MachinePrecision], -1.500000000010223], (-N[(1.5 - N[(t$95$0 - N[(N[(N[(0.25 * w), $MachinePrecision] * w), $MachinePrecision] * N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), N[(N[(2.0 * N[Power[r, -2.0], $MachinePrecision]), $MachinePrecision] - 1.5), $MachinePrecision]]]
                                      
                                      \begin{array}{l}
                                      t_0 := \frac{2}{r \cdot r}\\
                                      \mathbf{if}\;\left(\left(3 + t\_0\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \leq -1.500000000010223:\\
                                      \;\;\;\;-\left(1.5 - \left(t\_0 - \left(\left(0.25 \cdot w\right) \cdot w\right) \cdot \left(r \cdot r\right)\right)\right)\\
                                      
                                      \mathbf{else}:\\
                                      \;\;\;\;2 \cdot {r}^{-2} - 1.5\\
                                      
                                      
                                      \end{array}
                                      
                                      Derivation
                                      1. Split input into 2 regimes
                                      2. if (-.f64 (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) #s(literal 9/2 binary64)) < -1.5000000000102229

                                        1. Initial program 84.8%

                                          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                        2. Step-by-step derivation
                                          1. lift-*.f64N/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}}{1 - v}\right) - \frac{9}{2} \]
                                          2. lift-*.f64N/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(\left(w \cdot w\right) \cdot r\right)} \cdot r\right)}{1 - v}\right) - \frac{9}{2} \]
                                          3. associate-*l*N/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot w\right) \cdot \left(r \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                          4. lift-*.f64N/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot w\right)} \cdot \left(r \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                          5. unswap-sqrN/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                          6. lower-*.f64N/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - \frac{9}{2} \]
                                          7. lower-*.f64N/A

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(\frac{1}{8} \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\color{blue}{\left(w \cdot r\right)} \cdot \left(w \cdot r\right)\right)}{1 - v}\right) - \frac{9}{2} \]
                                          8. lower-*.f6494.4%

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(w \cdot r\right) \cdot \color{blue}{\left(w \cdot r\right)}\right)}{1 - v}\right) - 4.5 \]
                                        3. Applied rewrites94.4%

                                          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \color{blue}{\left(\left(w \cdot r\right) \cdot \left(w \cdot r\right)\right)}}{1 - v}\right) - 4.5 \]
                                        4. Applied rewrites96.6%

                                          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \color{blue}{\left(\frac{\mathsf{fma}\left(v + v, 0.125, -0.375\right)}{v - 1} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)}\right) - 4.5 \]
                                        5. Taylor expanded in v around inf

                                          \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{\frac{1}{4}} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                        6. Step-by-step derivation
                                          1. Applied rewrites91.7%

                                            \[\leadsto \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\color{blue}{0.25} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - 4.5 \]
                                          2. Step-by-step derivation
                                            1. lift--.f64N/A

                                              \[\leadsto \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right) - \frac{9}{2}} \]
                                            2. sub-negate-revN/A

                                              \[\leadsto \color{blue}{\mathsf{neg}\left(\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right)\right)} \]
                                            3. lower-neg.f64N/A

                                              \[\leadsto \color{blue}{-\left(\frac{9}{2} - \left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right)} \]
                                            4. lift--.f64N/A

                                              \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(\left(3 + \frac{2}{r \cdot r}\right) - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)}\right) \]
                                            5. lift-+.f64N/A

                                              \[\leadsto -\left(\frac{9}{2} - \left(\color{blue}{\left(3 + \frac{2}{r \cdot r}\right)} - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right) \]
                                            6. associate--l+N/A

                                              \[\leadsto -\left(\frac{9}{2} - \color{blue}{\left(3 + \left(\frac{2}{r \cdot r} - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right)}\right) \]
                                            7. associate--r+N/A

                                              \[\leadsto -\color{blue}{\left(\left(\frac{9}{2} - 3\right) - \left(\frac{2}{r \cdot r} - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right)} \]
                                            8. metadata-evalN/A

                                              \[\leadsto -\left(\color{blue}{\frac{3}{2}} - \left(\frac{2}{r \cdot r} - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right) \]
                                            9. lower--.f64N/A

                                              \[\leadsto -\color{blue}{\left(\frac{3}{2} - \left(\frac{2}{r \cdot r} - \left(\frac{1}{4} \cdot w\right) \cdot \left(\left(w \cdot r\right) \cdot r\right)\right)\right)} \]
                                          3. Applied rewrites78.3%

                                            \[\leadsto \color{blue}{-\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(0.25 \cdot w\right) \cdot w\right) \cdot \left(r \cdot r\right)\right)\right)} \]

                                          if -1.5000000000102229 < (-.f64 (-.f64 (+.f64 #s(literal 3 binary64) (/.f64 #s(literal 2 binary64) (*.f64 r r))) (/.f64 (*.f64 (*.f64 #s(literal 1/8 binary64) (-.f64 #s(literal 3 binary64) (*.f64 #s(literal 2 binary64) v))) (*.f64 (*.f64 (*.f64 w w) r) r)) (-.f64 #s(literal 1 binary64) v))) #s(literal 9/2 binary64))

                                          1. Initial program 84.8%

                                            \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                          2. Taylor expanded in w around 0

                                            \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2}} \]
                                          3. Step-by-step derivation
                                            1. lower--.f64N/A

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

                                              \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                            3. lower-/.f64N/A

                                              \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                            4. lower-pow.f6457.2%

                                              \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - 1.5 \]
                                          4. Applied rewrites57.2%

                                            \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - 1.5} \]
                                          5. Step-by-step derivation
                                            1. lift-/.f64N/A

                                              \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                            2. lift-pow.f64N/A

                                              \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                            3. pow-flipN/A

                                              \[\leadsto 2 \cdot {r}^{\left(\mathsf{neg}\left(2\right)\right)} - \frac{3}{2} \]
                                            4. metadata-evalN/A

                                              \[\leadsto 2 \cdot {r}^{-2} - \frac{3}{2} \]
                                            5. lower-pow.f6457.2%

                                              \[\leadsto 2 \cdot {r}^{-2} - 1.5 \]
                                          6. Applied rewrites57.2%

                                            \[\leadsto 2 \cdot {r}^{-2} - 1.5 \]
                                        7. Recombined 2 regimes into one program.
                                        8. Add Preprocessing

                                        Alternative 12: 57.2% accurate, 1.8× speedup?

                                        \[2 \cdot {r}^{-2} - 1.5 \]
                                        (FPCore (v w r)
                                          :precision binary64
                                          (- (* 2.0 (pow r -2.0)) 1.5))
                                        double code(double v, double w, double r) {
                                        	return (2.0 * pow(r, -2.0)) - 1.5;
                                        }
                                        
                                        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(v, w, r)
                                        use fmin_fmax_functions
                                            real(8), intent (in) :: v
                                            real(8), intent (in) :: w
                                            real(8), intent (in) :: r
                                            code = (2.0d0 * (r ** (-2.0d0))) - 1.5d0
                                        end function
                                        
                                        public static double code(double v, double w, double r) {
                                        	return (2.0 * Math.pow(r, -2.0)) - 1.5;
                                        }
                                        
                                        def code(v, w, r):
                                        	return (2.0 * math.pow(r, -2.0)) - 1.5
                                        
                                        function code(v, w, r)
                                        	return Float64(Float64(2.0 * (r ^ -2.0)) - 1.5)
                                        end
                                        
                                        function tmp = code(v, w, r)
                                        	tmp = (2.0 * (r ^ -2.0)) - 1.5;
                                        end
                                        
                                        code[v_, w_, r_] := N[(N[(2.0 * N[Power[r, -2.0], $MachinePrecision]), $MachinePrecision] - 1.5), $MachinePrecision]
                                        
                                        2 \cdot {r}^{-2} - 1.5
                                        
                                        Derivation
                                        1. Initial program 84.8%

                                          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                        2. Taylor expanded in w around 0

                                          \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2}} \]
                                        3. Step-by-step derivation
                                          1. lower--.f64N/A

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

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          3. lower-/.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          4. lower-pow.f6457.2%

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - 1.5 \]
                                        4. Applied rewrites57.2%

                                          \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - 1.5} \]
                                        5. Step-by-step derivation
                                          1. lift-/.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          2. lift-pow.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          3. pow-flipN/A

                                            \[\leadsto 2 \cdot {r}^{\left(\mathsf{neg}\left(2\right)\right)} - \frac{3}{2} \]
                                          4. metadata-evalN/A

                                            \[\leadsto 2 \cdot {r}^{-2} - \frac{3}{2} \]
                                          5. lower-pow.f6457.2%

                                            \[\leadsto 2 \cdot {r}^{-2} - 1.5 \]
                                        6. Applied rewrites57.2%

                                          \[\leadsto 2 \cdot {r}^{-2} - 1.5 \]
                                        7. Add Preprocessing

                                        Alternative 13: 57.2% accurate, 4.1× speedup?

                                        \[\frac{2}{r \cdot r} - 1.5 \]
                                        (FPCore (v w r)
                                          :precision binary64
                                          (- (/ 2.0 (* r r)) 1.5))
                                        double code(double v, double w, double r) {
                                        	return (2.0 / (r * r)) - 1.5;
                                        }
                                        
                                        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(v, w, r)
                                        use fmin_fmax_functions
                                            real(8), intent (in) :: v
                                            real(8), intent (in) :: w
                                            real(8), intent (in) :: r
                                            code = (2.0d0 / (r * r)) - 1.5d0
                                        end function
                                        
                                        public static double code(double v, double w, double r) {
                                        	return (2.0 / (r * r)) - 1.5;
                                        }
                                        
                                        def code(v, w, r):
                                        	return (2.0 / (r * r)) - 1.5
                                        
                                        function code(v, w, r)
                                        	return Float64(Float64(2.0 / Float64(r * r)) - 1.5)
                                        end
                                        
                                        function tmp = code(v, w, r)
                                        	tmp = (2.0 / (r * r)) - 1.5;
                                        end
                                        
                                        code[v_, w_, r_] := N[(N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision] - 1.5), $MachinePrecision]
                                        
                                        \frac{2}{r \cdot r} - 1.5
                                        
                                        Derivation
                                        1. Initial program 84.8%

                                          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                        2. Taylor expanded in w around 0

                                          \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2}} \]
                                        3. Step-by-step derivation
                                          1. lower--.f64N/A

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

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          3. lower-/.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          4. lower-pow.f6457.2%

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - 1.5 \]
                                        4. Applied rewrites57.2%

                                          \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - 1.5} \]
                                        5. Step-by-step derivation
                                          1. lift-/.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          2. lift-pow.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          3. pow-flipN/A

                                            \[\leadsto 2 \cdot {r}^{\left(\mathsf{neg}\left(2\right)\right)} - \frac{3}{2} \]
                                          4. metadata-evalN/A

                                            \[\leadsto 2 \cdot {r}^{-2} - \frac{3}{2} \]
                                          5. pow-to-expN/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          6. lower-unsound-exp.f64N/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          7. lower-unsound-*.f64N/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          8. lower-unsound-log.f6427.1%

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - 1.5 \]
                                        6. Applied rewrites27.1%

                                          \[\leadsto 2 \cdot e^{\log r \cdot -2} - 1.5 \]
                                        7. Step-by-step derivation
                                          1. lift-*.f64N/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          2. lift-exp.f64N/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          3. lift-*.f64N/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          4. lift-log.f64N/A

                                            \[\leadsto 2 \cdot e^{\log r \cdot -2} - \frac{3}{2} \]
                                          5. exp-to-powN/A

                                            \[\leadsto 2 \cdot {r}^{-2} - \frac{3}{2} \]
                                          6. metadata-evalN/A

                                            \[\leadsto 2 \cdot {r}^{\left(\mathsf{neg}\left(2\right)\right)} - \frac{3}{2} \]
                                          7. pow-flipN/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          8. pow2N/A

                                            \[\leadsto 2 \cdot \frac{1}{r \cdot r} - \frac{3}{2} \]
                                          9. lift-*.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{r \cdot r} - \frac{3}{2} \]
                                          10. mult-flip-revN/A

                                            \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
                                          11. lift-/.f6457.2%

                                            \[\leadsto \frac{2}{r \cdot r} - 1.5 \]
                                        8. Applied rewrites57.2%

                                          \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
                                        9. Add Preprocessing

                                        Alternative 14: 13.5% accurate, 42.6× speedup?

                                        \[-1.5 \]
                                        (FPCore (v w r)
                                          :precision binary64
                                          -1.5)
                                        double code(double v, double w, double r) {
                                        	return -1.5;
                                        }
                                        
                                        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(v, w, r)
                                        use fmin_fmax_functions
                                            real(8), intent (in) :: v
                                            real(8), intent (in) :: w
                                            real(8), intent (in) :: r
                                            code = -1.5d0
                                        end function
                                        
                                        public static double code(double v, double w, double r) {
                                        	return -1.5;
                                        }
                                        
                                        def code(v, w, r):
                                        	return -1.5
                                        
                                        function code(v, w, r)
                                        	return -1.5
                                        end
                                        
                                        function tmp = code(v, w, r)
                                        	tmp = -1.5;
                                        end
                                        
                                        code[v_, w_, r_] := -1.5
                                        
                                        -1.5
                                        
                                        Derivation
                                        1. Initial program 84.8%

                                          \[\left(\left(3 + \frac{2}{r \cdot r}\right) - \frac{\left(0.125 \cdot \left(3 - 2 \cdot v\right)\right) \cdot \left(\left(\left(w \cdot w\right) \cdot r\right) \cdot r\right)}{1 - v}\right) - 4.5 \]
                                        2. Taylor expanded in w around 0

                                          \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2}} \]
                                        3. Step-by-step derivation
                                          1. lower--.f64N/A

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

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          3. lower-/.f64N/A

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - \frac{3}{2} \]
                                          4. lower-pow.f6457.2%

                                            \[\leadsto 2 \cdot \frac{1}{{r}^{2}} - 1.5 \]
                                        4. Applied rewrites57.2%

                                          \[\leadsto \color{blue}{2 \cdot \frac{1}{{r}^{2}} - 1.5} \]
                                        5. Taylor expanded in r around inf

                                          \[\leadsto \frac{-3}{2} \]
                                        6. Step-by-step derivation
                                          1. Applied rewrites13.5%

                                            \[\leadsto -1.5 \]
                                          2. Add Preprocessing

                                          Reproduce

                                          ?
                                          herbie shell --seed 2025212 
                                          (FPCore (v w r)
                                            :name "Rosa's TurbineBenchmark"
                                            :precision binary64
                                            (- (- (+ 3.0 (/ 2.0 (* r r))) (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v))) 4.5))