Rosa's TurbineBenchmark

Percentage Accurate: 84.8% → 99.4%
Time: 5.5s
Alternatives: 14
Speedup: 1.7×

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.4% accurate, 0.9× speedup?

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

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


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if w < 0.20000000000000001

    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.8%

        \[\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.3%

      \[\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(\color{blue}{\left(\frac{3}{8} \cdot w\right)} \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    5. Step-by-step derivation
      1. lower-*.f6481.1%

        \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(0.375 \cdot \color{blue}{w}\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    6. Applied rewrites81.1%

      \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\color{blue}{\left(0.375 \cdot w\right)} \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    7. Step-by-step derivation
      1. lift-neg.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{2}{r \cdot r} - \mathsf{fma}\left(\frac{r}{1 - v} \cdot \mathsf{fma}\left(-0.25, v \cdot w, 0.375 \cdot w\right), w \cdot r, 1.5\right) \]
    11. Applied rewrites94.0%

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

    if 0.20000000000000001 < 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 \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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.5%

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

Alternative 2: 99.4% accurate, 1.1× speedup?

\[-\mathsf{fma}\left(\left(\left(\frac{r}{1 - v} \cdot 0.125\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right) \cdot w, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
(FPCore (v w r)
 :precision binary64
 (-
  (fma
   (* (* (* (/ r (- 1.0 v)) 0.125) (fma -2.0 v 3.0)) w)
   (* w r)
   (- 1.5 (/ 2.0 (* r r))))))
double code(double v, double w, double r) {
	return -fma(((((r / (1.0 - v)) * 0.125) * fma(-2.0, v, 3.0)) * w), (w * r), (1.5 - (2.0 / (r * r))));
}
function code(v, w, r)
	return Float64(-fma(Float64(Float64(Float64(Float64(r / Float64(1.0 - v)) * 0.125) * fma(-2.0, v, 3.0)) * w), Float64(w * r), Float64(1.5 - Float64(2.0 / Float64(r * r)))))
end
code[v_, w_, r_] := (-N[(N[(N[(N[(N[(r / N[(1.0 - v), $MachinePrecision]), $MachinePrecision] * 0.125), $MachinePrecision] * N[(-2.0 * v + 3.0), $MachinePrecision]), $MachinePrecision] * w), $MachinePrecision] * N[(w * r), $MachinePrecision] + N[(1.5 - N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision])
-\mathsf{fma}\left(\left(\left(\frac{r}{1 - v} \cdot 0.125\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right) \cdot w, w \cdot r, 1.5 - \frac{2}{r \cdot r}\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 \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.8%

      \[\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.3%

    \[\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. Step-by-step derivation
    1. lift--.f64N/A

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

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

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

      \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
  5. Applied rewrites96.7%

    \[\leadsto -\color{blue}{\mathsf{fma}\left(\frac{r}{1 - v} \cdot \left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right), \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right)} \]
  6. Step-by-step derivation
    1. lift-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

      \[\leadsto -\mathsf{fma}\left(\color{blue}{\left(\left(\frac{r}{1 - v} \cdot \frac{1}{8}\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right)} \cdot w, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
    12. lower-*.f6499.4%

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

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

Alternative 3: 98.8% accurate, 1.3× speedup?

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

\mathbf{elif}\;v \leq 3 \cdot 10^{-44}:\\
\;\;\;\;-\mathsf{fma}\left(\left(0.375 \cdot r\right) \cdot w, w \cdot r, t\_0\right)\\

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


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if v < -3.1000000000000003e95 or 3.0000000000000002e-44 < 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 \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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

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

      \[\leadsto -\mathsf{fma}\left(\color{blue}{\frac{1}{4} \cdot r}, \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right) \]
    7. Step-by-step derivation
      1. lower-*.f6491.0%

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

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

    if -3.1000000000000003e95 < v < 3.0000000000000002e-44

    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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

      \[\leadsto -\color{blue}{\mathsf{fma}\left(\frac{r}{1 - v} \cdot \left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right), \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto -\mathsf{fma}\left(\color{blue}{\left(\left(\frac{r}{1 - v} \cdot \frac{1}{8}\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right)} \cdot w, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      12. lower-*.f6499.4%

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

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

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

        \[\leadsto -\mathsf{fma}\left(\left(0.375 \cdot \color{blue}{r}\right) \cdot w, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    10. Applied rewrites93.5%

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

Alternative 4: 98.5% accurate, 1.3× speedup?

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

\mathbf{elif}\;v \leq 3 \cdot 10^{-44}:\\
\;\;\;\;-\mathsf{fma}\left(0.375 \cdot \left(r \cdot w\right), w \cdot r, t\_0\right)\\

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


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if v < -3.1000000000000003e95 or 3.0000000000000002e-44 < 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 \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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

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

      \[\leadsto -\mathsf{fma}\left(\color{blue}{\frac{1}{4} \cdot r}, \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right) \]
    7. Step-by-step derivation
      1. lower-*.f6491.0%

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

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

    if -3.1000000000000003e95 < v < 3.0000000000000002e-44

    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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

      \[\leadsto -\color{blue}{\mathsf{fma}\left(\frac{r}{1 - v} \cdot \left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right), \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto -\mathsf{fma}\left(\color{blue}{\left(\left(\frac{r}{1 - v} \cdot \frac{1}{8}\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right)} \cdot w, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      12. lower-*.f6499.4%

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

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

      \[\leadsto -\mathsf{fma}\left(\color{blue}{\frac{3}{8} \cdot \left(r \cdot w\right)}, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    9. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto -\mathsf{fma}\left(\frac{3}{8} \cdot \color{blue}{\left(r \cdot w\right)}, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      2. lower-*.f6493.4%

        \[\leadsto -\mathsf{fma}\left(0.375 \cdot \left(r \cdot \color{blue}{w}\right), w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    10. Applied rewrites93.4%

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

Alternative 5: 96.9% accurate, 0.9× speedup?

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

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


\end{array}
Derivation
  1. Split input into 2 regimes
  2. if r < 1.4e-57

    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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

      \[\leadsto -\color{blue}{\mathsf{fma}\left(\frac{r}{1 - v} \cdot \left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right), \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto -\mathsf{fma}\left(\color{blue}{\left(\left(\frac{r}{1 - v} \cdot \frac{1}{8}\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right)} \cdot w, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      12. lower-*.f6499.4%

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

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

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

        \[\leadsto -\mathsf{fma}\left(\left(0.375 \cdot \color{blue}{r}\right) \cdot w, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    10. Applied rewrites93.5%

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

    if 1.4e-57 < 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.8%

        \[\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.3%

      \[\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(\color{blue}{\left(\frac{3}{8} \cdot w\right)} \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    5. Step-by-step derivation
      1. lower-*.f6481.1%

        \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(0.375 \cdot \color{blue}{w}\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    6. Applied rewrites81.1%

      \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\color{blue}{\left(0.375 \cdot w\right)} \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    7. Step-by-step derivation
      1. lift-neg.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{2}{r \cdot r} - \mathsf{fma}\left(\frac{r}{1 - v} \cdot \mathsf{fma}\left(-0.25, v \cdot w, 0.375 \cdot w\right), w \cdot r, 1.5\right) \]
    11. Applied rewrites94.0%

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

Alternative 6: 96.9% accurate, 1.1× speedup?

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

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


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

    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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

      \[\leadsto -\color{blue}{\mathsf{fma}\left(\frac{r}{1 - v} \cdot \left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right), \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto -\mathsf{fma}\left(\color{blue}{\left(\left(\frac{r}{1 - v} \cdot \frac{1}{8}\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right)} \cdot w, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      12. lower-*.f6499.4%

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

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

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

        \[\leadsto -\mathsf{fma}\left(\left(0.375 \cdot \color{blue}{r}\right) \cdot w, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    10. Applied rewrites93.5%

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

    if 6.8e7 < 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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

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

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

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

    Alternative 7: 93.5% accurate, 1.7× speedup?

    \[-\mathsf{fma}\left(0.375 \cdot \left(r \cdot w\right), w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    (FPCore (v w r)
     :precision binary64
     (- (fma (* 0.375 (* r w)) (* w r) (- 1.5 (/ 2.0 (* r r))))))
    double code(double v, double w, double r) {
    	return -fma((0.375 * (r * w)), (w * r), (1.5 - (2.0 / (r * r))));
    }
    
    function code(v, w, r)
    	return Float64(-fma(Float64(0.375 * Float64(r * w)), Float64(w * r), Float64(1.5 - Float64(2.0 / Float64(r * r)))))
    end
    
    code[v_, w_, r_] := (-N[(N[(0.375 * N[(r * w), $MachinePrecision]), $MachinePrecision] * N[(w * r), $MachinePrecision] + N[(1.5 - N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision])
    
    -\mathsf{fma}\left(0.375 \cdot \left(r \cdot w\right), w \cdot r, 1.5 - \frac{2}{r \cdot r}\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 \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.8%

        \[\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.3%

      \[\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. Step-by-step derivation
      1. lift--.f64N/A

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

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

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

        \[\leadsto -\color{blue}{\left(\left(\left(\left(\mathsf{fma}\left(-2, v, 3\right) \cdot \frac{1}{8}\right) \cdot w\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v} + \left(\frac{3}{2} - \frac{2}{r \cdot r}\right)\right)} \]
    5. Applied rewrites96.7%

      \[\leadsto -\color{blue}{\mathsf{fma}\left(\frac{r}{1 - v} \cdot \left(\mathsf{fma}\left(-2, v, 3\right) \cdot 0.125\right), \left(w \cdot r\right) \cdot w, 1.5 - \frac{2}{r \cdot r}\right)} \]
    6. Step-by-step derivation
      1. lift-fma.f64N/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto -\mathsf{fma}\left(\color{blue}{\left(\left(\frac{r}{1 - v} \cdot \frac{1}{8}\right) \cdot \mathsf{fma}\left(-2, v, 3\right)\right)} \cdot w, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      12. lower-*.f6499.4%

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

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

      \[\leadsto -\mathsf{fma}\left(\color{blue}{\frac{3}{8} \cdot \left(r \cdot w\right)}, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    9. Step-by-step derivation
      1. lower-*.f64N/A

        \[\leadsto -\mathsf{fma}\left(\frac{3}{8} \cdot \color{blue}{\left(r \cdot w\right)}, w \cdot r, \frac{3}{2} - \frac{2}{r \cdot r}\right) \]
      2. lower-*.f6493.4%

        \[\leadsto -\mathsf{fma}\left(0.375 \cdot \left(r \cdot \color{blue}{w}\right), w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    10. Applied rewrites93.4%

      \[\leadsto -\mathsf{fma}\left(\color{blue}{0.375 \cdot \left(r \cdot w\right)}, w \cdot r, 1.5 - \frac{2}{r \cdot r}\right) \]
    11. Add Preprocessing

    Alternative 8: 93.4% accurate, 1.7× speedup?

    \[\frac{2}{r \cdot r} - \mathsf{fma}\left(r \cdot \left(0.375 \cdot w\right), w \cdot r, 1.5\right) \]
    (FPCore (v w r)
     :precision binary64
     (- (/ 2.0 (* r r)) (fma (* r (* 0.375 w)) (* w r) 1.5)))
    double code(double v, double w, double r) {
    	return (2.0 / (r * r)) - fma((r * (0.375 * w)), (w * r), 1.5);
    }
    
    function code(v, w, r)
    	return Float64(Float64(2.0 / Float64(r * r)) - fma(Float64(r * Float64(0.375 * w)), Float64(w * r), 1.5))
    end
    
    code[v_, w_, r_] := N[(N[(2.0 / N[(r * r), $MachinePrecision]), $MachinePrecision] - N[(N[(r * N[(0.375 * w), $MachinePrecision]), $MachinePrecision] * N[(w * r), $MachinePrecision] + 1.5), $MachinePrecision]), $MachinePrecision]
    
    \frac{2}{r \cdot r} - \mathsf{fma}\left(r \cdot \left(0.375 \cdot w\right), w \cdot r, 1.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 \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.8%

        \[\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.3%

      \[\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(\color{blue}{\left(\frac{3}{8} \cdot w\right)} \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    5. Step-by-step derivation
      1. lower-*.f6481.1%

        \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\left(0.375 \cdot \color{blue}{w}\right) \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    6. Applied rewrites81.1%

      \[\leadsto -\left(1.5 - \left(\frac{2}{r \cdot r} - \left(\color{blue}{\left(0.375 \cdot w\right)} \cdot \left(w \cdot r\right)\right) \cdot \frac{r}{1 - v}\right)\right) \]
    7. Step-by-step derivation
      1. lift-neg.f64N/A

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

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

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

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

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

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

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

      \[\leadsto \frac{2}{r \cdot r} - \mathsf{fma}\left(\color{blue}{r} \cdot \left(0.375 \cdot w\right), w \cdot r, 1.5\right) \]
    10. Step-by-step derivation
      1. Applied rewrites93.5%

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

      Alternative 9: 72.4% accurate, 0.6× speedup?

      \[\begin{array}{l} \mathbf{if}\;\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 \leq -2 \cdot 10^{+154}:\\ \;\;\;\;\frac{\mathsf{fma}\left(0.75, r \cdot r, -1\right)}{r} \cdot \frac{-2}{r}\\ \mathbf{else}:\\ \;\;\;\;2 \cdot {r}^{-2} - 1.5\\ \end{array} \]
      (FPCore (v w r)
       :precision binary64
       (if (<=
            (-
             (-
              (+ 3.0 (/ 2.0 (* r r)))
              (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v)))
             4.5)
            -2e+154)
         (* (/ (fma 0.75 (* r r) -1.0) r) (/ -2.0 r))
         (- (* 2.0 (pow r -2.0)) 1.5)))
      double code(double v, double w, double r) {
      	double tmp;
      	if ((((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5) <= -2e+154) {
      		tmp = (fma(0.75, (r * r), -1.0) / r) * (-2.0 / r);
      	} else {
      		tmp = (2.0 * pow(r, -2.0)) - 1.5;
      	}
      	return tmp;
      }
      
      function code(v, w, r)
      	tmp = 0.0
      	if (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) <= -2e+154)
      		tmp = Float64(Float64(fma(0.75, Float64(r * r), -1.0) / r) * Float64(-2.0 / r));
      	else
      		tmp = Float64(Float64(2.0 * (r ^ -2.0)) - 1.5);
      	end
      	return tmp
      end
      
      code[v_, w_, r_] := If[LessEqual[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], -2e+154], N[(N[(N[(0.75 * N[(r * r), $MachinePrecision] + -1.0), $MachinePrecision] / r), $MachinePrecision] * N[(-2.0 / r), $MachinePrecision]), $MachinePrecision], N[(N[(2.0 * N[Power[r, -2.0], $MachinePrecision]), $MachinePrecision] - 1.5), $MachinePrecision]]
      
      \begin{array}{l}
      \mathbf{if}\;\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 \leq -2 \cdot 10^{+154}:\\
      \;\;\;\;\frac{\mathsf{fma}\left(0.75, r \cdot r, -1\right)}{r} \cdot \frac{-2}{r}\\
      
      \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)) < -2.0000000000000001e154

        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.f6456.6%

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

          \[\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}} - \color{blue}{\frac{3}{2}} \]
          2. lift-*.f64N/A

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
          9. frac-subN/A

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

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

            \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
        6. Applied rewrites52.4%

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

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

            \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
          3. div-subN/A

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

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

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

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
          13. frac-timesN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
          15. pow2N/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
          18. pow-divN/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
          21. metadata-evalN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
          23. lower--.f6456.6%

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
        8. Applied rewrites56.6%

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

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{\frac{3}{2}} \]
          2. sub-to-mult-revN/A

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

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

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

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

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

            \[\leadsto \frac{\left(1 - \frac{\frac{3}{2}}{\frac{2}{r \cdot r}}\right) \cdot 2}{r \cdot \color{blue}{r}} \]
          8. sqr-neg-revN/A

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

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

            \[\leadsto \frac{1 - \frac{\frac{3}{2}}{\frac{2}{r \cdot r}}}{\mathsf{neg}\left(r\right)} \cdot \color{blue}{\frac{2}{\mathsf{neg}\left(r\right)}} \]
        10. Applied rewrites69.0%

          \[\leadsto \frac{\mathsf{fma}\left(0.75, r \cdot r, -1\right)}{r} \cdot \color{blue}{\frac{-2}{r}} \]

        if -2.0000000000000001e154 < (-.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.f6456.6%

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

          \[\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.f6456.6%

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

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

      Alternative 10: 72.3% accurate, 1.7× speedup?

      \[\begin{array}{l} \mathbf{if}\;\left|w\right| \leq 4.8 \cdot 10^{-135}:\\ \;\;\;\;\frac{\frac{6}{r}}{3 \cdot r} - 1.5\\ \mathbf{else}:\\ \;\;\;\;\frac{\mathsf{fma}\left(-0.75, r \cdot r, 1\right) \cdot \frac{2}{r}}{r}\\ \end{array} \]
      (FPCore (v w r)
       :precision binary64
       (if (<= (fabs w) 4.8e-135)
         (- (/ (/ 6.0 r) (* 3.0 r)) 1.5)
         (/ (* (fma -0.75 (* r r) 1.0) (/ 2.0 r)) r)))
      double code(double v, double w, double r) {
      	double tmp;
      	if (fabs(w) <= 4.8e-135) {
      		tmp = ((6.0 / r) / (3.0 * r)) - 1.5;
      	} else {
      		tmp = (fma(-0.75, (r * r), 1.0) * (2.0 / r)) / r;
      	}
      	return tmp;
      }
      
      function code(v, w, r)
      	tmp = 0.0
      	if (abs(w) <= 4.8e-135)
      		tmp = Float64(Float64(Float64(6.0 / r) / Float64(3.0 * r)) - 1.5);
      	else
      		tmp = Float64(Float64(fma(-0.75, Float64(r * r), 1.0) * Float64(2.0 / r)) / r);
      	end
      	return tmp
      end
      
      code[v_, w_, r_] := If[LessEqual[N[Abs[w], $MachinePrecision], 4.8e-135], N[(N[(N[(6.0 / r), $MachinePrecision] / N[(3.0 * r), $MachinePrecision]), $MachinePrecision] - 1.5), $MachinePrecision], N[(N[(N[(-0.75 * N[(r * r), $MachinePrecision] + 1.0), $MachinePrecision] * N[(2.0 / r), $MachinePrecision]), $MachinePrecision] / r), $MachinePrecision]]
      
      \begin{array}{l}
      \mathbf{if}\;\left|w\right| \leq 4.8 \cdot 10^{-135}:\\
      \;\;\;\;\frac{\frac{6}{r}}{3 \cdot r} - 1.5\\
      
      \mathbf{else}:\\
      \;\;\;\;\frac{\mathsf{fma}\left(-0.75, r \cdot r, 1\right) \cdot \frac{2}{r}}{r}\\
      
      
      \end{array}
      
      Derivation
      1. Split input into 2 regimes
      2. if w < 4.7999999999999997e-135

        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.f6456.6%

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

          \[\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}} - \color{blue}{\frac{3}{2}} \]
          2. lift-*.f64N/A

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
          9. frac-subN/A

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

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

            \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
        6. Applied rewrites52.4%

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

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

            \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
          3. div-subN/A

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

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

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

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
          13. frac-timesN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
          15. pow2N/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
          18. pow-divN/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
          21. metadata-evalN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
          23. lower--.f6456.6%

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
        8. Applied rewrites56.6%

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

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

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

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

            \[\leadsto \frac{\frac{6}{3}}{r \cdot r} - \frac{3}{2} \]
          5. associate-/r*N/A

            \[\leadsto \frac{6}{3 \cdot \left(r \cdot r\right)} - \frac{3}{2} \]
          6. *-commutativeN/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          7. lift-*.f64N/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          8. lift-*.f64N/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          9. lift-*.f64N/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          10. associate-*l*N/A

            \[\leadsto \frac{6}{r \cdot \left(r \cdot 3\right)} - \frac{3}{2} \]
          11. associate-/r*N/A

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

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

            \[\leadsto \frac{\frac{6}{r}}{r \cdot 3} - \frac{3}{2} \]
          14. *-commutativeN/A

            \[\leadsto \frac{\frac{6}{r}}{3 \cdot r} - \frac{3}{2} \]
          15. lower-*.f6456.5%

            \[\leadsto \frac{\frac{6}{r}}{3 \cdot r} - 1.5 \]
        10. Applied rewrites56.5%

          \[\leadsto \frac{\frac{6}{r}}{3 \cdot r} - 1.5 \]

        if 4.7999999999999997e-135 < 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. 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.f6456.6%

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

          \[\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}} - \color{blue}{\frac{3}{2}} \]
          2. lift-*.f64N/A

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
          9. frac-subN/A

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

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

            \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
        6. Applied rewrites52.4%

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

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

            \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
          3. div-subN/A

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

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

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

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
          13. frac-timesN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
          15. pow2N/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
          18. pow-divN/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
          21. metadata-evalN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
          23. lower--.f6456.6%

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
        8. Applied rewrites56.6%

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

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{\frac{3}{2}} \]
          2. sub-to-mult-revN/A

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

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

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

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

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

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

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

            \[\leadsto \frac{\left(1 - \frac{\frac{3}{2}}{\frac{2}{r \cdot r}}\right) \cdot \frac{2}{r}}{\color{blue}{r}} \]
        10. Applied rewrites69.0%

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

      Alternative 11: 72.2% accurate, 0.7× speedup?

      \[\begin{array}{l} \mathbf{if}\;\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 \leq -2 \cdot 10^{+154}:\\ \;\;\;\;\frac{\mathsf{fma}\left(0.75, r \cdot r, -1\right)}{r} \cdot \frac{-2}{r}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{6}{r}}{3 \cdot r} - 1.5\\ \end{array} \]
      (FPCore (v w r)
       :precision binary64
       (if (<=
            (-
             (-
              (+ 3.0 (/ 2.0 (* r r)))
              (/ (* (* 0.125 (- 3.0 (* 2.0 v))) (* (* (* w w) r) r)) (- 1.0 v)))
             4.5)
            -2e+154)
         (* (/ (fma 0.75 (* r r) -1.0) r) (/ -2.0 r))
         (- (/ (/ 6.0 r) (* 3.0 r)) 1.5)))
      double code(double v, double w, double r) {
      	double tmp;
      	if ((((3.0 + (2.0 / (r * r))) - (((0.125 * (3.0 - (2.0 * v))) * (((w * w) * r) * r)) / (1.0 - v))) - 4.5) <= -2e+154) {
      		tmp = (fma(0.75, (r * r), -1.0) / r) * (-2.0 / r);
      	} else {
      		tmp = ((6.0 / r) / (3.0 * r)) - 1.5;
      	}
      	return tmp;
      }
      
      function code(v, w, r)
      	tmp = 0.0
      	if (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) <= -2e+154)
      		tmp = Float64(Float64(fma(0.75, Float64(r * r), -1.0) / r) * Float64(-2.0 / r));
      	else
      		tmp = Float64(Float64(Float64(6.0 / r) / Float64(3.0 * r)) - 1.5);
      	end
      	return tmp
      end
      
      code[v_, w_, r_] := If[LessEqual[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], -2e+154], N[(N[(N[(0.75 * N[(r * r), $MachinePrecision] + -1.0), $MachinePrecision] / r), $MachinePrecision] * N[(-2.0 / r), $MachinePrecision]), $MachinePrecision], N[(N[(N[(6.0 / r), $MachinePrecision] / N[(3.0 * r), $MachinePrecision]), $MachinePrecision] - 1.5), $MachinePrecision]]
      
      \begin{array}{l}
      \mathbf{if}\;\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 \leq -2 \cdot 10^{+154}:\\
      \;\;\;\;\frac{\mathsf{fma}\left(0.75, r \cdot r, -1\right)}{r} \cdot \frac{-2}{r}\\
      
      \mathbf{else}:\\
      \;\;\;\;\frac{\frac{6}{r}}{3 \cdot r} - 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)) < -2.0000000000000001e154

        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.f6456.6%

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

          \[\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}} - \color{blue}{\frac{3}{2}} \]
          2. lift-*.f64N/A

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
          9. frac-subN/A

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

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

            \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
        6. Applied rewrites52.4%

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

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

            \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
          3. div-subN/A

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

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

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

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
          13. frac-timesN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
          15. pow2N/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
          18. pow-divN/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
          21. metadata-evalN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
          23. lower--.f6456.6%

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
        8. Applied rewrites56.6%

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

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{\frac{3}{2}} \]
          2. sub-to-mult-revN/A

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

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

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

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

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

            \[\leadsto \frac{\left(1 - \frac{\frac{3}{2}}{\frac{2}{r \cdot r}}\right) \cdot 2}{r \cdot \color{blue}{r}} \]
          8. sqr-neg-revN/A

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

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

            \[\leadsto \frac{1 - \frac{\frac{3}{2}}{\frac{2}{r \cdot r}}}{\mathsf{neg}\left(r\right)} \cdot \color{blue}{\frac{2}{\mathsf{neg}\left(r\right)}} \]
        10. Applied rewrites69.0%

          \[\leadsto \frac{\mathsf{fma}\left(0.75, r \cdot r, -1\right)}{r} \cdot \color{blue}{\frac{-2}{r}} \]

        if -2.0000000000000001e154 < (-.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.f6456.6%

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

          \[\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}} - \color{blue}{\frac{3}{2}} \]
          2. lift-*.f64N/A

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
          9. frac-subN/A

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

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

            \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
        6. Applied rewrites52.4%

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

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

            \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
          3. div-subN/A

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

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

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

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

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

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

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

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
          13. frac-timesN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
          15. pow2N/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
          18. pow-divN/A

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

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

            \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
          21. metadata-evalN/A

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

            \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
          23. lower--.f6456.6%

            \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
        8. Applied rewrites56.6%

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

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

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

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

            \[\leadsto \frac{\frac{6}{3}}{r \cdot r} - \frac{3}{2} \]
          5. associate-/r*N/A

            \[\leadsto \frac{6}{3 \cdot \left(r \cdot r\right)} - \frac{3}{2} \]
          6. *-commutativeN/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          7. lift-*.f64N/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          8. lift-*.f64N/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          9. lift-*.f64N/A

            \[\leadsto \frac{6}{\left(r \cdot r\right) \cdot 3} - \frac{3}{2} \]
          10. associate-*l*N/A

            \[\leadsto \frac{6}{r \cdot \left(r \cdot 3\right)} - \frac{3}{2} \]
          11. associate-/r*N/A

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

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

            \[\leadsto \frac{\frac{6}{r}}{r \cdot 3} - \frac{3}{2} \]
          14. *-commutativeN/A

            \[\leadsto \frac{\frac{6}{r}}{3 \cdot r} - \frac{3}{2} \]
          15. lower-*.f6456.5%

            \[\leadsto \frac{\frac{6}{r}}{3 \cdot r} - 1.5 \]
        10. Applied rewrites56.5%

          \[\leadsto \frac{\frac{6}{r}}{3 \cdot r} - 1.5 \]
      3. Recombined 2 regimes into one program.
      4. Add Preprocessing

      Alternative 12: 56.6% accurate, 3.8× speedup?

      \[\frac{\frac{2}{r}}{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(Float64(2.0 / 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[(N[(2.0 / r), $MachinePrecision] / r), $MachinePrecision] - 1.5), $MachinePrecision]
      
      \frac{\frac{2}{r}}{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.f6456.6%

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

        \[\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}} - \color{blue}{\frac{3}{2}} \]
        2. lift-*.f64N/A

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

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

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

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

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
        9. frac-subN/A

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

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

          \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
      6. Applied rewrites52.4%

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

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

          \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
        3. div-subN/A

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

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

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

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

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

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

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

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
        13. frac-timesN/A

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
        15. pow2N/A

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
        18. pow-divN/A

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

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

          \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
        21. metadata-evalN/A

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
        23. lower--.f6456.6%

          \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
      8. Applied rewrites56.6%

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
        3. associate-/r*N/A

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

          \[\leadsto \frac{\frac{2}{r}}{r} - \frac{3}{2} \]
        5. lower-/.f6456.6%

          \[\leadsto \frac{\frac{2}{r}}{r} - 1.5 \]
      10. Applied rewrites56.6%

        \[\leadsto \frac{\frac{2}{r}}{r} - 1.5 \]
      11. Add Preprocessing

      Alternative 13: 56.6% 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.f6456.6%

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

        \[\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}} - \color{blue}{\frac{3}{2}} \]
        2. lift-*.f64N/A

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

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

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

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

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{\frac{9}{2}}{\color{blue}{3}} \]
        9. frac-subN/A

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

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

          \[\leadsto \frac{2 \cdot 3 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{3 \cdot \left(r \cdot r\right)}} \]
      6. Applied rewrites52.4%

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

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

          \[\leadsto \frac{6 - \left(r \cdot r\right) \cdot \frac{9}{2}}{\color{blue}{\left(r \cdot r\right)} \cdot 3} \]
        3. div-subN/A

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

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

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

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

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

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

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

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{\left(r \cdot r\right) \cdot \frac{9}{2}}{\left(r \cdot r\right) \cdot \color{blue}{3}} \]
        13. frac-timesN/A

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{r \cdot r}{r \cdot r} \cdot \frac{\frac{9}{2}}{3} \]
        15. pow2N/A

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

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{{r}^{2}}{{r}^{2}} \cdot \frac{\frac{9}{2}}{3} \]
        18. pow-divN/A

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

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

          \[\leadsto \frac{2}{r \cdot r} - 1 \cdot \frac{\color{blue}{\frac{9}{2}}}{3} \]
        21. metadata-evalN/A

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

          \[\leadsto \frac{2}{r \cdot r} - \frac{3}{2} \]
        23. lower--.f6456.6%

          \[\leadsto \frac{2}{r \cdot r} - \color{blue}{1.5} \]
      8. Applied rewrites56.6%

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

      Alternative 14: 13.6% 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.f6456.6%

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

        \[\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.6%

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

        Reproduce

        ?
        herbie shell --seed 2025204 
        (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))