rsin B (should all be same)

Percentage Accurate: 77.0% → 99.5%
Time: 12.1s
Alternatives: 17
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ r \cdot \frac{\sin b}{\cos \left(a + b\right)} \end{array} \]
(FPCore (r a b) :precision binary64 (* r (/ (sin b) (cos (+ a b)))))
double code(double r, double a, double b) {
	return r * (sin(b) / cos((a + b)));
}
real(8) function code(r, a, b)
    real(8), intent (in) :: r
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    code = r * (sin(b) / cos((a + b)))
end function
public static double code(double r, double a, double b) {
	return r * (Math.sin(b) / Math.cos((a + b)));
}
def code(r, a, b):
	return r * (math.sin(b) / math.cos((a + b)))
function code(r, a, b)
	return Float64(r * Float64(sin(b) / cos(Float64(a + b))))
end
function tmp = code(r, a, b)
	tmp = r * (sin(b) / cos((a + b)));
end
code[r_, a_, b_] := N[(r * N[(N[Sin[b], $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\end{array}

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

Herbie found 17 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: 77.0% accurate, 1.0× speedup?

\[\begin{array}{l} \\ r \cdot \frac{\sin b}{\cos \left(a + b\right)} \end{array} \]
(FPCore (r a b) :precision binary64 (* r (/ (sin b) (cos (+ a b)))))
double code(double r, double a, double b) {
	return r * (sin(b) / cos((a + b)));
}
real(8) function code(r, a, b)
    real(8), intent (in) :: r
    real(8), intent (in) :: a
    real(8), intent (in) :: b
    code = r * (sin(b) / cos((a + b)))
end function
public static double code(double r, double a, double b) {
	return r * (Math.sin(b) / Math.cos((a + b)));
}
def code(r, a, b):
	return r * (math.sin(b) / math.cos((a + b)))
function code(r, a, b)
	return Float64(r * Float64(sin(b) / cos(Float64(a + b))))
end
function tmp = code(r, a, b)
	tmp = r * (sin(b) / cos((a + b)));
end
code[r_, a_, b_] := N[(r * N[(N[Sin[b], $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\end{array}

Alternative 1: 99.5% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \frac{\sin b \cdot r}{\mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (/ (* (sin b) r) (fma (cos a) (cos b) (* (- (sin b)) (sin a)))))
double code(double r, double a, double b) {
	return (sin(b) * r) / fma(cos(a), cos(b), (-sin(b) * sin(a)));
}
function code(r, a, b)
	return Float64(Float64(sin(b) * r) / fma(cos(a), cos(b), Float64(Float64(-sin(b)) * sin(a))))
end
code[r_, a_, b_] := N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / N[(N[Cos[a], $MachinePrecision] * N[Cos[b], $MachinePrecision] + N[((-N[Sin[b], $MachinePrecision]) * N[Sin[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{\sin b \cdot r}{\mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)}
\end{array}
Derivation
  1. Initial program 76.3%

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Add Preprocessing
  3. Step-by-step derivation
    1. lift-cos.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
    2. lift-+.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
    3. cos-sumN/A

      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
    4. sub-negN/A

      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
    5. *-commutativeN/A

      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
    6. lower-fma.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
    7. lower-cos.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
    8. lower-cos.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
    9. lift-sin.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
    10. *-commutativeN/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
    11. distribute-lft-neg-inN/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
    12. lower-*.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
    13. lower-neg.f64N/A

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
    14. lower-sin.f6499.6

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
  4. Applied rewrites99.6%

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
  5. Taylor expanded in a around inf

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
  6. Step-by-step derivation
    1. lower-/.f64N/A

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
    2. lower-*.f64N/A

      \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
    3. lower-sin.f64N/A

      \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
    4. +-commutativeN/A

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
    5. lower-fma.f64N/A

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
    6. lower-cos.f64N/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
    7. lower-cos.f64N/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
    8. mul-1-negN/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
    9. distribute-rgt-neg-inN/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
    10. mul-1-negN/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
    11. lower-*.f64N/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
    12. lower-sin.f64N/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
    13. mul-1-negN/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
    14. lower-neg.f64N/A

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
    15. lower-sin.f6499.6

      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
  7. Applied rewrites99.6%

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
  8. Final simplification99.6%

    \[\leadsto \frac{\sin b \cdot r}{\mathsf{fma}\left(\cos a, \cos b, \left(-\sin b\right) \cdot \sin a\right)} \]
  9. Add Preprocessing

Alternative 2: 52.8% accurate, 0.6× speedup?

\[\begin{array}{l} \\ \begin{array}{l} t_0 := \cos \left(a + b\right)\\ \mathbf{if}\;\frac{\sin b}{t\_0} \leq -0.05:\\ \;\;\;\;\frac{\sin b \cdot r}{1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{\mathsf{fma}\left(b \cdot b, 0.16666666666666666, 1\right)}{b}}}{t\_0} \cdot r\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (let* ((t_0 (cos (+ a b))))
   (if (<= (/ (sin b) t_0) -0.05)
     (/ (* (sin b) r) 1.0)
     (* (/ (/ 1.0 (/ (fma (* b b) 0.16666666666666666 1.0) b)) t_0) r))))
double code(double r, double a, double b) {
	double t_0 = cos((a + b));
	double tmp;
	if ((sin(b) / t_0) <= -0.05) {
		tmp = (sin(b) * r) / 1.0;
	} else {
		tmp = ((1.0 / (fma((b * b), 0.16666666666666666, 1.0) / b)) / t_0) * r;
	}
	return tmp;
}
function code(r, a, b)
	t_0 = cos(Float64(a + b))
	tmp = 0.0
	if (Float64(sin(b) / t_0) <= -0.05)
		tmp = Float64(Float64(sin(b) * r) / 1.0);
	else
		tmp = Float64(Float64(Float64(1.0 / Float64(fma(Float64(b * b), 0.16666666666666666, 1.0) / b)) / t_0) * r);
	end
	return tmp
end
code[r_, a_, b_] := Block[{t$95$0 = N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]}, If[LessEqual[N[(N[Sin[b], $MachinePrecision] / t$95$0), $MachinePrecision], -0.05], N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / 1.0), $MachinePrecision], N[(N[(N[(1.0 / N[(N[(N[(b * b), $MachinePrecision] * 0.16666666666666666 + 1.0), $MachinePrecision] / b), $MachinePrecision]), $MachinePrecision] / t$95$0), $MachinePrecision] * r), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
t_0 := \cos \left(a + b\right)\\
\mathbf{if}\;\frac{\sin b}{t\_0} \leq -0.05:\\
\;\;\;\;\frac{\sin b \cdot r}{1}\\

\mathbf{else}:\\
\;\;\;\;\frac{\frac{1}{\frac{\mathsf{fma}\left(b \cdot b, 0.16666666666666666, 1\right)}{b}}}{t\_0} \cdot r\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b))) < -0.050000000000000003

    1. Initial program 48.3%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Add Preprocessing
    3. Step-by-step derivation
      1. lift-cos.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
      2. lift-+.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
      3. cos-sumN/A

        \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
      4. sub-negN/A

        \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
      5. *-commutativeN/A

        \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
      6. lower-fma.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
      7. lower-cos.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
      8. lower-cos.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
      9. lift-sin.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
      10. *-commutativeN/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
      11. distribute-lft-neg-inN/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
      12. lower-*.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
      13. lower-neg.f64N/A

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
      14. lower-sin.f6499.2

        \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
    4. Applied rewrites99.2%

      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
    5. Taylor expanded in a around inf

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
    6. Step-by-step derivation
      1. lower-/.f64N/A

        \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
      2. lower-*.f64N/A

        \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
      3. lower-sin.f64N/A

        \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
      4. +-commutativeN/A

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
      5. lower-fma.f64N/A

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
      6. lower-cos.f64N/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
      7. lower-cos.f64N/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
      8. mul-1-negN/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
      9. distribute-rgt-neg-inN/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
      10. mul-1-negN/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
      11. lower-*.f64N/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
      12. lower-sin.f64N/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
      13. mul-1-negN/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
      14. lower-neg.f64N/A

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
      15. lower-sin.f6499.3

        \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
    7. Applied rewrites99.3%

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
    8. Taylor expanded in a around 0

      \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
    9. Step-by-step derivation
      1. Applied rewrites47.9%

        \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
      2. Taylor expanded in b around 0

        \[\leadsto \frac{r \cdot \sin b}{1} \]
      3. Step-by-step derivation
        1. Applied rewrites13.5%

          \[\leadsto \frac{r \cdot \sin b}{1} \]

        if -0.050000000000000003 < (/.f64 (sin.f64 b) (cos.f64 (+.f64 a b)))

        1. Initial program 85.4%

          \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
        2. Add Preprocessing
        3. Taylor expanded in b around 0

          \[\leadsto r \cdot \frac{\color{blue}{b \cdot \left(1 + \frac{-1}{6} \cdot {b}^{2}\right)}}{\cos \left(a + b\right)} \]
        4. Step-by-step derivation
          1. +-commutativeN/A

            \[\leadsto r \cdot \frac{b \cdot \color{blue}{\left(\frac{-1}{6} \cdot {b}^{2} + 1\right)}}{\cos \left(a + b\right)} \]
          2. distribute-lft-inN/A

            \[\leadsto r \cdot \frac{\color{blue}{b \cdot \left(\frac{-1}{6} \cdot {b}^{2}\right) + b \cdot 1}}{\cos \left(a + b\right)} \]
          3. *-commutativeN/A

            \[\leadsto r \cdot \frac{b \cdot \color{blue}{\left({b}^{2} \cdot \frac{-1}{6}\right)} + b \cdot 1}{\cos \left(a + b\right)} \]
          4. associate-*r*N/A

            \[\leadsto r \cdot \frac{\color{blue}{\left(b \cdot {b}^{2}\right) \cdot \frac{-1}{6}} + b \cdot 1}{\cos \left(a + b\right)} \]
          5. *-rgt-identityN/A

            \[\leadsto r \cdot \frac{\left(b \cdot {b}^{2}\right) \cdot \frac{-1}{6} + \color{blue}{b}}{\cos \left(a + b\right)} \]
          6. lower-fma.f64N/A

            \[\leadsto r \cdot \frac{\color{blue}{\mathsf{fma}\left(b \cdot {b}^{2}, \frac{-1}{6}, b\right)}}{\cos \left(a + b\right)} \]
          7. unpow2N/A

            \[\leadsto r \cdot \frac{\mathsf{fma}\left(b \cdot \color{blue}{\left(b \cdot b\right)}, \frac{-1}{6}, b\right)}{\cos \left(a + b\right)} \]
          8. cube-unmultN/A

            \[\leadsto r \cdot \frac{\mathsf{fma}\left(\color{blue}{{b}^{3}}, \frac{-1}{6}, b\right)}{\cos \left(a + b\right)} \]
          9. lower-pow.f6469.8

            \[\leadsto r \cdot \frac{\mathsf{fma}\left(\color{blue}{{b}^{3}}, -0.16666666666666666, b\right)}{\cos \left(a + b\right)} \]
        5. Applied rewrites69.8%

          \[\leadsto r \cdot \frac{\color{blue}{\mathsf{fma}\left({b}^{3}, -0.16666666666666666, b\right)}}{\cos \left(a + b\right)} \]
        6. Step-by-step derivation
          1. Applied rewrites69.7%

            \[\leadsto r \cdot \frac{\frac{1}{\color{blue}{\frac{1}{\mathsf{fma}\left(-0.16666666666666666, {b}^{3}, b\right)}}}}{\cos \left(a + b\right)} \]
          2. Taylor expanded in b around 0

            \[\leadsto r \cdot \frac{\frac{1}{\frac{1 + \frac{1}{6} \cdot {b}^{2}}{\color{blue}{b}}}}{\cos \left(a + b\right)} \]
          3. Step-by-step derivation
            1. Applied rewrites70.2%

              \[\leadsto r \cdot \frac{\frac{1}{\frac{\mathsf{fma}\left(b \cdot b, 0.16666666666666666, 1\right)}{\color{blue}{b}}}}{\cos \left(a + b\right)} \]
          4. Recombined 2 regimes into one program.
          5. Final simplification56.2%

            \[\leadsto \begin{array}{l} \mathbf{if}\;\frac{\sin b}{\cos \left(a + b\right)} \leq -0.05:\\ \;\;\;\;\frac{\sin b \cdot r}{1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\frac{1}{\frac{\mathsf{fma}\left(b \cdot b, 0.16666666666666666, 1\right)}{b}}}{\cos \left(a + b\right)} \cdot r\\ \end{array} \]
          6. Add Preprocessing

          Alternative 3: 76.8% accurate, 1.0× speedup?

          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \sin b \cdot r\\ \mathbf{if}\;a \leq -0.000102:\\ \;\;\;\;\frac{t\_0}{\cos a}\\ \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\ \;\;\;\;\frac{t\_0}{\cos b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \end{array} \end{array} \]
          (FPCore (r a b)
           :precision binary64
           (let* ((t_0 (* (sin b) r)))
             (if (<= a -0.000102)
               (/ t_0 (cos a))
               (if (<= a 1.05e-5) (/ t_0 (cos b)) (* (/ (sin b) (cos a)) r)))))
          double code(double r, double a, double b) {
          	double t_0 = sin(b) * r;
          	double tmp;
          	if (a <= -0.000102) {
          		tmp = t_0 / cos(a);
          	} else if (a <= 1.05e-5) {
          		tmp = t_0 / cos(b);
          	} else {
          		tmp = (sin(b) / cos(a)) * r;
          	}
          	return tmp;
          }
          
          real(8) function code(r, a, b)
              real(8), intent (in) :: r
              real(8), intent (in) :: a
              real(8), intent (in) :: b
              real(8) :: t_0
              real(8) :: tmp
              t_0 = sin(b) * r
              if (a <= (-0.000102d0)) then
                  tmp = t_0 / cos(a)
              else if (a <= 1.05d-5) then
                  tmp = t_0 / cos(b)
              else
                  tmp = (sin(b) / cos(a)) * r
              end if
              code = tmp
          end function
          
          public static double code(double r, double a, double b) {
          	double t_0 = Math.sin(b) * r;
          	double tmp;
          	if (a <= -0.000102) {
          		tmp = t_0 / Math.cos(a);
          	} else if (a <= 1.05e-5) {
          		tmp = t_0 / Math.cos(b);
          	} else {
          		tmp = (Math.sin(b) / Math.cos(a)) * r;
          	}
          	return tmp;
          }
          
          def code(r, a, b):
          	t_0 = math.sin(b) * r
          	tmp = 0
          	if a <= -0.000102:
          		tmp = t_0 / math.cos(a)
          	elif a <= 1.05e-5:
          		tmp = t_0 / math.cos(b)
          	else:
          		tmp = (math.sin(b) / math.cos(a)) * r
          	return tmp
          
          function code(r, a, b)
          	t_0 = Float64(sin(b) * r)
          	tmp = 0.0
          	if (a <= -0.000102)
          		tmp = Float64(t_0 / cos(a));
          	elseif (a <= 1.05e-5)
          		tmp = Float64(t_0 / cos(b));
          	else
          		tmp = Float64(Float64(sin(b) / cos(a)) * r);
          	end
          	return tmp
          end
          
          function tmp_2 = code(r, a, b)
          	t_0 = sin(b) * r;
          	tmp = 0.0;
          	if (a <= -0.000102)
          		tmp = t_0 / cos(a);
          	elseif (a <= 1.05e-5)
          		tmp = t_0 / cos(b);
          	else
          		tmp = (sin(b) / cos(a)) * r;
          	end
          	tmp_2 = tmp;
          end
          
          code[r_, a_, b_] := Block[{t$95$0 = N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision]}, If[LessEqual[a, -0.000102], N[(t$95$0 / N[Cos[a], $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 1.05e-5], N[(t$95$0 / N[Cos[b], $MachinePrecision]), $MachinePrecision], N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]]]]
          
          \begin{array}{l}
          
          \\
          \begin{array}{l}
          t_0 := \sin b \cdot r\\
          \mathbf{if}\;a \leq -0.000102:\\
          \;\;\;\;\frac{t\_0}{\cos a}\\
          
          \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\
          \;\;\;\;\frac{t\_0}{\cos b}\\
          
          \mathbf{else}:\\
          \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\
          
          
          \end{array}
          \end{array}
          
          Derivation
          1. Split input into 3 regimes
          2. if a < -1.01999999999999999e-4

            1. Initial program 51.3%

              \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-cos.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
              2. lift-+.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
              3. cos-sumN/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
              4. sub-negN/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
              5. *-commutativeN/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
              6. lower-fma.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
              7. lower-cos.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
              8. lower-cos.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
              9. lift-sin.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
              10. *-commutativeN/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
              11. distribute-lft-neg-inN/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
              12. lower-*.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
              13. lower-neg.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
              14. lower-sin.f6499.3

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
            4. Applied rewrites99.3%

              \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
            5. Taylor expanded in b around 0

              \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
            6. Step-by-step derivation
              1. lower-cos.f6451.6

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
            7. Applied rewrites51.6%

              \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
            8. Step-by-step derivation
              1. lift-*.f64N/A

                \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos a}} \]
              2. lift-/.f64N/A

                \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos a}} \]
              3. associate-*r/N/A

                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos a}} \]
              4. lift-*.f64N/A

                \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{\cos a} \]
              5. lower-/.f6451.7

                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos a}} \]
              6. lift-*.f64N/A

                \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{\cos a} \]
              7. *-commutativeN/A

                \[\leadsto \frac{\color{blue}{\sin b \cdot r}}{\cos a} \]
              8. lower-*.f6451.7

                \[\leadsto \frac{\color{blue}{\sin b \cdot r}}{\cos a} \]
            9. Applied rewrites51.7%

              \[\leadsto \color{blue}{\frac{\sin b \cdot r}{\cos a}} \]

            if -1.01999999999999999e-4 < a < 1.04999999999999994e-5

            1. Initial program 99.3%

              \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
            2. Add Preprocessing
            3. Step-by-step derivation
              1. lift-cos.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
              2. lift-+.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
              3. cos-sumN/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
              4. sub-negN/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
              5. *-commutativeN/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
              6. lower-fma.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
              7. lower-cos.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
              8. lower-cos.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
              9. lift-sin.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
              10. *-commutativeN/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
              11. distribute-lft-neg-inN/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
              12. lower-*.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
              13. lower-neg.f64N/A

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
              14. lower-sin.f6499.7

                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
            4. Applied rewrites99.7%

              \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
            5. Taylor expanded in a around inf

              \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
            6. Step-by-step derivation
              1. lower-/.f64N/A

                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
              2. lower-*.f64N/A

                \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
              3. lower-sin.f64N/A

                \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
              4. +-commutativeN/A

                \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
              5. lower-fma.f64N/A

                \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
              6. lower-cos.f64N/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
              7. lower-cos.f64N/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
              8. mul-1-negN/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
              9. distribute-rgt-neg-inN/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
              10. mul-1-negN/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
              11. lower-*.f64N/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
              12. lower-sin.f64N/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
              13. mul-1-negN/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
              14. lower-neg.f64N/A

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
              15. lower-sin.f6499.7

                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
            7. Applied rewrites99.7%

              \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
            8. Taylor expanded in a around 0

              \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
            9. Step-by-step derivation
              1. Applied rewrites99.3%

                \[\leadsto \frac{r \cdot \sin b}{\cos b} \]

              if 1.04999999999999994e-5 < a

              1. Initial program 60.8%

                \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
              2. Add Preprocessing
              3. Taylor expanded in b around 0

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
              4. Step-by-step derivation
                1. lower-cos.f6460.8

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
              5. Applied rewrites60.8%

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
            10. Recombined 3 regimes into one program.
            11. Final simplification76.4%

              \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -0.000102:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos a}\\ \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \end{array} \]
            12. Add Preprocessing

            Alternative 4: 76.8% accurate, 1.0× speedup?

            \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;a \leq -0.000102:\\ \;\;\;\;\frac{r}{\cos a} \cdot \sin b\\ \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \end{array} \end{array} \]
            (FPCore (r a b)
             :precision binary64
             (if (<= a -0.000102)
               (* (/ r (cos a)) (sin b))
               (if (<= a 1.05e-5) (/ (* (sin b) r) (cos b)) (* (/ (sin b) (cos a)) r))))
            double code(double r, double a, double b) {
            	double tmp;
            	if (a <= -0.000102) {
            		tmp = (r / cos(a)) * sin(b);
            	} else if (a <= 1.05e-5) {
            		tmp = (sin(b) * r) / cos(b);
            	} else {
            		tmp = (sin(b) / cos(a)) * r;
            	}
            	return tmp;
            }
            
            real(8) function code(r, a, b)
                real(8), intent (in) :: r
                real(8), intent (in) :: a
                real(8), intent (in) :: b
                real(8) :: tmp
                if (a <= (-0.000102d0)) then
                    tmp = (r / cos(a)) * sin(b)
                else if (a <= 1.05d-5) then
                    tmp = (sin(b) * r) / cos(b)
                else
                    tmp = (sin(b) / cos(a)) * r
                end if
                code = tmp
            end function
            
            public static double code(double r, double a, double b) {
            	double tmp;
            	if (a <= -0.000102) {
            		tmp = (r / Math.cos(a)) * Math.sin(b);
            	} else if (a <= 1.05e-5) {
            		tmp = (Math.sin(b) * r) / Math.cos(b);
            	} else {
            		tmp = (Math.sin(b) / Math.cos(a)) * r;
            	}
            	return tmp;
            }
            
            def code(r, a, b):
            	tmp = 0
            	if a <= -0.000102:
            		tmp = (r / math.cos(a)) * math.sin(b)
            	elif a <= 1.05e-5:
            		tmp = (math.sin(b) * r) / math.cos(b)
            	else:
            		tmp = (math.sin(b) / math.cos(a)) * r
            	return tmp
            
            function code(r, a, b)
            	tmp = 0.0
            	if (a <= -0.000102)
            		tmp = Float64(Float64(r / cos(a)) * sin(b));
            	elseif (a <= 1.05e-5)
            		tmp = Float64(Float64(sin(b) * r) / cos(b));
            	else
            		tmp = Float64(Float64(sin(b) / cos(a)) * r);
            	end
            	return tmp
            end
            
            function tmp_2 = code(r, a, b)
            	tmp = 0.0;
            	if (a <= -0.000102)
            		tmp = (r / cos(a)) * sin(b);
            	elseif (a <= 1.05e-5)
            		tmp = (sin(b) * r) / cos(b);
            	else
            		tmp = (sin(b) / cos(a)) * r;
            	end
            	tmp_2 = tmp;
            end
            
            code[r_, a_, b_] := If[LessEqual[a, -0.000102], N[(N[(r / N[Cos[a], $MachinePrecision]), $MachinePrecision] * N[Sin[b], $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 1.05e-5], N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / N[Cos[b], $MachinePrecision]), $MachinePrecision], N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]]]
            
            \begin{array}{l}
            
            \\
            \begin{array}{l}
            \mathbf{if}\;a \leq -0.000102:\\
            \;\;\;\;\frac{r}{\cos a} \cdot \sin b\\
            
            \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\
            \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\
            
            \mathbf{else}:\\
            \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\
            
            
            \end{array}
            \end{array}
            
            Derivation
            1. Split input into 3 regimes
            2. if a < -1.01999999999999999e-4

              1. Initial program 51.3%

                \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift-cos.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                2. lift-+.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                3. cos-sumN/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                4. sub-negN/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                5. *-commutativeN/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                6. lower-fma.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                7. lower-cos.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                8. lower-cos.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                9. lift-sin.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                10. *-commutativeN/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                11. distribute-lft-neg-inN/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                12. lower-*.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                13. lower-neg.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                14. lower-sin.f6499.3

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
              4. Applied rewrites99.3%

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
              5. Taylor expanded in b around 0

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
              6. Step-by-step derivation
                1. lower-cos.f6451.6

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
              7. Applied rewrites51.6%

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
              8. Step-by-step derivation
                1. lift-*.f64N/A

                  \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos a}} \]
                2. lift-/.f64N/A

                  \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos a}} \]
                3. associate-*r/N/A

                  \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos a}} \]
                4. *-commutativeN/A

                  \[\leadsto \frac{\color{blue}{\sin b \cdot r}}{\cos a} \]
                5. associate-/l*N/A

                  \[\leadsto \color{blue}{\sin b \cdot \frac{r}{\cos a}} \]
                6. lower-*.f64N/A

                  \[\leadsto \color{blue}{\sin b \cdot \frac{r}{\cos a}} \]
                7. lower-/.f6451.6

                  \[\leadsto \sin b \cdot \color{blue}{\frac{r}{\cos a}} \]
              9. Applied rewrites51.6%

                \[\leadsto \color{blue}{\sin b \cdot \frac{r}{\cos a}} \]

              if -1.01999999999999999e-4 < a < 1.04999999999999994e-5

              1. Initial program 99.3%

                \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
              2. Add Preprocessing
              3. Step-by-step derivation
                1. lift-cos.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                2. lift-+.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                3. cos-sumN/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                4. sub-negN/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                5. *-commutativeN/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                6. lower-fma.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                7. lower-cos.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                8. lower-cos.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                9. lift-sin.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                10. *-commutativeN/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                11. distribute-lft-neg-inN/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                12. lower-*.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                13. lower-neg.f64N/A

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                14. lower-sin.f6499.7

                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
              4. Applied rewrites99.7%

                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
              5. Taylor expanded in a around inf

                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
              6. Step-by-step derivation
                1. lower-/.f64N/A

                  \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                2. lower-*.f64N/A

                  \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                3. lower-sin.f64N/A

                  \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                4. +-commutativeN/A

                  \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                5. lower-fma.f64N/A

                  \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                6. lower-cos.f64N/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                7. lower-cos.f64N/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                8. mul-1-negN/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                9. distribute-rgt-neg-inN/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                10. mul-1-negN/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                11. lower-*.f64N/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                12. lower-sin.f64N/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                13. mul-1-negN/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                14. lower-neg.f64N/A

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                15. lower-sin.f6499.7

                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
              7. Applied rewrites99.7%

                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
              8. Taylor expanded in a around 0

                \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
              9. Step-by-step derivation
                1. Applied rewrites99.3%

                  \[\leadsto \frac{r \cdot \sin b}{\cos b} \]

                if 1.04999999999999994e-5 < a

                1. Initial program 60.8%

                  \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                2. Add Preprocessing
                3. Taylor expanded in b around 0

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
                4. Step-by-step derivation
                  1. lower-cos.f6460.8

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
                5. Applied rewrites60.8%

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
              10. Recombined 3 regimes into one program.
              11. Final simplification76.4%

                \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -0.000102:\\ \;\;\;\;\frac{r}{\cos a} \cdot \sin b\\ \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \end{array} \]
              12. Add Preprocessing

              Alternative 5: 76.8% accurate, 1.0× speedup?

              \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{\sin b}{\cos a} \cdot r\\ \mathbf{if}\;a \leq -0.000102:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
              (FPCore (r a b)
               :precision binary64
               (let* ((t_0 (* (/ (sin b) (cos a)) r)))
                 (if (<= a -0.000102)
                   t_0
                   (if (<= a 1.05e-5) (/ (* (sin b) r) (cos b)) t_0))))
              double code(double r, double a, double b) {
              	double t_0 = (sin(b) / cos(a)) * r;
              	double tmp;
              	if (a <= -0.000102) {
              		tmp = t_0;
              	} else if (a <= 1.05e-5) {
              		tmp = (sin(b) * r) / cos(b);
              	} else {
              		tmp = t_0;
              	}
              	return tmp;
              }
              
              real(8) function code(r, a, b)
                  real(8), intent (in) :: r
                  real(8), intent (in) :: a
                  real(8), intent (in) :: b
                  real(8) :: t_0
                  real(8) :: tmp
                  t_0 = (sin(b) / cos(a)) * r
                  if (a <= (-0.000102d0)) then
                      tmp = t_0
                  else if (a <= 1.05d-5) then
                      tmp = (sin(b) * r) / cos(b)
                  else
                      tmp = t_0
                  end if
                  code = tmp
              end function
              
              public static double code(double r, double a, double b) {
              	double t_0 = (Math.sin(b) / Math.cos(a)) * r;
              	double tmp;
              	if (a <= -0.000102) {
              		tmp = t_0;
              	} else if (a <= 1.05e-5) {
              		tmp = (Math.sin(b) * r) / Math.cos(b);
              	} else {
              		tmp = t_0;
              	}
              	return tmp;
              }
              
              def code(r, a, b):
              	t_0 = (math.sin(b) / math.cos(a)) * r
              	tmp = 0
              	if a <= -0.000102:
              		tmp = t_0
              	elif a <= 1.05e-5:
              		tmp = (math.sin(b) * r) / math.cos(b)
              	else:
              		tmp = t_0
              	return tmp
              
              function code(r, a, b)
              	t_0 = Float64(Float64(sin(b) / cos(a)) * r)
              	tmp = 0.0
              	if (a <= -0.000102)
              		tmp = t_0;
              	elseif (a <= 1.05e-5)
              		tmp = Float64(Float64(sin(b) * r) / cos(b));
              	else
              		tmp = t_0;
              	end
              	return tmp
              end
              
              function tmp_2 = code(r, a, b)
              	t_0 = (sin(b) / cos(a)) * r;
              	tmp = 0.0;
              	if (a <= -0.000102)
              		tmp = t_0;
              	elseif (a <= 1.05e-5)
              		tmp = (sin(b) * r) / cos(b);
              	else
              		tmp = t_0;
              	end
              	tmp_2 = tmp;
              end
              
              code[r_, a_, b_] := Block[{t$95$0 = N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]}, If[LessEqual[a, -0.000102], t$95$0, If[LessEqual[a, 1.05e-5], N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / N[Cos[b], $MachinePrecision]), $MachinePrecision], t$95$0]]]
              
              \begin{array}{l}
              
              \\
              \begin{array}{l}
              t_0 := \frac{\sin b}{\cos a} \cdot r\\
              \mathbf{if}\;a \leq -0.000102:\\
              \;\;\;\;t\_0\\
              
              \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\
              \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\
              
              \mathbf{else}:\\
              \;\;\;\;t\_0\\
              
              
              \end{array}
              \end{array}
              
              Derivation
              1. Split input into 2 regimes
              2. if a < -1.01999999999999999e-4 or 1.04999999999999994e-5 < a

                1. Initial program 56.0%

                  \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                2. Add Preprocessing
                3. Taylor expanded in b around 0

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
                4. Step-by-step derivation
                  1. lower-cos.f6456.2

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]
                5. Applied rewrites56.2%

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a}} \]

                if -1.01999999999999999e-4 < a < 1.04999999999999994e-5

                1. Initial program 99.3%

                  \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                2. Add Preprocessing
                3. Step-by-step derivation
                  1. lift-cos.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                  2. lift-+.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                  3. cos-sumN/A

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                  4. sub-negN/A

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                  5. *-commutativeN/A

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                  6. lower-fma.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                  7. lower-cos.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                  8. lower-cos.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                  9. lift-sin.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                  10. *-commutativeN/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                  11. distribute-lft-neg-inN/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                  12. lower-*.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                  13. lower-neg.f64N/A

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                  14. lower-sin.f6499.7

                    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
                4. Applied rewrites99.7%

                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
                5. Taylor expanded in a around inf

                  \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                6. Step-by-step derivation
                  1. lower-/.f64N/A

                    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                  2. lower-*.f64N/A

                    \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                  3. lower-sin.f64N/A

                    \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                  4. +-commutativeN/A

                    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                  5. lower-fma.f64N/A

                    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                  6. lower-cos.f64N/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                  7. lower-cos.f64N/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                  8. mul-1-negN/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                  9. distribute-rgt-neg-inN/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                  10. mul-1-negN/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                  11. lower-*.f64N/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                  12. lower-sin.f64N/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                  13. mul-1-negN/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                  14. lower-neg.f64N/A

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                  15. lower-sin.f6499.7

                    \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
                7. Applied rewrites99.7%

                  \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
                8. Taylor expanded in a around 0

                  \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                9. Step-by-step derivation
                  1. Applied rewrites99.3%

                    \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                10. Recombined 2 regimes into one program.
                11. Final simplification76.4%

                  \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -0.000102:\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \mathbf{elif}\;a \leq 1.05 \cdot 10^{-5}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \end{array} \]
                12. Add Preprocessing

                Alternative 6: 76.7% accurate, 1.0× speedup?

                \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{\sin b \cdot r}{\cos b}\\ \mathbf{if}\;b \leq -3.2 \cdot 10^{-5}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;b \leq 3 \cdot 10^{-7}:\\ \;\;\;\;\frac{r}{\cos a} \cdot b\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                (FPCore (r a b)
                 :precision binary64
                 (let* ((t_0 (/ (* (sin b) r) (cos b))))
                   (if (<= b -3.2e-5) t_0 (if (<= b 3e-7) (* (/ r (cos a)) b) t_0))))
                double code(double r, double a, double b) {
                	double t_0 = (sin(b) * r) / cos(b);
                	double tmp;
                	if (b <= -3.2e-5) {
                		tmp = t_0;
                	} else if (b <= 3e-7) {
                		tmp = (r / cos(a)) * b;
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                real(8) function code(r, a, b)
                    real(8), intent (in) :: r
                    real(8), intent (in) :: a
                    real(8), intent (in) :: b
                    real(8) :: t_0
                    real(8) :: tmp
                    t_0 = (sin(b) * r) / cos(b)
                    if (b <= (-3.2d-5)) then
                        tmp = t_0
                    else if (b <= 3d-7) then
                        tmp = (r / cos(a)) * b
                    else
                        tmp = t_0
                    end if
                    code = tmp
                end function
                
                public static double code(double r, double a, double b) {
                	double t_0 = (Math.sin(b) * r) / Math.cos(b);
                	double tmp;
                	if (b <= -3.2e-5) {
                		tmp = t_0;
                	} else if (b <= 3e-7) {
                		tmp = (r / Math.cos(a)) * b;
                	} else {
                		tmp = t_0;
                	}
                	return tmp;
                }
                
                def code(r, a, b):
                	t_0 = (math.sin(b) * r) / math.cos(b)
                	tmp = 0
                	if b <= -3.2e-5:
                		tmp = t_0
                	elif b <= 3e-7:
                		tmp = (r / math.cos(a)) * b
                	else:
                		tmp = t_0
                	return tmp
                
                function code(r, a, b)
                	t_0 = Float64(Float64(sin(b) * r) / cos(b))
                	tmp = 0.0
                	if (b <= -3.2e-5)
                		tmp = t_0;
                	elseif (b <= 3e-7)
                		tmp = Float64(Float64(r / cos(a)) * b);
                	else
                		tmp = t_0;
                	end
                	return tmp
                end
                
                function tmp_2 = code(r, a, b)
                	t_0 = (sin(b) * r) / cos(b);
                	tmp = 0.0;
                	if (b <= -3.2e-5)
                		tmp = t_0;
                	elseif (b <= 3e-7)
                		tmp = (r / cos(a)) * b;
                	else
                		tmp = t_0;
                	end
                	tmp_2 = tmp;
                end
                
                code[r_, a_, b_] := Block[{t$95$0 = N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / N[Cos[b], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[b, -3.2e-5], t$95$0, If[LessEqual[b, 3e-7], N[(N[(r / N[Cos[a], $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision], t$95$0]]]
                
                \begin{array}{l}
                
                \\
                \begin{array}{l}
                t_0 := \frac{\sin b \cdot r}{\cos b}\\
                \mathbf{if}\;b \leq -3.2 \cdot 10^{-5}:\\
                \;\;\;\;t\_0\\
                
                \mathbf{elif}\;b \leq 3 \cdot 10^{-7}:\\
                \;\;\;\;\frac{r}{\cos a} \cdot b\\
                
                \mathbf{else}:\\
                \;\;\;\;t\_0\\
                
                
                \end{array}
                \end{array}
                
                Derivation
                1. Split input into 2 regimes
                2. if b < -3.19999999999999986e-5 or 2.9999999999999999e-7 < b

                  1. Initial program 51.9%

                    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-cos.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                    2. lift-+.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                    3. cos-sumN/A

                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                    4. sub-negN/A

                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                    5. *-commutativeN/A

                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                    6. lower-fma.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                    7. lower-cos.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                    8. lower-cos.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                    9. lift-sin.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                    10. *-commutativeN/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                    11. distribute-lft-neg-inN/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                    12. lower-*.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                    13. lower-neg.f64N/A

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                    14. lower-sin.f6499.3

                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
                  4. Applied rewrites99.3%

                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
                  5. Taylor expanded in a around inf

                    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                  6. Step-by-step derivation
                    1. lower-/.f64N/A

                      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                    2. lower-*.f64N/A

                      \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                    3. lower-sin.f64N/A

                      \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                    4. +-commutativeN/A

                      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                    5. lower-fma.f64N/A

                      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                    6. lower-cos.f64N/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                    7. lower-cos.f64N/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                    8. mul-1-negN/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                    9. distribute-rgt-neg-inN/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                    10. mul-1-negN/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                    11. lower-*.f64N/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                    12. lower-sin.f64N/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                    13. mul-1-negN/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                    14. lower-neg.f64N/A

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                    15. lower-sin.f6499.3

                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
                  7. Applied rewrites99.3%

                    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
                  8. Taylor expanded in a around 0

                    \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                  9. Step-by-step derivation
                    1. Applied rewrites51.7%

                      \[\leadsto \frac{r \cdot \sin b}{\cos b} \]

                    if -3.19999999999999986e-5 < b < 2.9999999999999999e-7

                    1. Initial program 99.2%

                      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                    2. Add Preprocessing
                    3. Step-by-step derivation
                      1. lift-/.f64N/A

                        \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos \left(a + b\right)}} \]
                      2. clear-numN/A

                        \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos \left(a + b\right)}{\sin b}}} \]
                      3. div-invN/A

                        \[\leadsto r \cdot \frac{1}{\color{blue}{\cos \left(a + b\right) \cdot \frac{1}{\sin b}}} \]
                      4. associate-/r*N/A

                        \[\leadsto r \cdot \color{blue}{\frac{\frac{1}{\cos \left(a + b\right)}}{\frac{1}{\sin b}}} \]
                      5. lower-/.f64N/A

                        \[\leadsto r \cdot \color{blue}{\frac{\frac{1}{\cos \left(a + b\right)}}{\frac{1}{\sin b}}} \]
                      6. inv-powN/A

                        \[\leadsto r \cdot \frac{\color{blue}{{\cos \left(a + b\right)}^{-1}}}{\frac{1}{\sin b}} \]
                      7. lower-pow.f64N/A

                        \[\leadsto r \cdot \frac{\color{blue}{{\cos \left(a + b\right)}^{-1}}}{\frac{1}{\sin b}} \]
                      8. inv-powN/A

                        \[\leadsto r \cdot \frac{{\cos \left(a + b\right)}^{-1}}{\color{blue}{{\sin b}^{-1}}} \]
                      9. lower-pow.f6499.1

                        \[\leadsto r \cdot \frac{{\cos \left(a + b\right)}^{-1}}{\color{blue}{{\sin b}^{-1}}} \]
                    4. Applied rewrites99.1%

                      \[\leadsto r \cdot \color{blue}{\frac{{\cos \left(a + b\right)}^{-1}}{{\sin b}^{-1}}} \]
                    5. Taylor expanded in b around 0

                      \[\leadsto \color{blue}{\frac{b \cdot r}{\cos a}} \]
                    6. Step-by-step derivation
                      1. *-commutativeN/A

                        \[\leadsto \frac{\color{blue}{r \cdot b}}{\cos a} \]
                      2. associate-*l/N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                      3. lower-*.f64N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                      4. lower-/.f64N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos a}} \cdot b \]
                      5. lower-cos.f6499.2

                        \[\leadsto \frac{r}{\color{blue}{\cos a}} \cdot b \]
                    7. Applied rewrites99.2%

                      \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                  10. Recombined 2 regimes into one program.
                  11. Final simplification76.2%

                    \[\leadsto \begin{array}{l} \mathbf{if}\;b \leq -3.2 \cdot 10^{-5}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \mathbf{elif}\;b \leq 3 \cdot 10^{-7}:\\ \;\;\;\;\frac{r}{\cos a} \cdot b\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b \cdot r}{\cos b}\\ \end{array} \]
                  12. Add Preprocessing

                  Alternative 7: 76.7% accurate, 1.0× speedup?

                  \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{r}{\cos b} \cdot \sin b\\ \mathbf{if}\;b \leq -3.2 \cdot 10^{-5}:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;b \leq 3 \cdot 10^{-7}:\\ \;\;\;\;\frac{r}{\cos a} \cdot b\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                  (FPCore (r a b)
                   :precision binary64
                   (let* ((t_0 (* (/ r (cos b)) (sin b))))
                     (if (<= b -3.2e-5) t_0 (if (<= b 3e-7) (* (/ r (cos a)) b) t_0))))
                  double code(double r, double a, double b) {
                  	double t_0 = (r / cos(b)) * sin(b);
                  	double tmp;
                  	if (b <= -3.2e-5) {
                  		tmp = t_0;
                  	} else if (b <= 3e-7) {
                  		tmp = (r / cos(a)) * b;
                  	} else {
                  		tmp = t_0;
                  	}
                  	return tmp;
                  }
                  
                  real(8) function code(r, a, b)
                      real(8), intent (in) :: r
                      real(8), intent (in) :: a
                      real(8), intent (in) :: b
                      real(8) :: t_0
                      real(8) :: tmp
                      t_0 = (r / cos(b)) * sin(b)
                      if (b <= (-3.2d-5)) then
                          tmp = t_0
                      else if (b <= 3d-7) then
                          tmp = (r / cos(a)) * b
                      else
                          tmp = t_0
                      end if
                      code = tmp
                  end function
                  
                  public static double code(double r, double a, double b) {
                  	double t_0 = (r / Math.cos(b)) * Math.sin(b);
                  	double tmp;
                  	if (b <= -3.2e-5) {
                  		tmp = t_0;
                  	} else if (b <= 3e-7) {
                  		tmp = (r / Math.cos(a)) * b;
                  	} else {
                  		tmp = t_0;
                  	}
                  	return tmp;
                  }
                  
                  def code(r, a, b):
                  	t_0 = (r / math.cos(b)) * math.sin(b)
                  	tmp = 0
                  	if b <= -3.2e-5:
                  		tmp = t_0
                  	elif b <= 3e-7:
                  		tmp = (r / math.cos(a)) * b
                  	else:
                  		tmp = t_0
                  	return tmp
                  
                  function code(r, a, b)
                  	t_0 = Float64(Float64(r / cos(b)) * sin(b))
                  	tmp = 0.0
                  	if (b <= -3.2e-5)
                  		tmp = t_0;
                  	elseif (b <= 3e-7)
                  		tmp = Float64(Float64(r / cos(a)) * b);
                  	else
                  		tmp = t_0;
                  	end
                  	return tmp
                  end
                  
                  function tmp_2 = code(r, a, b)
                  	t_0 = (r / cos(b)) * sin(b);
                  	tmp = 0.0;
                  	if (b <= -3.2e-5)
                  		tmp = t_0;
                  	elseif (b <= 3e-7)
                  		tmp = (r / cos(a)) * b;
                  	else
                  		tmp = t_0;
                  	end
                  	tmp_2 = tmp;
                  end
                  
                  code[r_, a_, b_] := Block[{t$95$0 = N[(N[(r / N[Cos[b], $MachinePrecision]), $MachinePrecision] * N[Sin[b], $MachinePrecision]), $MachinePrecision]}, If[LessEqual[b, -3.2e-5], t$95$0, If[LessEqual[b, 3e-7], N[(N[(r / N[Cos[a], $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision], t$95$0]]]
                  
                  \begin{array}{l}
                  
                  \\
                  \begin{array}{l}
                  t_0 := \frac{r}{\cos b} \cdot \sin b\\
                  \mathbf{if}\;b \leq -3.2 \cdot 10^{-5}:\\
                  \;\;\;\;t\_0\\
                  
                  \mathbf{elif}\;b \leq 3 \cdot 10^{-7}:\\
                  \;\;\;\;\frac{r}{\cos a} \cdot b\\
                  
                  \mathbf{else}:\\
                  \;\;\;\;t\_0\\
                  
                  
                  \end{array}
                  \end{array}
                  
                  Derivation
                  1. Split input into 2 regimes
                  2. if b < -3.19999999999999986e-5 or 2.9999999999999999e-7 < b

                    1. Initial program 51.9%

                      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                    2. Add Preprocessing
                    3. Taylor expanded in a around 0

                      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos b}} \]
                    4. Step-by-step derivation
                      1. *-commutativeN/A

                        \[\leadsto \frac{\color{blue}{\sin b \cdot r}}{\cos b} \]
                      2. associate-/l*N/A

                        \[\leadsto \color{blue}{\sin b \cdot \frac{r}{\cos b}} \]
                      3. *-commutativeN/A

                        \[\leadsto \color{blue}{\frac{r}{\cos b} \cdot \sin b} \]
                      4. lower-*.f64N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos b} \cdot \sin b} \]
                      5. lower-/.f64N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos b}} \cdot \sin b \]
                      6. lower-cos.f64N/A

                        \[\leadsto \frac{r}{\color{blue}{\cos b}} \cdot \sin b \]
                      7. lower-sin.f6451.6

                        \[\leadsto \frac{r}{\cos b} \cdot \color{blue}{\sin b} \]
                    5. Applied rewrites51.6%

                      \[\leadsto \color{blue}{\frac{r}{\cos b} \cdot \sin b} \]

                    if -3.19999999999999986e-5 < b < 2.9999999999999999e-7

                    1. Initial program 99.2%

                      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                    2. Add Preprocessing
                    3. Step-by-step derivation
                      1. lift-/.f64N/A

                        \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos \left(a + b\right)}} \]
                      2. clear-numN/A

                        \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos \left(a + b\right)}{\sin b}}} \]
                      3. div-invN/A

                        \[\leadsto r \cdot \frac{1}{\color{blue}{\cos \left(a + b\right) \cdot \frac{1}{\sin b}}} \]
                      4. associate-/r*N/A

                        \[\leadsto r \cdot \color{blue}{\frac{\frac{1}{\cos \left(a + b\right)}}{\frac{1}{\sin b}}} \]
                      5. lower-/.f64N/A

                        \[\leadsto r \cdot \color{blue}{\frac{\frac{1}{\cos \left(a + b\right)}}{\frac{1}{\sin b}}} \]
                      6. inv-powN/A

                        \[\leadsto r \cdot \frac{\color{blue}{{\cos \left(a + b\right)}^{-1}}}{\frac{1}{\sin b}} \]
                      7. lower-pow.f64N/A

                        \[\leadsto r \cdot \frac{\color{blue}{{\cos \left(a + b\right)}^{-1}}}{\frac{1}{\sin b}} \]
                      8. inv-powN/A

                        \[\leadsto r \cdot \frac{{\cos \left(a + b\right)}^{-1}}{\color{blue}{{\sin b}^{-1}}} \]
                      9. lower-pow.f6499.1

                        \[\leadsto r \cdot \frac{{\cos \left(a + b\right)}^{-1}}{\color{blue}{{\sin b}^{-1}}} \]
                    4. Applied rewrites99.1%

                      \[\leadsto r \cdot \color{blue}{\frac{{\cos \left(a + b\right)}^{-1}}{{\sin b}^{-1}}} \]
                    5. Taylor expanded in b around 0

                      \[\leadsto \color{blue}{\frac{b \cdot r}{\cos a}} \]
                    6. Step-by-step derivation
                      1. *-commutativeN/A

                        \[\leadsto \frac{\color{blue}{r \cdot b}}{\cos a} \]
                      2. associate-*l/N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                      3. lower-*.f64N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                      4. lower-/.f64N/A

                        \[\leadsto \color{blue}{\frac{r}{\cos a}} \cdot b \]
                      5. lower-cos.f6499.2

                        \[\leadsto \frac{r}{\color{blue}{\cos a}} \cdot b \]
                    7. Applied rewrites99.2%

                      \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                  3. Recombined 2 regimes into one program.
                  4. Add Preprocessing

                  Alternative 8: 77.0% accurate, 1.0× speedup?

                  \[\begin{array}{l} \\ \frac{\sin b \cdot r}{\cos \left(a + b\right)} \end{array} \]
                  (FPCore (r a b) :precision binary64 (/ (* (sin b) r) (cos (+ a b))))
                  double code(double r, double a, double b) {
                  	return (sin(b) * r) / cos((a + b));
                  }
                  
                  real(8) function code(r, a, b)
                      real(8), intent (in) :: r
                      real(8), intent (in) :: a
                      real(8), intent (in) :: b
                      code = (sin(b) * r) / cos((a + b))
                  end function
                  
                  public static double code(double r, double a, double b) {
                  	return (Math.sin(b) * r) / Math.cos((a + b));
                  }
                  
                  def code(r, a, b):
                  	return (math.sin(b) * r) / math.cos((a + b))
                  
                  function code(r, a, b)
                  	return Float64(Float64(sin(b) * r) / cos(Float64(a + b)))
                  end
                  
                  function tmp = code(r, a, b)
                  	tmp = (sin(b) * r) / cos((a + b));
                  end
                  
                  code[r_, a_, b_] := N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
                  
                  \begin{array}{l}
                  
                  \\
                  \frac{\sin b \cdot r}{\cos \left(a + b\right)}
                  \end{array}
                  
                  Derivation
                  1. Initial program 76.3%

                    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                  2. Add Preprocessing
                  3. Step-by-step derivation
                    1. lift-*.f64N/A

                      \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(a + b\right)}} \]
                    2. lift-/.f64N/A

                      \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos \left(a + b\right)}} \]
                    3. associate-*r/N/A

                      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(a + b\right)}} \]
                    4. lower-/.f64N/A

                      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(a + b\right)}} \]
                    5. *-commutativeN/A

                      \[\leadsto \frac{\color{blue}{\sin b \cdot r}}{\cos \left(a + b\right)} \]
                    6. lower-*.f6476.3

                      \[\leadsto \frac{\color{blue}{\sin b \cdot r}}{\cos \left(a + b\right)} \]
                  4. Applied rewrites76.3%

                    \[\leadsto \color{blue}{\frac{\sin b \cdot r}{\cos \left(a + b\right)}} \]
                  5. Add Preprocessing

                  Alternative 9: 77.0% accurate, 1.0× speedup?

                  \[\begin{array}{l} \\ \frac{\sin b}{\cos \left(a + b\right)} \cdot r \end{array} \]
                  (FPCore (r a b) :precision binary64 (* (/ (sin b) (cos (+ a b))) r))
                  double code(double r, double a, double b) {
                  	return (sin(b) / cos((a + b))) * r;
                  }
                  
                  real(8) function code(r, a, b)
                      real(8), intent (in) :: r
                      real(8), intent (in) :: a
                      real(8), intent (in) :: b
                      code = (sin(b) / cos((a + b))) * r
                  end function
                  
                  public static double code(double r, double a, double b) {
                  	return (Math.sin(b) / Math.cos((a + b))) * r;
                  }
                  
                  def code(r, a, b):
                  	return (math.sin(b) / math.cos((a + b))) * r
                  
                  function code(r, a, b)
                  	return Float64(Float64(sin(b) / cos(Float64(a + b))) * r)
                  end
                  
                  function tmp = code(r, a, b)
                  	tmp = (sin(b) / cos((a + b))) * r;
                  end
                  
                  code[r_, a_, b_] := N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]
                  
                  \begin{array}{l}
                  
                  \\
                  \frac{\sin b}{\cos \left(a + b\right)} \cdot r
                  \end{array}
                  
                  Derivation
                  1. Initial program 76.3%

                    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                  2. Add Preprocessing
                  3. Taylor expanded in b around 0

                    \[\leadsto r \cdot \frac{\color{blue}{b \cdot \left(1 + \frac{-1}{6} \cdot {b}^{2}\right)}}{\cos \left(a + b\right)} \]
                  4. Step-by-step derivation
                    1. +-commutativeN/A

                      \[\leadsto r \cdot \frac{b \cdot \color{blue}{\left(\frac{-1}{6} \cdot {b}^{2} + 1\right)}}{\cos \left(a + b\right)} \]
                    2. distribute-lft-inN/A

                      \[\leadsto r \cdot \frac{\color{blue}{b \cdot \left(\frac{-1}{6} \cdot {b}^{2}\right) + b \cdot 1}}{\cos \left(a + b\right)} \]
                    3. *-commutativeN/A

                      \[\leadsto r \cdot \frac{b \cdot \color{blue}{\left({b}^{2} \cdot \frac{-1}{6}\right)} + b \cdot 1}{\cos \left(a + b\right)} \]
                    4. associate-*r*N/A

                      \[\leadsto r \cdot \frac{\color{blue}{\left(b \cdot {b}^{2}\right) \cdot \frac{-1}{6}} + b \cdot 1}{\cos \left(a + b\right)} \]
                    5. *-rgt-identityN/A

                      \[\leadsto r \cdot \frac{\left(b \cdot {b}^{2}\right) \cdot \frac{-1}{6} + \color{blue}{b}}{\cos \left(a + b\right)} \]
                    6. lower-fma.f64N/A

                      \[\leadsto r \cdot \frac{\color{blue}{\mathsf{fma}\left(b \cdot {b}^{2}, \frac{-1}{6}, b\right)}}{\cos \left(a + b\right)} \]
                    7. unpow2N/A

                      \[\leadsto r \cdot \frac{\mathsf{fma}\left(b \cdot \color{blue}{\left(b \cdot b\right)}, \frac{-1}{6}, b\right)}{\cos \left(a + b\right)} \]
                    8. cube-unmultN/A

                      \[\leadsto r \cdot \frac{\mathsf{fma}\left(\color{blue}{{b}^{3}}, \frac{-1}{6}, b\right)}{\cos \left(a + b\right)} \]
                    9. lower-pow.f6453.2

                      \[\leadsto r \cdot \frac{\mathsf{fma}\left(\color{blue}{{b}^{3}}, -0.16666666666666666, b\right)}{\cos \left(a + b\right)} \]
                  5. Applied rewrites53.2%

                    \[\leadsto r \cdot \frac{\color{blue}{\mathsf{fma}\left({b}^{3}, -0.16666666666666666, b\right)}}{\cos \left(a + b\right)} \]
                  6. Step-by-step derivation
                    1. Applied rewrites53.1%

                      \[\leadsto r \cdot \frac{\frac{1}{\color{blue}{\frac{1}{\mathsf{fma}\left(-0.16666666666666666, {b}^{3}, b\right)}}}}{\cos \left(a + b\right)} \]
                    2. Taylor expanded in b around inf

                      \[\leadsto r \cdot \frac{\color{blue}{\sin b}}{\cos \left(a + b\right)} \]
                    3. Step-by-step derivation
                      1. lower-sin.f6476.3

                        \[\leadsto r \cdot \frac{\color{blue}{\sin b}}{\cos \left(a + b\right)} \]
                    4. Applied rewrites76.3%

                      \[\leadsto r \cdot \frac{\color{blue}{\sin b}}{\cos \left(a + b\right)} \]
                    5. Final simplification76.3%

                      \[\leadsto \frac{\sin b}{\cos \left(a + b\right)} \cdot r \]
                    6. Add Preprocessing

                    Alternative 10: 54.7% accurate, 1.5× speedup?

                    \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{\sin b \cdot r}{1}\\ \mathbf{if}\;b \leq -2.8:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;b \leq 1.4 \cdot 10^{+33}:\\ \;\;\;\;\frac{\mathsf{fma}\left(-0.16666666666666666 \cdot \left(b \cdot b\right), b, b\right)}{\cos \left(a + b\right)} \cdot r\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                    (FPCore (r a b)
                     :precision binary64
                     (let* ((t_0 (/ (* (sin b) r) 1.0)))
                       (if (<= b -2.8)
                         t_0
                         (if (<= b 1.4e+33)
                           (* (/ (fma (* -0.16666666666666666 (* b b)) b b) (cos (+ a b))) r)
                           t_0))))
                    double code(double r, double a, double b) {
                    	double t_0 = (sin(b) * r) / 1.0;
                    	double tmp;
                    	if (b <= -2.8) {
                    		tmp = t_0;
                    	} else if (b <= 1.4e+33) {
                    		tmp = (fma((-0.16666666666666666 * (b * b)), b, b) / cos((a + b))) * r;
                    	} else {
                    		tmp = t_0;
                    	}
                    	return tmp;
                    }
                    
                    function code(r, a, b)
                    	t_0 = Float64(Float64(sin(b) * r) / 1.0)
                    	tmp = 0.0
                    	if (b <= -2.8)
                    		tmp = t_0;
                    	elseif (b <= 1.4e+33)
                    		tmp = Float64(Float64(fma(Float64(-0.16666666666666666 * Float64(b * b)), b, b) / cos(Float64(a + b))) * r);
                    	else
                    		tmp = t_0;
                    	end
                    	return tmp
                    end
                    
                    code[r_, a_, b_] := Block[{t$95$0 = N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / 1.0), $MachinePrecision]}, If[LessEqual[b, -2.8], t$95$0, If[LessEqual[b, 1.4e+33], N[(N[(N[(N[(-0.16666666666666666 * N[(b * b), $MachinePrecision]), $MachinePrecision] * b + b), $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision], t$95$0]]]
                    
                    \begin{array}{l}
                    
                    \\
                    \begin{array}{l}
                    t_0 := \frac{\sin b \cdot r}{1}\\
                    \mathbf{if}\;b \leq -2.8:\\
                    \;\;\;\;t\_0\\
                    
                    \mathbf{elif}\;b \leq 1.4 \cdot 10^{+33}:\\
                    \;\;\;\;\frac{\mathsf{fma}\left(-0.16666666666666666 \cdot \left(b \cdot b\right), b, b\right)}{\cos \left(a + b\right)} \cdot r\\
                    
                    \mathbf{else}:\\
                    \;\;\;\;t\_0\\
                    
                    
                    \end{array}
                    \end{array}
                    
                    Derivation
                    1. Split input into 2 regimes
                    2. if b < -2.7999999999999998 or 1.4e33 < b

                      1. Initial program 51.5%

                        \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                      2. Add Preprocessing
                      3. Step-by-step derivation
                        1. lift-cos.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                        2. lift-+.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                        3. cos-sumN/A

                          \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                        4. sub-negN/A

                          \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                        5. *-commutativeN/A

                          \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                        6. lower-fma.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                        7. lower-cos.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                        8. lower-cos.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                        9. lift-sin.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                        10. *-commutativeN/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                        11. distribute-lft-neg-inN/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                        12. lower-*.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                        13. lower-neg.f64N/A

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                        14. lower-sin.f6499.3

                          \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
                      4. Applied rewrites99.3%

                        \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
                      5. Taylor expanded in a around inf

                        \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                      6. Step-by-step derivation
                        1. lower-/.f64N/A

                          \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                        2. lower-*.f64N/A

                          \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                        3. lower-sin.f64N/A

                          \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                        4. +-commutativeN/A

                          \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                        5. lower-fma.f64N/A

                          \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                        6. lower-cos.f64N/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                        7. lower-cos.f64N/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                        8. mul-1-negN/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                        9. distribute-rgt-neg-inN/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                        10. mul-1-negN/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                        11. lower-*.f64N/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                        12. lower-sin.f64N/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                        13. mul-1-negN/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                        14. lower-neg.f64N/A

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                        15. lower-sin.f6499.3

                          \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
                      7. Applied rewrites99.3%

                        \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
                      8. Taylor expanded in a around 0

                        \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                      9. Step-by-step derivation
                        1. Applied rewrites51.1%

                          \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                        2. Taylor expanded in b around 0

                          \[\leadsto \frac{r \cdot \sin b}{1} \]
                        3. Step-by-step derivation
                          1. Applied rewrites12.3%

                            \[\leadsto \frac{r \cdot \sin b}{1} \]

                          if -2.7999999999999998 < b < 1.4e33

                          1. Initial program 98.5%

                            \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                          2. Add Preprocessing
                          3. Taylor expanded in b around 0

                            \[\leadsto r \cdot \frac{\color{blue}{b \cdot \left(1 + \frac{-1}{6} \cdot {b}^{2}\right)}}{\cos \left(a + b\right)} \]
                          4. Step-by-step derivation
                            1. +-commutativeN/A

                              \[\leadsto r \cdot \frac{b \cdot \color{blue}{\left(\frac{-1}{6} \cdot {b}^{2} + 1\right)}}{\cos \left(a + b\right)} \]
                            2. distribute-lft-inN/A

                              \[\leadsto r \cdot \frac{\color{blue}{b \cdot \left(\frac{-1}{6} \cdot {b}^{2}\right) + b \cdot 1}}{\cos \left(a + b\right)} \]
                            3. *-commutativeN/A

                              \[\leadsto r \cdot \frac{b \cdot \color{blue}{\left({b}^{2} \cdot \frac{-1}{6}\right)} + b \cdot 1}{\cos \left(a + b\right)} \]
                            4. associate-*r*N/A

                              \[\leadsto r \cdot \frac{\color{blue}{\left(b \cdot {b}^{2}\right) \cdot \frac{-1}{6}} + b \cdot 1}{\cos \left(a + b\right)} \]
                            5. *-rgt-identityN/A

                              \[\leadsto r \cdot \frac{\left(b \cdot {b}^{2}\right) \cdot \frac{-1}{6} + \color{blue}{b}}{\cos \left(a + b\right)} \]
                            6. lower-fma.f64N/A

                              \[\leadsto r \cdot \frac{\color{blue}{\mathsf{fma}\left(b \cdot {b}^{2}, \frac{-1}{6}, b\right)}}{\cos \left(a + b\right)} \]
                            7. unpow2N/A

                              \[\leadsto r \cdot \frac{\mathsf{fma}\left(b \cdot \color{blue}{\left(b \cdot b\right)}, \frac{-1}{6}, b\right)}{\cos \left(a + b\right)} \]
                            8. cube-unmultN/A

                              \[\leadsto r \cdot \frac{\mathsf{fma}\left(\color{blue}{{b}^{3}}, \frac{-1}{6}, b\right)}{\cos \left(a + b\right)} \]
                            9. lower-pow.f6498.5

                              \[\leadsto r \cdot \frac{\mathsf{fma}\left(\color{blue}{{b}^{3}}, -0.16666666666666666, b\right)}{\cos \left(a + b\right)} \]
                          5. Applied rewrites98.5%

                            \[\leadsto r \cdot \frac{\color{blue}{\mathsf{fma}\left({b}^{3}, -0.16666666666666666, b\right)}}{\cos \left(a + b\right)} \]
                          6. Step-by-step derivation
                            1. Applied rewrites98.5%

                              \[\leadsto r \cdot \frac{\mathsf{fma}\left(-0.16666666666666666 \cdot \left(b \cdot b\right), \color{blue}{b}, b\right)}{\cos \left(a + b\right)} \]
                          7. Recombined 2 regimes into one program.
                          8. Final simplification57.8%

                            \[\leadsto \begin{array}{l} \mathbf{if}\;b \leq -2.8:\\ \;\;\;\;\frac{\sin b \cdot r}{1}\\ \mathbf{elif}\;b \leq 1.4 \cdot 10^{+33}:\\ \;\;\;\;\frac{\mathsf{fma}\left(-0.16666666666666666 \cdot \left(b \cdot b\right), b, b\right)}{\cos \left(a + b\right)} \cdot r\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b \cdot r}{1}\\ \end{array} \]
                          9. Add Preprocessing

                          Alternative 11: 54.5% accurate, 1.7× speedup?

                          \[\begin{array}{l} \\ \begin{array}{l} t_0 := \frac{\sin b \cdot r}{1}\\ \mathbf{if}\;b \leq -4.5:\\ \;\;\;\;t\_0\\ \mathbf{elif}\;b \leq 3.2 \cdot 10^{+34}:\\ \;\;\;\;\frac{r}{\cos a} \cdot b\\ \mathbf{else}:\\ \;\;\;\;t\_0\\ \end{array} \end{array} \]
                          (FPCore (r a b)
                           :precision binary64
                           (let* ((t_0 (/ (* (sin b) r) 1.0)))
                             (if (<= b -4.5) t_0 (if (<= b 3.2e+34) (* (/ r (cos a)) b) t_0))))
                          double code(double r, double a, double b) {
                          	double t_0 = (sin(b) * r) / 1.0;
                          	double tmp;
                          	if (b <= -4.5) {
                          		tmp = t_0;
                          	} else if (b <= 3.2e+34) {
                          		tmp = (r / cos(a)) * b;
                          	} else {
                          		tmp = t_0;
                          	}
                          	return tmp;
                          }
                          
                          real(8) function code(r, a, b)
                              real(8), intent (in) :: r
                              real(8), intent (in) :: a
                              real(8), intent (in) :: b
                              real(8) :: t_0
                              real(8) :: tmp
                              t_0 = (sin(b) * r) / 1.0d0
                              if (b <= (-4.5d0)) then
                                  tmp = t_0
                              else if (b <= 3.2d+34) then
                                  tmp = (r / cos(a)) * b
                              else
                                  tmp = t_0
                              end if
                              code = tmp
                          end function
                          
                          public static double code(double r, double a, double b) {
                          	double t_0 = (Math.sin(b) * r) / 1.0;
                          	double tmp;
                          	if (b <= -4.5) {
                          		tmp = t_0;
                          	} else if (b <= 3.2e+34) {
                          		tmp = (r / Math.cos(a)) * b;
                          	} else {
                          		tmp = t_0;
                          	}
                          	return tmp;
                          }
                          
                          def code(r, a, b):
                          	t_0 = (math.sin(b) * r) / 1.0
                          	tmp = 0
                          	if b <= -4.5:
                          		tmp = t_0
                          	elif b <= 3.2e+34:
                          		tmp = (r / math.cos(a)) * b
                          	else:
                          		tmp = t_0
                          	return tmp
                          
                          function code(r, a, b)
                          	t_0 = Float64(Float64(sin(b) * r) / 1.0)
                          	tmp = 0.0
                          	if (b <= -4.5)
                          		tmp = t_0;
                          	elseif (b <= 3.2e+34)
                          		tmp = Float64(Float64(r / cos(a)) * b);
                          	else
                          		tmp = t_0;
                          	end
                          	return tmp
                          end
                          
                          function tmp_2 = code(r, a, b)
                          	t_0 = (sin(b) * r) / 1.0;
                          	tmp = 0.0;
                          	if (b <= -4.5)
                          		tmp = t_0;
                          	elseif (b <= 3.2e+34)
                          		tmp = (r / cos(a)) * b;
                          	else
                          		tmp = t_0;
                          	end
                          	tmp_2 = tmp;
                          end
                          
                          code[r_, a_, b_] := Block[{t$95$0 = N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / 1.0), $MachinePrecision]}, If[LessEqual[b, -4.5], t$95$0, If[LessEqual[b, 3.2e+34], N[(N[(r / N[Cos[a], $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision], t$95$0]]]
                          
                          \begin{array}{l}
                          
                          \\
                          \begin{array}{l}
                          t_0 := \frac{\sin b \cdot r}{1}\\
                          \mathbf{if}\;b \leq -4.5:\\
                          \;\;\;\;t\_0\\
                          
                          \mathbf{elif}\;b \leq 3.2 \cdot 10^{+34}:\\
                          \;\;\;\;\frac{r}{\cos a} \cdot b\\
                          
                          \mathbf{else}:\\
                          \;\;\;\;t\_0\\
                          
                          
                          \end{array}
                          \end{array}
                          
                          Derivation
                          1. Split input into 2 regimes
                          2. if b < -4.5 or 3.1999999999999998e34 < b

                            1. Initial program 51.8%

                              \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                            2. Add Preprocessing
                            3. Step-by-step derivation
                              1. lift-cos.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                              2. lift-+.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                              3. cos-sumN/A

                                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                              4. sub-negN/A

                                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                              5. *-commutativeN/A

                                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                              6. lower-fma.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                              7. lower-cos.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                              8. lower-cos.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                              9. lift-sin.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                              10. *-commutativeN/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                              11. distribute-lft-neg-inN/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                              12. lower-*.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                              13. lower-neg.f64N/A

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                              14. lower-sin.f6499.3

                                \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
                            4. Applied rewrites99.3%

                              \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
                            5. Taylor expanded in a around inf

                              \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                            6. Step-by-step derivation
                              1. lower-/.f64N/A

                                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                              2. lower-*.f64N/A

                                \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                              3. lower-sin.f64N/A

                                \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                              4. +-commutativeN/A

                                \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                              5. lower-fma.f64N/A

                                \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                              6. lower-cos.f64N/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                              7. lower-cos.f64N/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                              8. mul-1-negN/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                              9. distribute-rgt-neg-inN/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                              10. mul-1-negN/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                              11. lower-*.f64N/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                              12. lower-sin.f64N/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                              13. mul-1-negN/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                              14. lower-neg.f64N/A

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                              15. lower-sin.f6499.3

                                \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
                            7. Applied rewrites99.3%

                              \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
                            8. Taylor expanded in a around 0

                              \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                            9. Step-by-step derivation
                              1. Applied rewrites51.3%

                                \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                              2. Taylor expanded in b around 0

                                \[\leadsto \frac{r \cdot \sin b}{1} \]
                              3. Step-by-step derivation
                                1. Applied rewrites12.4%

                                  \[\leadsto \frac{r \cdot \sin b}{1} \]

                                if -4.5 < b < 3.1999999999999998e34

                                1. Initial program 98.0%

                                  \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                                2. Add Preprocessing
                                3. Step-by-step derivation
                                  1. lift-/.f64N/A

                                    \[\leadsto r \cdot \color{blue}{\frac{\sin b}{\cos \left(a + b\right)}} \]
                                  2. clear-numN/A

                                    \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos \left(a + b\right)}{\sin b}}} \]
                                  3. div-invN/A

                                    \[\leadsto r \cdot \frac{1}{\color{blue}{\cos \left(a + b\right) \cdot \frac{1}{\sin b}}} \]
                                  4. associate-/r*N/A

                                    \[\leadsto r \cdot \color{blue}{\frac{\frac{1}{\cos \left(a + b\right)}}{\frac{1}{\sin b}}} \]
                                  5. lower-/.f64N/A

                                    \[\leadsto r \cdot \color{blue}{\frac{\frac{1}{\cos \left(a + b\right)}}{\frac{1}{\sin b}}} \]
                                  6. inv-powN/A

                                    \[\leadsto r \cdot \frac{\color{blue}{{\cos \left(a + b\right)}^{-1}}}{\frac{1}{\sin b}} \]
                                  7. lower-pow.f64N/A

                                    \[\leadsto r \cdot \frac{\color{blue}{{\cos \left(a + b\right)}^{-1}}}{\frac{1}{\sin b}} \]
                                  8. inv-powN/A

                                    \[\leadsto r \cdot \frac{{\cos \left(a + b\right)}^{-1}}{\color{blue}{{\sin b}^{-1}}} \]
                                  9. lower-pow.f6497.8

                                    \[\leadsto r \cdot \frac{{\cos \left(a + b\right)}^{-1}}{\color{blue}{{\sin b}^{-1}}} \]
                                4. Applied rewrites97.8%

                                  \[\leadsto r \cdot \color{blue}{\frac{{\cos \left(a + b\right)}^{-1}}{{\sin b}^{-1}}} \]
                                5. Taylor expanded in b around 0

                                  \[\leadsto \color{blue}{\frac{b \cdot r}{\cos a}} \]
                                6. Step-by-step derivation
                                  1. *-commutativeN/A

                                    \[\leadsto \frac{\color{blue}{r \cdot b}}{\cos a} \]
                                  2. associate-*l/N/A

                                    \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                                  3. lower-*.f64N/A

                                    \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                                  4. lower-/.f64N/A

                                    \[\leadsto \color{blue}{\frac{r}{\cos a}} \cdot b \]
                                  5. lower-cos.f6497.7

                                    \[\leadsto \frac{r}{\color{blue}{\cos a}} \cdot b \]
                                7. Applied rewrites97.7%

                                  \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
                              4. Recombined 2 regimes into one program.
                              5. Final simplification57.7%

                                \[\leadsto \begin{array}{l} \mathbf{if}\;b \leq -4.5:\\ \;\;\;\;\frac{\sin b \cdot r}{1}\\ \mathbf{elif}\;b \leq 3.2 \cdot 10^{+34}:\\ \;\;\;\;\frac{r}{\cos a} \cdot b\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b \cdot r}{1}\\ \end{array} \]
                              6. Add Preprocessing

                              Alternative 12: 38.3% accurate, 1.9× speedup?

                              \[\begin{array}{l} \\ \frac{\sin b \cdot r}{1} \end{array} \]
                              (FPCore (r a b) :precision binary64 (/ (* (sin b) r) 1.0))
                              double code(double r, double a, double b) {
                              	return (sin(b) * r) / 1.0;
                              }
                              
                              real(8) function code(r, a, b)
                                  real(8), intent (in) :: r
                                  real(8), intent (in) :: a
                                  real(8), intent (in) :: b
                                  code = (sin(b) * r) / 1.0d0
                              end function
                              
                              public static double code(double r, double a, double b) {
                              	return (Math.sin(b) * r) / 1.0;
                              }
                              
                              def code(r, a, b):
                              	return (math.sin(b) * r) / 1.0
                              
                              function code(r, a, b)
                              	return Float64(Float64(sin(b) * r) / 1.0)
                              end
                              
                              function tmp = code(r, a, b)
                              	tmp = (sin(b) * r) / 1.0;
                              end
                              
                              code[r_, a_, b_] := N[(N[(N[Sin[b], $MachinePrecision] * r), $MachinePrecision] / 1.0), $MachinePrecision]
                              
                              \begin{array}{l}
                              
                              \\
                              \frac{\sin b \cdot r}{1}
                              \end{array}
                              
                              Derivation
                              1. Initial program 76.3%

                                \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                              2. Add Preprocessing
                              3. Step-by-step derivation
                                1. lift-cos.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                                2. lift-+.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                                3. cos-sumN/A

                                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                                4. sub-negN/A

                                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                                5. *-commutativeN/A

                                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                                6. lower-fma.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                                7. lower-cos.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                                8. lower-cos.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                                9. lift-sin.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                                10. *-commutativeN/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                                11. distribute-lft-neg-inN/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                                12. lower-*.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                                13. lower-neg.f64N/A

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                                14. lower-sin.f6499.6

                                  \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
                              4. Applied rewrites99.6%

                                \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
                              5. Taylor expanded in a around inf

                                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                              6. Step-by-step derivation
                                1. lower-/.f64N/A

                                  \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                                2. lower-*.f64N/A

                                  \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                                3. lower-sin.f64N/A

                                  \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                                4. +-commutativeN/A

                                  \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                                5. lower-fma.f64N/A

                                  \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                                6. lower-cos.f64N/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                                7. lower-cos.f64N/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                                8. mul-1-negN/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                                9. distribute-rgt-neg-inN/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                                10. mul-1-negN/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                                11. lower-*.f64N/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                                12. lower-sin.f64N/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                                13. mul-1-negN/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                                14. lower-neg.f64N/A

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                                15. lower-sin.f6499.6

                                  \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
                              7. Applied rewrites99.6%

                                \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
                              8. Taylor expanded in a around 0

                                \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                              9. Step-by-step derivation
                                1. Applied rewrites60.3%

                                  \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                                2. Taylor expanded in b around 0

                                  \[\leadsto \frac{r \cdot \sin b}{1} \]
                                3. Step-by-step derivation
                                  1. Applied rewrites41.8%

                                    \[\leadsto \frac{r \cdot \sin b}{1} \]
                                  2. Final simplification41.8%

                                    \[\leadsto \frac{\sin b \cdot r}{1} \]
                                  3. Add Preprocessing

                                  Alternative 13: 34.3% accurate, 1.9× speedup?

                                  \[\begin{array}{l} \\ \frac{b \cdot r}{\cos b} \end{array} \]
                                  (FPCore (r a b) :precision binary64 (/ (* b r) (cos b)))
                                  double code(double r, double a, double b) {
                                  	return (b * r) / cos(b);
                                  }
                                  
                                  real(8) function code(r, a, b)
                                      real(8), intent (in) :: r
                                      real(8), intent (in) :: a
                                      real(8), intent (in) :: b
                                      code = (b * r) / cos(b)
                                  end function
                                  
                                  public static double code(double r, double a, double b) {
                                  	return (b * r) / Math.cos(b);
                                  }
                                  
                                  def code(r, a, b):
                                  	return (b * r) / math.cos(b)
                                  
                                  function code(r, a, b)
                                  	return Float64(Float64(b * r) / cos(b))
                                  end
                                  
                                  function tmp = code(r, a, b)
                                  	tmp = (b * r) / cos(b);
                                  end
                                  
                                  code[r_, a_, b_] := N[(N[(b * r), $MachinePrecision] / N[Cos[b], $MachinePrecision]), $MachinePrecision]
                                  
                                  \begin{array}{l}
                                  
                                  \\
                                  \frac{b \cdot r}{\cos b}
                                  \end{array}
                                  
                                  Derivation
                                  1. Initial program 76.3%

                                    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                                  2. Add Preprocessing
                                  3. Step-by-step derivation
                                    1. lift-cos.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos \left(a + b\right)}} \]
                                    2. lift-+.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\cos \color{blue}{\left(a + b\right)}} \]
                                    3. cos-sumN/A

                                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b - \sin a \cdot \sin b}} \]
                                    4. sub-negN/A

                                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos a \cdot \cos b + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                                    5. *-commutativeN/A

                                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\cos b \cdot \cos a} + \left(\mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                                    6. lower-fma.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)}} \]
                                    7. lower-cos.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\color{blue}{\cos b}, \cos a, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                                    8. lower-cos.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \color{blue}{\cos a}, \mathsf{neg}\left(\sin a \cdot \sin b\right)\right)} \]
                                    9. lift-sin.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\sin a \cdot \color{blue}{\sin b}\right)\right)} \]
                                    10. *-commutativeN/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \mathsf{neg}\left(\color{blue}{\sin b \cdot \sin a}\right)\right)} \]
                                    11. distribute-lft-neg-inN/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                                    12. lower-*.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right) \cdot \sin a}\right)} \]
                                    13. lower-neg.f64N/A

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(-\sin b\right)} \cdot \sin a\right)} \]
                                    14. lower-sin.f6499.6

                                      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \color{blue}{\sin a}\right)} \]
                                  4. Applied rewrites99.6%

                                    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
                                  5. Taylor expanded in a around inf

                                    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                                  6. Step-by-step derivation
                                    1. lower-/.f64N/A

                                      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b}} \]
                                    2. lower-*.f64N/A

                                      \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                                    3. lower-sin.f64N/A

                                      \[\leadsto \frac{r \cdot \color{blue}{\sin b}}{-1 \cdot \left(\sin a \cdot \sin b\right) + \cos a \cdot \cos b} \]
                                    4. +-commutativeN/A

                                      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a \cdot \cos b + -1 \cdot \left(\sin a \cdot \sin b\right)}} \]
                                    5. lower-fma.f64N/A

                                      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos a, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)}} \]
                                    6. lower-cos.f64N/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\color{blue}{\cos a}, \cos b, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                                    7. lower-cos.f64N/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \color{blue}{\cos b}, -1 \cdot \left(\sin a \cdot \sin b\right)\right)} \]
                                    8. mul-1-negN/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\mathsf{neg}\left(\sin a \cdot \sin b\right)}\right)} \]
                                    9. distribute-rgt-neg-inN/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                                    10. mul-1-negN/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-1 \cdot \sin b\right)}\right)} \]
                                    11. lower-*.f64N/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a \cdot \left(-1 \cdot \sin b\right)}\right)} \]
                                    12. lower-sin.f64N/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \color{blue}{\sin a} \cdot \left(-1 \cdot \sin b\right)\right)} \]
                                    13. mul-1-negN/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(\mathsf{neg}\left(\sin b\right)\right)}\right)} \]
                                    14. lower-neg.f64N/A

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \color{blue}{\left(-\sin b\right)}\right)} \]
                                    15. lower-sin.f6499.6

                                      \[\leadsto \frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\color{blue}{\sin b}\right)\right)} \]
                                  7. Applied rewrites99.6%

                                    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\mathsf{fma}\left(\cos a, \cos b, \sin a \cdot \left(-\sin b\right)\right)}} \]
                                  8. Taylor expanded in a around 0

                                    \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                                  9. Step-by-step derivation
                                    1. Applied rewrites60.3%

                                      \[\leadsto \frac{r \cdot \sin b}{\cos b} \]
                                    2. Taylor expanded in b around 0

                                      \[\leadsto \frac{b \cdot r}{\cos \color{blue}{b}} \]
                                    3. Step-by-step derivation
                                      1. Applied rewrites37.9%

                                        \[\leadsto \frac{b \cdot r}{\cos \color{blue}{b}} \]
                                      2. Add Preprocessing

                                      Alternative 14: 34.3% accurate, 12.9× speedup?

                                      \[\begin{array}{l} \\ \frac{b}{1} \cdot r \end{array} \]
                                      (FPCore (r a b) :precision binary64 (* (/ b 1.0) r))
                                      double code(double r, double a, double b) {
                                      	return (b / 1.0) * r;
                                      }
                                      
                                      real(8) function code(r, a, b)
                                          real(8), intent (in) :: r
                                          real(8), intent (in) :: a
                                          real(8), intent (in) :: b
                                          code = (b / 1.0d0) * r
                                      end function
                                      
                                      public static double code(double r, double a, double b) {
                                      	return (b / 1.0) * r;
                                      }
                                      
                                      def code(r, a, b):
                                      	return (b / 1.0) * r
                                      
                                      function code(r, a, b)
                                      	return Float64(Float64(b / 1.0) * r)
                                      end
                                      
                                      function tmp = code(r, a, b)
                                      	tmp = (b / 1.0) * r;
                                      end
                                      
                                      code[r_, a_, b_] := N[(N[(b / 1.0), $MachinePrecision] * r), $MachinePrecision]
                                      
                                      \begin{array}{l}
                                      
                                      \\
                                      \frac{b}{1} \cdot r
                                      \end{array}
                                      
                                      Derivation
                                      1. Initial program 76.3%

                                        \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                                      2. Add Preprocessing
                                      3. Taylor expanded in b around 0

                                        \[\leadsto r \cdot \color{blue}{\frac{b}{\cos a}} \]
                                      4. Step-by-step derivation
                                        1. lower-/.f64N/A

                                          \[\leadsto r \cdot \color{blue}{\frac{b}{\cos a}} \]
                                        2. lower-cos.f6453.6

                                          \[\leadsto r \cdot \frac{b}{\color{blue}{\cos a}} \]
                                      5. Applied rewrites53.6%

                                        \[\leadsto r \cdot \color{blue}{\frac{b}{\cos a}} \]
                                      6. Taylor expanded in a around 0

                                        \[\leadsto r \cdot \frac{b}{1} \]
                                      7. Step-by-step derivation
                                        1. Applied rewrites37.6%

                                          \[\leadsto r \cdot \frac{b}{1} \]
                                        2. Final simplification37.6%

                                          \[\leadsto \frac{b}{1} \cdot r \]
                                        3. Add Preprocessing

                                        Alternative 15: 32.5% accurate, 12.9× speedup?

                                        \[\begin{array}{l} \\ \mathsf{fma}\left(b \cdot b, a, b\right) \cdot r \end{array} \]
                                        (FPCore (r a b) :precision binary64 (* (fma (* b b) a b) r))
                                        double code(double r, double a, double b) {
                                        	return fma((b * b), a, b) * r;
                                        }
                                        
                                        function code(r, a, b)
                                        	return Float64(fma(Float64(b * b), a, b) * r)
                                        end
                                        
                                        code[r_, a_, b_] := N[(N[(N[(b * b), $MachinePrecision] * a + b), $MachinePrecision] * r), $MachinePrecision]
                                        
                                        \begin{array}{l}
                                        
                                        \\
                                        \mathsf{fma}\left(b \cdot b, a, b\right) \cdot r
                                        \end{array}
                                        
                                        Derivation
                                        1. Initial program 76.3%

                                          \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                                        2. Add Preprocessing
                                        3. Taylor expanded in b around 0

                                          \[\leadsto r \cdot \color{blue}{\left(b \cdot \left(\frac{1}{\cos a} + \frac{b \cdot \sin a}{{\cos a}^{2}}\right)\right)} \]
                                        4. Step-by-step derivation
                                          1. +-commutativeN/A

                                            \[\leadsto r \cdot \left(b \cdot \color{blue}{\left(\frac{b \cdot \sin a}{{\cos a}^{2}} + \frac{1}{\cos a}\right)}\right) \]
                                          2. distribute-lft-inN/A

                                            \[\leadsto r \cdot \color{blue}{\left(b \cdot \frac{b \cdot \sin a}{{\cos a}^{2}} + b \cdot \frac{1}{\cos a}\right)} \]
                                          3. associate-/l*N/A

                                            \[\leadsto r \cdot \left(b \cdot \color{blue}{\left(b \cdot \frac{\sin a}{{\cos a}^{2}}\right)} + b \cdot \frac{1}{\cos a}\right) \]
                                          4. associate-*r*N/A

                                            \[\leadsto r \cdot \left(\color{blue}{\left(b \cdot b\right) \cdot \frac{\sin a}{{\cos a}^{2}}} + b \cdot \frac{1}{\cos a}\right) \]
                                          5. unpow2N/A

                                            \[\leadsto r \cdot \left(\color{blue}{{b}^{2}} \cdot \frac{\sin a}{{\cos a}^{2}} + b \cdot \frac{1}{\cos a}\right) \]
                                          6. lower-fma.f64N/A

                                            \[\leadsto r \cdot \color{blue}{\mathsf{fma}\left({b}^{2}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right)} \]
                                          7. unpow2N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(\color{blue}{b \cdot b}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                          8. lower-*.f64N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(\color{blue}{b \cdot b}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                          9. lower-/.f64N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{\frac{\sin a}{{\cos a}^{2}}}, b \cdot \frac{1}{\cos a}\right) \]
                                          10. lower-sin.f64N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\color{blue}{\sin a}}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                          11. lower-pow.f64N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{\color{blue}{{\cos a}^{2}}}, b \cdot \frac{1}{\cos a}\right) \]
                                          12. lower-cos.f64N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\color{blue}{\cos a}}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                          13. associate-*r/N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \color{blue}{\frac{b \cdot 1}{\cos a}}\right) \]
                                          14. *-rgt-identityN/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{\color{blue}{b}}{\cos a}\right) \]
                                          15. lower-/.f64N/A

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \color{blue}{\frac{b}{\cos a}}\right) \]
                                          16. lower-cos.f6453.4

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{b}{\color{blue}{\cos a}}\right) \]
                                        5. Applied rewrites53.4%

                                          \[\leadsto r \cdot \color{blue}{\mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{b}{\cos a}\right)} \]
                                        6. Taylor expanded in a around 0

                                          \[\leadsto r \cdot \left(b + \color{blue}{a \cdot {b}^{2}}\right) \]
                                        7. Step-by-step derivation
                                          1. Applied rewrites35.3%

                                            \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{a}, b\right) \]
                                          2. Taylor expanded in a around inf

                                            \[\leadsto r \cdot \left(a \cdot {b}^{\color{blue}{2}}\right) \]
                                          3. Step-by-step derivation
                                            1. Applied rewrites16.5%

                                              \[\leadsto r \cdot \left(\left(b \cdot b\right) \cdot a\right) \]
                                            2. Taylor expanded in a around 0

                                              \[\leadsto r \cdot \left(b + \color{blue}{a \cdot {b}^{2}}\right) \]
                                            3. Step-by-step derivation
                                              1. Applied rewrites35.3%

                                                \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{a}, b\right) \]
                                              2. Final simplification35.3%

                                                \[\leadsto \mathsf{fma}\left(b \cdot b, a, b\right) \cdot r \]
                                              3. Add Preprocessing

                                              Alternative 16: 32.1% accurate, 12.9× speedup?

                                              \[\begin{array}{l} \\ \mathsf{fma}\left(a \cdot b, b, b\right) \cdot r \end{array} \]
                                              (FPCore (r a b) :precision binary64 (* (fma (* a b) b b) r))
                                              double code(double r, double a, double b) {
                                              	return fma((a * b), b, b) * r;
                                              }
                                              
                                              function code(r, a, b)
                                              	return Float64(fma(Float64(a * b), b, b) * r)
                                              end
                                              
                                              code[r_, a_, b_] := N[(N[(N[(a * b), $MachinePrecision] * b + b), $MachinePrecision] * r), $MachinePrecision]
                                              
                                              \begin{array}{l}
                                              
                                              \\
                                              \mathsf{fma}\left(a \cdot b, b, b\right) \cdot r
                                              \end{array}
                                              
                                              Derivation
                                              1. Initial program 76.3%

                                                \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                                              2. Add Preprocessing
                                              3. Taylor expanded in b around 0

                                                \[\leadsto r \cdot \color{blue}{\left(b \cdot \left(\frac{1}{\cos a} + \frac{b \cdot \sin a}{{\cos a}^{2}}\right)\right)} \]
                                              4. Step-by-step derivation
                                                1. +-commutativeN/A

                                                  \[\leadsto r \cdot \left(b \cdot \color{blue}{\left(\frac{b \cdot \sin a}{{\cos a}^{2}} + \frac{1}{\cos a}\right)}\right) \]
                                                2. distribute-lft-inN/A

                                                  \[\leadsto r \cdot \color{blue}{\left(b \cdot \frac{b \cdot \sin a}{{\cos a}^{2}} + b \cdot \frac{1}{\cos a}\right)} \]
                                                3. associate-/l*N/A

                                                  \[\leadsto r \cdot \left(b \cdot \color{blue}{\left(b \cdot \frac{\sin a}{{\cos a}^{2}}\right)} + b \cdot \frac{1}{\cos a}\right) \]
                                                4. associate-*r*N/A

                                                  \[\leadsto r \cdot \left(\color{blue}{\left(b \cdot b\right) \cdot \frac{\sin a}{{\cos a}^{2}}} + b \cdot \frac{1}{\cos a}\right) \]
                                                5. unpow2N/A

                                                  \[\leadsto r \cdot \left(\color{blue}{{b}^{2}} \cdot \frac{\sin a}{{\cos a}^{2}} + b \cdot \frac{1}{\cos a}\right) \]
                                                6. lower-fma.f64N/A

                                                  \[\leadsto r \cdot \color{blue}{\mathsf{fma}\left({b}^{2}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right)} \]
                                                7. unpow2N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(\color{blue}{b \cdot b}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                8. lower-*.f64N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(\color{blue}{b \cdot b}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                9. lower-/.f64N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{\frac{\sin a}{{\cos a}^{2}}}, b \cdot \frac{1}{\cos a}\right) \]
                                                10. lower-sin.f64N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\color{blue}{\sin a}}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                11. lower-pow.f64N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{\color{blue}{{\cos a}^{2}}}, b \cdot \frac{1}{\cos a}\right) \]
                                                12. lower-cos.f64N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\color{blue}{\cos a}}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                13. associate-*r/N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \color{blue}{\frac{b \cdot 1}{\cos a}}\right) \]
                                                14. *-rgt-identityN/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{\color{blue}{b}}{\cos a}\right) \]
                                                15. lower-/.f64N/A

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \color{blue}{\frac{b}{\cos a}}\right) \]
                                                16. lower-cos.f6453.4

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{b}{\color{blue}{\cos a}}\right) \]
                                              5. Applied rewrites53.4%

                                                \[\leadsto r \cdot \color{blue}{\mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{b}{\cos a}\right)} \]
                                              6. Taylor expanded in a around 0

                                                \[\leadsto r \cdot \left(b + \color{blue}{a \cdot {b}^{2}}\right) \]
                                              7. Step-by-step derivation
                                                1. Applied rewrites35.3%

                                                  \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{a}, b\right) \]
                                                2. Step-by-step derivation
                                                  1. Applied rewrites35.2%

                                                    \[\leadsto r \cdot \mathsf{fma}\left(a \cdot b, b, b\right) \]
                                                  2. Final simplification35.2%

                                                    \[\leadsto \mathsf{fma}\left(a \cdot b, b, b\right) \cdot r \]
                                                  3. Add Preprocessing

                                                  Alternative 17: 14.1% accurate, 13.8× speedup?

                                                  \[\begin{array}{l} \\ \left(\left(a \cdot b\right) \cdot b\right) \cdot r \end{array} \]
                                                  (FPCore (r a b) :precision binary64 (* (* (* a b) b) r))
                                                  double code(double r, double a, double b) {
                                                  	return ((a * b) * b) * r;
                                                  }
                                                  
                                                  real(8) function code(r, a, b)
                                                      real(8), intent (in) :: r
                                                      real(8), intent (in) :: a
                                                      real(8), intent (in) :: b
                                                      code = ((a * b) * b) * r
                                                  end function
                                                  
                                                  public static double code(double r, double a, double b) {
                                                  	return ((a * b) * b) * r;
                                                  }
                                                  
                                                  def code(r, a, b):
                                                  	return ((a * b) * b) * r
                                                  
                                                  function code(r, a, b)
                                                  	return Float64(Float64(Float64(a * b) * b) * r)
                                                  end
                                                  
                                                  function tmp = code(r, a, b)
                                                  	tmp = ((a * b) * b) * r;
                                                  end
                                                  
                                                  code[r_, a_, b_] := N[(N[(N[(a * b), $MachinePrecision] * b), $MachinePrecision] * r), $MachinePrecision]
                                                  
                                                  \begin{array}{l}
                                                  
                                                  \\
                                                  \left(\left(a \cdot b\right) \cdot b\right) \cdot r
                                                  \end{array}
                                                  
                                                  Derivation
                                                  1. Initial program 76.3%

                                                    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
                                                  2. Add Preprocessing
                                                  3. Taylor expanded in b around 0

                                                    \[\leadsto r \cdot \color{blue}{\left(b \cdot \left(\frac{1}{\cos a} + \frac{b \cdot \sin a}{{\cos a}^{2}}\right)\right)} \]
                                                  4. Step-by-step derivation
                                                    1. +-commutativeN/A

                                                      \[\leadsto r \cdot \left(b \cdot \color{blue}{\left(\frac{b \cdot \sin a}{{\cos a}^{2}} + \frac{1}{\cos a}\right)}\right) \]
                                                    2. distribute-lft-inN/A

                                                      \[\leadsto r \cdot \color{blue}{\left(b \cdot \frac{b \cdot \sin a}{{\cos a}^{2}} + b \cdot \frac{1}{\cos a}\right)} \]
                                                    3. associate-/l*N/A

                                                      \[\leadsto r \cdot \left(b \cdot \color{blue}{\left(b \cdot \frac{\sin a}{{\cos a}^{2}}\right)} + b \cdot \frac{1}{\cos a}\right) \]
                                                    4. associate-*r*N/A

                                                      \[\leadsto r \cdot \left(\color{blue}{\left(b \cdot b\right) \cdot \frac{\sin a}{{\cos a}^{2}}} + b \cdot \frac{1}{\cos a}\right) \]
                                                    5. unpow2N/A

                                                      \[\leadsto r \cdot \left(\color{blue}{{b}^{2}} \cdot \frac{\sin a}{{\cos a}^{2}} + b \cdot \frac{1}{\cos a}\right) \]
                                                    6. lower-fma.f64N/A

                                                      \[\leadsto r \cdot \color{blue}{\mathsf{fma}\left({b}^{2}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right)} \]
                                                    7. unpow2N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(\color{blue}{b \cdot b}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                    8. lower-*.f64N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(\color{blue}{b \cdot b}, \frac{\sin a}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                    9. lower-/.f64N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{\frac{\sin a}{{\cos a}^{2}}}, b \cdot \frac{1}{\cos a}\right) \]
                                                    10. lower-sin.f64N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\color{blue}{\sin a}}{{\cos a}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                    11. lower-pow.f64N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{\color{blue}{{\cos a}^{2}}}, b \cdot \frac{1}{\cos a}\right) \]
                                                    12. lower-cos.f64N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\color{blue}{\cos a}}^{2}}, b \cdot \frac{1}{\cos a}\right) \]
                                                    13. associate-*r/N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \color{blue}{\frac{b \cdot 1}{\cos a}}\right) \]
                                                    14. *-rgt-identityN/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{\color{blue}{b}}{\cos a}\right) \]
                                                    15. lower-/.f64N/A

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \color{blue}{\frac{b}{\cos a}}\right) \]
                                                    16. lower-cos.f6453.4

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{b}{\color{blue}{\cos a}}\right) \]
                                                  5. Applied rewrites53.4%

                                                    \[\leadsto r \cdot \color{blue}{\mathsf{fma}\left(b \cdot b, \frac{\sin a}{{\cos a}^{2}}, \frac{b}{\cos a}\right)} \]
                                                  6. Taylor expanded in a around 0

                                                    \[\leadsto r \cdot \left(b + \color{blue}{a \cdot {b}^{2}}\right) \]
                                                  7. Step-by-step derivation
                                                    1. Applied rewrites35.3%

                                                      \[\leadsto r \cdot \mathsf{fma}\left(b \cdot b, \color{blue}{a}, b\right) \]
                                                    2. Taylor expanded in a around inf

                                                      \[\leadsto r \cdot \left(a \cdot {b}^{\color{blue}{2}}\right) \]
                                                    3. Step-by-step derivation
                                                      1. Applied rewrites16.5%

                                                        \[\leadsto r \cdot \left(\left(b \cdot b\right) \cdot a\right) \]
                                                      2. Step-by-step derivation
                                                        1. Applied rewrites16.6%

                                                          \[\leadsto r \cdot \left(\left(a \cdot b\right) \cdot b\right) \]
                                                        2. Final simplification16.6%

                                                          \[\leadsto \left(\left(a \cdot b\right) \cdot b\right) \cdot r \]
                                                        3. Add Preprocessing

                                                        Reproduce

                                                        ?
                                                        herbie shell --seed 2024273 
                                                        (FPCore (r a b)
                                                          :name "rsin B (should all be same)"
                                                          :precision binary64
                                                          (* r (/ (sin b) (cos (+ a b)))))