rsin A (should all be same)

Percentage Accurate: 76.6% → 99.5%
Time: 14.0s
Alternatives: 12
Speedup: 1.0×

Specification

?
\[\begin{array}{l} \\ \frac{r \cdot \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(Float64(r * 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[(N[(r * N[Sin[b], $MachinePrecision]), $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{r \cdot \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 12 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: 76.6% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \frac{r \cdot \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(Float64(r * 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[(N[(r * N[Sin[b], $MachinePrecision]), $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

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

Alternative 1: 99.5% accurate, 0.4× speedup?

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

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

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

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

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

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

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

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

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

Alternative 2: 99.5% accurate, 0.4× speedup?

\[\begin{array}{l} \\ \frac{r \cdot \sin b}{\cos b \cdot \cos a - \sin a \cdot \sin b} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (/ (* r (sin b)) (- (* (cos b) (cos a)) (* (sin a) (sin b)))))
double code(double r, double a, double b) {
	return (r * sin(b)) / ((cos(b) * cos(a)) - (sin(a) * sin(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(b) * cos(a)) - (sin(a) * sin(b)))
end function
public static double code(double r, double a, double b) {
	return (r * Math.sin(b)) / ((Math.cos(b) * Math.cos(a)) - (Math.sin(a) * Math.sin(b)));
}
def code(r, a, b):
	return (r * math.sin(b)) / ((math.cos(b) * math.cos(a)) - (math.sin(a) * math.sin(b)))
function code(r, a, b)
	return Float64(Float64(r * sin(b)) / Float64(Float64(cos(b) * cos(a)) - Float64(sin(a) * sin(b))))
end
function tmp = code(r, a, b)
	tmp = (r * sin(b)) / ((cos(b) * cos(a)) - (sin(a) * sin(b)));
end
code[r_, a_, b_] := N[(N[(r * N[Sin[b], $MachinePrecision]), $MachinePrecision] / N[(N[(N[Cos[b], $MachinePrecision] * N[Cos[a], $MachinePrecision]), $MachinePrecision] - N[(N[Sin[a], $MachinePrecision] * N[Sin[b], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

\\
\frac{r \cdot \sin b}{\cos b \cdot \cos a - \sin a \cdot \sin b}
\end{array}
Derivation
  1. Initial program 75.6%

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

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

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

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

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

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

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

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

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

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

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

      \[\leadsto \frac{r \cdot \sin b}{\cos b \cdot \cos a - \color{blue}{\sin a} \cdot \sin b} \]
  4. Applied rewrites99.5%

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin a \cdot \sin b}} \]
  5. Add Preprocessing

Alternative 3: 76.1% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos b} \cdot r\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (if (or (<= a -3700000000.0) (not (<= a 5.2e-5)))
   (* (/ (sin b) (cos a)) r)
   (* (/ (sin b) (cos b)) r)))
double code(double r, double a, double b) {
	double tmp;
	if ((a <= -3700000000.0) || !(a <= 5.2e-5)) {
		tmp = (sin(b) / cos(a)) * r;
	} else {
		tmp = (sin(b) / cos(b)) * 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 <= (-3700000000.0d0)) .or. (.not. (a <= 5.2d-5))) then
        tmp = (sin(b) / cos(a)) * r
    else
        tmp = (sin(b) / cos(b)) * r
    end if
    code = tmp
end function
public static double code(double r, double a, double b) {
	double tmp;
	if ((a <= -3700000000.0) || !(a <= 5.2e-5)) {
		tmp = (Math.sin(b) / Math.cos(a)) * r;
	} else {
		tmp = (Math.sin(b) / Math.cos(b)) * r;
	}
	return tmp;
}
def code(r, a, b):
	tmp = 0
	if (a <= -3700000000.0) or not (a <= 5.2e-5):
		tmp = (math.sin(b) / math.cos(a)) * r
	else:
		tmp = (math.sin(b) / math.cos(b)) * r
	return tmp
function code(r, a, b)
	tmp = 0.0
	if ((a <= -3700000000.0) || !(a <= 5.2e-5))
		tmp = Float64(Float64(sin(b) / cos(a)) * r);
	else
		tmp = Float64(Float64(sin(b) / cos(b)) * r);
	end
	return tmp
end
function tmp_2 = code(r, a, b)
	tmp = 0.0;
	if ((a <= -3700000000.0) || ~((a <= 5.2e-5)))
		tmp = (sin(b) / cos(a)) * r;
	else
		tmp = (sin(b) / cos(b)) * r;
	end
	tmp_2 = tmp;
end
code[r_, a_, b_] := If[Or[LessEqual[a, -3700000000.0], N[Not[LessEqual[a, 5.2e-5]], $MachinePrecision]], N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision], N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[b], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\
\;\;\;\;\frac{\sin b}{\cos a} \cdot r\\

\mathbf{else}:\\
\;\;\;\;\frac{\sin b}{\cos b} \cdot r\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if a < -3.7e9 or 5.19999999999999968e-5 < a

    1. Initial program 55.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\color{blue}{\left(\left(b \cdot b - a \cdot b\right) + a \cdot a\right)}}\right)} \]
      15. distribute-rgt-out--N/A

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(\color{blue}{b - a}, b, a \cdot a\right)}\right)} \]
      19. lower-*.f6413.5

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

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)}} \]
    5. Step-by-step derivation
      1. lift-+.f64N/A

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + \color{blue}{{a}^{3}}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      4. sum-cubesN/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, \color{blue}{b \cdot b}\right) \cdot \left(a \cdot a - b \cdot b\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      15. difference-of-squaresN/A

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a}} \]
      3. lower-cos.f6455.8

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

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

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

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

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

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

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

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

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

    if -3.7e9 < a < 5.19999999999999968e-5

    1. Initial program 96.9%

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

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

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

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

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

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

      \[\leadsto \frac{r \cdot \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 0

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

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

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

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

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

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

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

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

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \mathbf{else}:\\ \;\;\;\;\frac{\sin b}{\cos b} \cdot r\\ \end{array} \]
  5. Add Preprocessing

Alternative 4: 76.1% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \mathbf{else}:\\ \;\;\;\;\frac{r}{\cos b} \cdot \sin b\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (if (or (<= a -3700000000.0) (not (<= a 5.2e-5)))
   (* (/ (sin b) (cos a)) r)
   (* (/ r (cos b)) (sin b))))
double code(double r, double a, double b) {
	double tmp;
	if ((a <= -3700000000.0) || !(a <= 5.2e-5)) {
		tmp = (sin(b) / cos(a)) * r;
	} else {
		tmp = (r / cos(b)) * sin(b);
	}
	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 <= (-3700000000.0d0)) .or. (.not. (a <= 5.2d-5))) then
        tmp = (sin(b) / cos(a)) * r
    else
        tmp = (r / cos(b)) * sin(b)
    end if
    code = tmp
end function
public static double code(double r, double a, double b) {
	double tmp;
	if ((a <= -3700000000.0) || !(a <= 5.2e-5)) {
		tmp = (Math.sin(b) / Math.cos(a)) * r;
	} else {
		tmp = (r / Math.cos(b)) * Math.sin(b);
	}
	return tmp;
}
def code(r, a, b):
	tmp = 0
	if (a <= -3700000000.0) or not (a <= 5.2e-5):
		tmp = (math.sin(b) / math.cos(a)) * r
	else:
		tmp = (r / math.cos(b)) * math.sin(b)
	return tmp
function code(r, a, b)
	tmp = 0.0
	if ((a <= -3700000000.0) || !(a <= 5.2e-5))
		tmp = Float64(Float64(sin(b) / cos(a)) * r);
	else
		tmp = Float64(Float64(r / cos(b)) * sin(b));
	end
	return tmp
end
function tmp_2 = code(r, a, b)
	tmp = 0.0;
	if ((a <= -3700000000.0) || ~((a <= 5.2e-5)))
		tmp = (sin(b) / cos(a)) * r;
	else
		tmp = (r / cos(b)) * sin(b);
	end
	tmp_2 = tmp;
end
code[r_, a_, b_] := If[Or[LessEqual[a, -3700000000.0], N[Not[LessEqual[a, 5.2e-5]], $MachinePrecision]], N[(N[(N[Sin[b], $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision], N[(N[(r / N[Cos[b], $MachinePrecision]), $MachinePrecision] * N[Sin[b], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\
\;\;\;\;\frac{\sin b}{\cos a} \cdot r\\

\mathbf{else}:\\
\;\;\;\;\frac{r}{\cos b} \cdot \sin b\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if a < -3.7e9 or 5.19999999999999968e-5 < a

    1. Initial program 55.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\color{blue}{\left(\left(b \cdot b - a \cdot b\right) + a \cdot a\right)}}\right)} \]
      15. distribute-rgt-out--N/A

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(\color{blue}{b - a}, b, a \cdot a\right)}\right)} \]
      19. lower-*.f6413.5

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

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)}} \]
    5. Step-by-step derivation
      1. lift-+.f64N/A

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + \color{blue}{{a}^{3}}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      4. sum-cubesN/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, \color{blue}{b \cdot b}\right) \cdot \left(a \cdot a - b \cdot b\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      15. difference-of-squaresN/A

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a}} \]
      3. lower-cos.f6455.8

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

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

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

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

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

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

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

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

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

    if -3.7e9 < a < 5.19999999999999968e-5

    1. Initial program 96.9%

      \[\frac{r \cdot \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.f6496.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\ \;\;\;\;\frac{\sin b}{\cos a} \cdot r\\ \mathbf{else}:\\ \;\;\;\;\frac{r}{\cos b} \cdot \sin b\\ \end{array} \]
  5. Add Preprocessing

Alternative 5: 76.1% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\ \;\;\;\;\sin b \cdot \frac{r}{\cos a}\\ \mathbf{else}:\\ \;\;\;\;\frac{r}{\cos b} \cdot \sin b\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (if (or (<= a -3700000000.0) (not (<= a 5.2e-5)))
   (* (sin b) (/ r (cos a)))
   (* (/ r (cos b)) (sin b))))
double code(double r, double a, double b) {
	double tmp;
	if ((a <= -3700000000.0) || !(a <= 5.2e-5)) {
		tmp = sin(b) * (r / cos(a));
	} else {
		tmp = (r / cos(b)) * sin(b);
	}
	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 <= (-3700000000.0d0)) .or. (.not. (a <= 5.2d-5))) then
        tmp = sin(b) * (r / cos(a))
    else
        tmp = (r / cos(b)) * sin(b)
    end if
    code = tmp
end function
public static double code(double r, double a, double b) {
	double tmp;
	if ((a <= -3700000000.0) || !(a <= 5.2e-5)) {
		tmp = Math.sin(b) * (r / Math.cos(a));
	} else {
		tmp = (r / Math.cos(b)) * Math.sin(b);
	}
	return tmp;
}
def code(r, a, b):
	tmp = 0
	if (a <= -3700000000.0) or not (a <= 5.2e-5):
		tmp = math.sin(b) * (r / math.cos(a))
	else:
		tmp = (r / math.cos(b)) * math.sin(b)
	return tmp
function code(r, a, b)
	tmp = 0.0
	if ((a <= -3700000000.0) || !(a <= 5.2e-5))
		tmp = Float64(sin(b) * Float64(r / cos(a)));
	else
		tmp = Float64(Float64(r / cos(b)) * sin(b));
	end
	return tmp
end
function tmp_2 = code(r, a, b)
	tmp = 0.0;
	if ((a <= -3700000000.0) || ~((a <= 5.2e-5)))
		tmp = sin(b) * (r / cos(a));
	else
		tmp = (r / cos(b)) * sin(b);
	end
	tmp_2 = tmp;
end
code[r_, a_, b_] := If[Or[LessEqual[a, -3700000000.0], N[Not[LessEqual[a, 5.2e-5]], $MachinePrecision]], N[(N[Sin[b], $MachinePrecision] * N[(r / N[Cos[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], N[(N[(r / N[Cos[b], $MachinePrecision]), $MachinePrecision] * N[Sin[b], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\
\;\;\;\;\sin b \cdot \frac{r}{\cos a}\\

\mathbf{else}:\\
\;\;\;\;\frac{r}{\cos b} \cdot \sin b\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if a < -3.7e9 or 5.19999999999999968e-5 < a

    1. Initial program 55.6%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\color{blue}{\left(\left(b \cdot b - a \cdot b\right) + a \cdot a\right)}}\right)} \]
      15. distribute-rgt-out--N/A

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(\color{blue}{b - a}, b, a \cdot a\right)}\right)} \]
      19. lower-*.f6413.5

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

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)}} \]
    5. Step-by-step derivation
      1. lift-+.f64N/A

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + \color{blue}{{a}^{3}}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      4. sum-cubesN/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, \color{blue}{b \cdot b}\right) \cdot \left(a \cdot a - b \cdot b\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      15. difference-of-squaresN/A

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a}} \]
      3. lower-cos.f6455.8

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

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

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

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

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

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

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

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

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

    if -3.7e9 < a < 5.19999999999999968e-5

    1. Initial program 96.9%

      \[\frac{r \cdot \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.f6496.8

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

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

    \[\leadsto \begin{array}{l} \mathbf{if}\;a \leq -3700000000 \lor \neg \left(a \leq 5.2 \cdot 10^{-5}\right):\\ \;\;\;\;\sin b \cdot \frac{r}{\cos a}\\ \mathbf{else}:\\ \;\;\;\;\frac{r}{\cos b} \cdot \sin b\\ \end{array} \]
  5. Add Preprocessing

Alternative 6: 76.4% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;b \leq -0.33 \lor \neg \left(b \leq 0.055\right):\\ \;\;\;\;\frac{r}{\cos b} \cdot \sin b\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(r \cdot \mathsf{fma}\left(\mathsf{fma}\left(0.008333333333333333, b \cdot b, -0.16666666666666666\right), b \cdot b, 1\right)\right) \cdot b}{\cos \left(a + b\right)}\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (if (or (<= b -0.33) (not (<= b 0.055)))
   (* (/ r (cos b)) (sin b))
   (/
    (*
     (*
      r
      (fma
       (fma 0.008333333333333333 (* b b) -0.16666666666666666)
       (* b b)
       1.0))
     b)
    (cos (+ a b)))))
double code(double r, double a, double b) {
	double tmp;
	if ((b <= -0.33) || !(b <= 0.055)) {
		tmp = (r / cos(b)) * sin(b);
	} else {
		tmp = ((r * fma(fma(0.008333333333333333, (b * b), -0.16666666666666666), (b * b), 1.0)) * b) / cos((a + b));
	}
	return tmp;
}
function code(r, a, b)
	tmp = 0.0
	if ((b <= -0.33) || !(b <= 0.055))
		tmp = Float64(Float64(r / cos(b)) * sin(b));
	else
		tmp = Float64(Float64(Float64(r * fma(fma(0.008333333333333333, Float64(b * b), -0.16666666666666666), Float64(b * b), 1.0)) * b) / cos(Float64(a + b)));
	end
	return tmp
end
code[r_, a_, b_] := If[Or[LessEqual[b, -0.33], N[Not[LessEqual[b, 0.055]], $MachinePrecision]], N[(N[(r / N[Cos[b], $MachinePrecision]), $MachinePrecision] * N[Sin[b], $MachinePrecision]), $MachinePrecision], N[(N[(N[(r * N[(N[(0.008333333333333333 * N[(b * b), $MachinePrecision] + -0.16666666666666666), $MachinePrecision] * N[(b * b), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;b \leq -0.33 \lor \neg \left(b \leq 0.055\right):\\
\;\;\;\;\frac{r}{\cos b} \cdot \sin b\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(r \cdot \mathsf{fma}\left(\mathsf{fma}\left(0.008333333333333333, b \cdot b, -0.16666666666666666\right), b \cdot b, 1\right)\right) \cdot b}{\cos \left(a + b\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if b < -0.330000000000000016 or 0.0550000000000000003 < b

    1. Initial program 51.2%

      \[\frac{r \cdot \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.1

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

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

    if -0.330000000000000016 < b < 0.0550000000000000003

    1. Initial program 98.8%

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

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

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

        \[\leadsto \frac{\color{blue}{\left(r + {b}^{2} \cdot \left(\frac{-1}{6} \cdot r + \frac{1}{120} \cdot \left({b}^{2} \cdot r\right)\right)\right) \cdot b}}{\cos \left(a + b\right)} \]
    5. Applied rewrites98.8%

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

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

Alternative 7: 76.6% 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 75.6%

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

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

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

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

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

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

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

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

Alternative 8: 76.6% accurate, 1.0× speedup?

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

\\
\frac{r}{\cos \left(a + b\right)} \cdot \sin b
\end{array}
Derivation
  1. Initial program 75.6%

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

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

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

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

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

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

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

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

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

Alternative 9: 55.6% accurate, 1.4× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;b \leq -3.9 \lor \neg \left(b \leq 2.9\right):\\ \;\;\;\;\frac{r \cdot \sin b}{1}\\ \mathbf{else}:\\ \;\;\;\;\frac{\left(r \cdot \mathsf{fma}\left(\mathsf{fma}\left(0.008333333333333333, b \cdot b, -0.16666666666666666\right), b \cdot b, 1\right)\right) \cdot b}{\cos \left(a + b\right)}\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (if (or (<= b -3.9) (not (<= b 2.9)))
   (/ (* r (sin b)) 1.0)
   (/
    (*
     (*
      r
      (fma
       (fma 0.008333333333333333 (* b b) -0.16666666666666666)
       (* b b)
       1.0))
     b)
    (cos (+ a b)))))
double code(double r, double a, double b) {
	double tmp;
	if ((b <= -3.9) || !(b <= 2.9)) {
		tmp = (r * sin(b)) / 1.0;
	} else {
		tmp = ((r * fma(fma(0.008333333333333333, (b * b), -0.16666666666666666), (b * b), 1.0)) * b) / cos((a + b));
	}
	return tmp;
}
function code(r, a, b)
	tmp = 0.0
	if ((b <= -3.9) || !(b <= 2.9))
		tmp = Float64(Float64(r * sin(b)) / 1.0);
	else
		tmp = Float64(Float64(Float64(r * fma(fma(0.008333333333333333, Float64(b * b), -0.16666666666666666), Float64(b * b), 1.0)) * b) / cos(Float64(a + b)));
	end
	return tmp
end
code[r_, a_, b_] := If[Or[LessEqual[b, -3.9], N[Not[LessEqual[b, 2.9]], $MachinePrecision]], N[(N[(r * N[Sin[b], $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision], N[(N[(N[(r * N[(N[(0.008333333333333333 * N[(b * b), $MachinePrecision] + -0.16666666666666666), $MachinePrecision] * N[(b * b), $MachinePrecision] + 1.0), $MachinePrecision]), $MachinePrecision] * b), $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;b \leq -3.9 \lor \neg \left(b \leq 2.9\right):\\
\;\;\;\;\frac{r \cdot \sin b}{1}\\

\mathbf{else}:\\
\;\;\;\;\frac{\left(r \cdot \mathsf{fma}\left(\mathsf{fma}\left(0.008333333333333333, b \cdot b, -0.16666666666666666\right), b \cdot b, 1\right)\right) \cdot b}{\cos \left(a + b\right)}\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if b < -3.89999999999999991 or 2.89999999999999991 < b

    1. Initial program 51.2%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\color{blue}{\left(\left(b \cdot b - a \cdot b\right) + a \cdot a\right)}}\right)} \]
      15. distribute-rgt-out--N/A

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(\color{blue}{b - a}, b, a \cdot a\right)}\right)} \]
      19. lower-*.f6414.6

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

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)}} \]
    5. Step-by-step derivation
      1. lift-+.f64N/A

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + \color{blue}{{a}^{3}}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      4. sum-cubesN/A

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

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

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

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

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

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

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, \color{blue}{b \cdot b}\right) \cdot \left(a \cdot a - b \cdot b\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      15. difference-of-squaresN/A

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, b \cdot b\right) \cdot \left(\left(a + b\right) \cdot \color{blue}{\left(a - b\right)}\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
      19. lower--.f648.1

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

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

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

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

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a}} \]
      3. lower-cos.f6411.0

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

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

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

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

      if -3.89999999999999991 < b < 2.89999999999999991

      1. Initial program 98.8%

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

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

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

          \[\leadsto \frac{\color{blue}{\left(r + {b}^{2} \cdot \left(\frac{-1}{6} \cdot r + \frac{1}{120} \cdot \left({b}^{2} \cdot r\right)\right)\right) \cdot b}}{\cos \left(a + b\right)} \]
      5. Applied rewrites98.8%

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

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

    Alternative 10: 55.3% accurate, 1.7× speedup?

    \[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;b \leq -0.98 \lor \neg \left(b \leq 4.8\right):\\ \;\;\;\;\frac{r \cdot \sin b}{1}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{\cos a} \cdot r\\ \end{array} \end{array} \]
    (FPCore (r a b)
     :precision binary64
     (if (or (<= b -0.98) (not (<= b 4.8)))
       (/ (* r (sin b)) 1.0)
       (* (/ b (cos a)) r)))
    double code(double r, double a, double b) {
    	double tmp;
    	if ((b <= -0.98) || !(b <= 4.8)) {
    		tmp = (r * sin(b)) / 1.0;
    	} else {
    		tmp = (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 ((b <= (-0.98d0)) .or. (.not. (b <= 4.8d0))) then
            tmp = (r * sin(b)) / 1.0d0
        else
            tmp = (b / cos(a)) * r
        end if
        code = tmp
    end function
    
    public static double code(double r, double a, double b) {
    	double tmp;
    	if ((b <= -0.98) || !(b <= 4.8)) {
    		tmp = (r * Math.sin(b)) / 1.0;
    	} else {
    		tmp = (b / Math.cos(a)) * r;
    	}
    	return tmp;
    }
    
    def code(r, a, b):
    	tmp = 0
    	if (b <= -0.98) or not (b <= 4.8):
    		tmp = (r * math.sin(b)) / 1.0
    	else:
    		tmp = (b / math.cos(a)) * r
    	return tmp
    
    function code(r, a, b)
    	tmp = 0.0
    	if ((b <= -0.98) || !(b <= 4.8))
    		tmp = Float64(Float64(r * sin(b)) / 1.0);
    	else
    		tmp = Float64(Float64(b / cos(a)) * r);
    	end
    	return tmp
    end
    
    function tmp_2 = code(r, a, b)
    	tmp = 0.0;
    	if ((b <= -0.98) || ~((b <= 4.8)))
    		tmp = (r * sin(b)) / 1.0;
    	else
    		tmp = (b / cos(a)) * r;
    	end
    	tmp_2 = tmp;
    end
    
    code[r_, a_, b_] := If[Or[LessEqual[b, -0.98], N[Not[LessEqual[b, 4.8]], $MachinePrecision]], N[(N[(r * N[Sin[b], $MachinePrecision]), $MachinePrecision] / 1.0), $MachinePrecision], N[(N[(b / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]]
    
    \begin{array}{l}
    
    \\
    \begin{array}{l}
    \mathbf{if}\;b \leq -0.98 \lor \neg \left(b \leq 4.8\right):\\
    \;\;\;\;\frac{r \cdot \sin b}{1}\\
    
    \mathbf{else}:\\
    \;\;\;\;\frac{b}{\cos a} \cdot r\\
    
    
    \end{array}
    \end{array}
    
    Derivation
    1. Split input into 2 regimes
    2. if b < -0.97999999999999998 or 4.79999999999999982 < b

      1. Initial program 51.2%

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

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

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

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

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

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

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

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

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

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

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

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

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

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

          \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\color{blue}{\left(\left(b \cdot b - a \cdot b\right) + a \cdot a\right)}}\right)} \]
        15. distribute-rgt-out--N/A

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

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

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

          \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(\color{blue}{b - a}, b, a \cdot a\right)}\right)} \]
        19. lower-*.f6414.6

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

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos \left(\frac{{b}^{3} + {a}^{3}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)}} \]
      5. Step-by-step derivation
        1. lift-+.f64N/A

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

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

          \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{{b}^{3} + \color{blue}{{a}^{3}}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
        4. sum-cubesN/A

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

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

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

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

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

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

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

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

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

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

          \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, \color{blue}{b \cdot b}\right) \cdot \left(a \cdot a - b \cdot b\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
        15. difference-of-squaresN/A

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

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

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

          \[\leadsto \frac{r \cdot \sin b}{\cos \left(\frac{\frac{\mathsf{fma}\left(a, a - b, b \cdot b\right) \cdot \left(\left(a + b\right) \cdot \color{blue}{\left(a - b\right)}\right)}{a - b}}{-\mathsf{fma}\left(b - a, b, a \cdot a\right)}\right)} \]
        19. lower--.f648.1

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

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

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

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

          \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos a}} \]
        3. lower-cos.f6411.0

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

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

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

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

        if -0.97999999999999998 < b < 4.79999999999999982

        1. Initial program 98.8%

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

          \[\leadsto \color{blue}{\frac{b \cdot r}{\cos a}} \]
        4. 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.f6498.8

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

          \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
        6. Step-by-step derivation
          1. Applied rewrites98.8%

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

          \[\leadsto \begin{array}{l} \mathbf{if}\;b \leq -0.98 \lor \neg \left(b \leq 4.8\right):\\ \;\;\;\;\frac{r \cdot \sin b}{1}\\ \mathbf{else}:\\ \;\;\;\;\frac{b}{\cos a} \cdot r\\ \end{array} \]
        9. Add Preprocessing

        Alternative 11: 51.3% accurate, 1.9× speedup?

        \[\begin{array}{l} \\ \frac{b}{\cos a} \cdot r \end{array} \]
        (FPCore (r a b) :precision binary64 (* (/ b (cos a)) r))
        double code(double r, double a, double b) {
        	return (b / cos(a)) * 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 / cos(a)) * r
        end function
        
        public static double code(double r, double a, double b) {
        	return (b / Math.cos(a)) * r;
        }
        
        def code(r, a, b):
        	return (b / math.cos(a)) * r
        
        function code(r, a, b)
        	return Float64(Float64(b / cos(a)) * r)
        end
        
        function tmp = code(r, a, b)
        	tmp = (b / cos(a)) * r;
        end
        
        code[r_, a_, b_] := N[(N[(b / N[Cos[a], $MachinePrecision]), $MachinePrecision] * r), $MachinePrecision]
        
        \begin{array}{l}
        
        \\
        \frac{b}{\cos a} \cdot r
        \end{array}
        
        Derivation
        1. Initial program 75.6%

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

          \[\leadsto \color{blue}{\frac{b \cdot r}{\cos a}} \]
        4. 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.f6452.4

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

          \[\leadsto \color{blue}{\frac{r}{\cos a} \cdot b} \]
        6. Step-by-step derivation
          1. Applied rewrites52.5%

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

          Alternative 12: 34.8% accurate, 36.7× speedup?

          \[\begin{array}{l} \\ b \cdot r \end{array} \]
          (FPCore (r a b) :precision binary64 (* b r))
          double code(double r, double a, double b) {
          	return 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 = b * r
          end function
          
          public static double code(double r, double a, double b) {
          	return b * r;
          }
          
          def code(r, a, b):
          	return b * r
          
          function code(r, a, b)
          	return Float64(b * r)
          end
          
          function tmp = code(r, a, b)
          	tmp = b * r;
          end
          
          code[r_, a_, b_] := N[(b * r), $MachinePrecision]
          
          \begin{array}{l}
          
          \\
          b \cdot r
          \end{array}
          
          Derivation
          1. Initial program 75.6%

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

            \[\leadsto \color{blue}{\frac{b \cdot r}{\cos a}} \]
          4. 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.f6452.4

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

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

            \[\leadsto b \cdot \color{blue}{r} \]
          7. Step-by-step derivation
            1. Applied rewrites36.1%

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

            Reproduce

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