rsin B (should all be same)

Percentage Accurate: 76.9% → 99.5%
Time: 16.8s
Alternatives: 11
Speedup: 1.0×

Specification

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

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

Sampling outcomes in binary64 precision:

Local Percentage Accuracy vs ?

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

Accuracy vs Speed?

Herbie found 11 alternatives:

AlternativeAccuracySpeedup
The accuracy (vertical axis) and speed (horizontal axis) of each alternatives. Up and to the right is better. The red square shows the initial program, and each blue circle shows an alternative.The line shows the best available speed-accuracy tradeoffs.

Initial Program: 76.9% accurate, 1.0× speedup?

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

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

Alternative 1: 99.5% accurate, 0.3× 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.1%

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. associate-*r/75.1%

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

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

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. cos-sum99.5%

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
    2. cancel-sign-sub-inv99.5%

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

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

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

Alternative 2: 99.5% accurate, 0.3× speedup?

\[\begin{array}{l} \\ r \cdot \frac{\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(r * Float64(sin(b) / fma(cos(b), cos(a), Float64(Float64(-sin(b)) * sin(a)))))
end
code[r_, a_, b_] := N[(r * N[(N[Sin[b], $MachinePrecision] / N[(N[Cos[b], $MachinePrecision] * N[Cos[a], $MachinePrecision] + N[((-N[Sin[b], $MachinePrecision]) * N[Sin[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
\begin{array}{l}

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

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. +-commutative75.1%

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

    \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. cos-sum99.5%

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
    2. cancel-sign-sub-inv99.5%

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

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

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

Alternative 3: 99.5% accurate, 0.4× speedup?

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

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

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. associate-*r/75.1%

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

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

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. cos-sum99.5%

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

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

Alternative 4: 99.5% accurate, 0.4× speedup?

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

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

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. +-commutative75.1%

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

    \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. cos-sum99.5%

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

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

Alternative 5: 77.8% accurate, 0.5× speedup?

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

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

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. +-commutative75.1%

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

    \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. cos-sum99.5%

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
    2. cancel-sign-sub-inv99.5%

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

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

    \[\leadsto r \cdot \frac{\sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
  7. Step-by-step derivation
    1. add-sqr-sqrt52.1%

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

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

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

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\left(\sqrt{\sin b} \cdot \sqrt{\sin b}\right)} \cdot \sin a\right)} \]
    5. add-sqr-sqrt74.8%

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

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

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \frac{\cos \left(b - a\right) - \color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}}{2}\right)} \]
    8. cancel-sign-sub-inv74.3%

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \frac{\cos \left(b - a\right) - \color{blue}{\left(\cos b \cdot \cos a + \left(-\sin b\right) \cdot \sin a\right)}}{2}\right)} \]
    9. add-sqr-sqrt41.2%

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

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \frac{\cos \left(b - a\right) - \left(\cos b \cdot \cos a + \color{blue}{\sqrt{\left(-\sin b\right) \cdot \left(-\sin b\right)}} \cdot \sin a\right)}{2}\right)} \]
    11. sqr-neg75.2%

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \frac{\cos \left(b - a\right) - \left(\cos b \cdot \cos a + \sqrt{\color{blue}{\sin b \cdot \sin b}} \cdot \sin a\right)}{2}\right)} \]
    12. sqrt-unprod34.0%

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \frac{\cos \left(b - a\right) - \left(\cos b \cdot \cos a + \color{blue}{\left(\sqrt{\sin b} \cdot \sqrt{\sin b}\right)} \cdot \sin a\right)}{2}\right)} \]
    13. add-sqr-sqrt76.0%

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

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

    \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{\frac{\cos \left(b - a\right) - \cos \left(b - a\right)}{2}}\right)} \]
  9. Step-by-step derivation
    1. +-inverses76.0%

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

      \[\leadsto r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, \color{blue}{0}\right)} \]
  10. Simplified76.0%

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

Alternative 6: 76.3% accurate, 1.0× speedup?

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

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

\mathbf{else}:\\
\;\;\;\;r \cdot \tan b\\


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if a < -7.5e13 or 2.9000000000000002e-8 < a

    1. Initial program 58.3%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. +-commutative58.3%

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

      \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in b around 0 57.9%

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

    if -7.5e13 < a < 2.9000000000000002e-8

    1. Initial program 97.4%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. associate-*r/97.3%

        \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(a + b\right)}} \]
      2. +-commutative97.3%

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

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. cos-sum99.7%

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
      2. cancel-sign-sub-inv99.7%

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

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

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

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

        \[\leadsto \color{blue}{\left(-r \cdot \sin b\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
      3. distribute-rgt-neg-in99.6%

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

        \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{-\sin b} \cdot \sqrt{-\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      5. sqrt-unprod60.9%

        \[\leadsto \left(r \cdot \color{blue}{\sqrt{\left(-\sin b\right) \cdot \left(-\sin b\right)}}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      6. sqr-neg60.9%

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

        \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{\sin b} \cdot \sqrt{\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      8. add-sqr-sqrt18.6%

        \[\leadsto \left(r \cdot \color{blue}{\sin b}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      9. distribute-lft-neg-out18.6%

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

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
      11. cos-sum18.8%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\cos \left(b + a\right)}} \]
      12. cos-sum18.6%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
      13. cancel-sign-sub-inv18.6%

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

      \[\leadsto \color{blue}{\left(r \cdot \sin b\right) \cdot \frac{1}{-\cos \left(b - a\right)}} \]
    9. Step-by-step derivation
      1. associate-*r/18.8%

        \[\leadsto \color{blue}{\frac{\left(r \cdot \sin b\right) \cdot 1}{-\cos \left(b - a\right)}} \]
      2. *-rgt-identity18.8%

        \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-\cos \left(b - a\right)} \]
      3. distribute-frac-neg218.8%

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

        \[\leadsto -\color{blue}{\frac{r}{\cos \left(b - a\right)} \cdot \sin b} \]
      5. associate-/r/18.8%

        \[\leadsto -\color{blue}{\frac{r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
      6. distribute-neg-frac18.8%

        \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    10. Simplified18.8%

      \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    11. Taylor expanded in a around 0 18.8%

      \[\leadsto \color{blue}{-1 \cdot \frac{r \cdot \sin b}{\cos b}} \]
    12. Step-by-step derivation
      1. mul-1-neg18.8%

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

        \[\leadsto -\color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
      3. distribute-rgt-neg-in18.8%

        \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
    13. Simplified18.8%

      \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
    14. Step-by-step derivation
      1. add-sqr-sqrt17.3%

        \[\leadsto \color{blue}{\sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \cdot \sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)}} \]
      2. sqrt-unprod43.1%

        \[\leadsto \color{blue}{\sqrt{\left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right) \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)}} \]
      3. distribute-rgt-neg-out43.1%

        \[\leadsto \sqrt{\color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)} \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)} \]
      4. distribute-rgt-neg-out43.1%

        \[\leadsto \sqrt{\left(-r \cdot \frac{\sin b}{\cos b}\right) \cdot \color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)}} \]
      5. sqr-neg43.1%

        \[\leadsto \sqrt{\color{blue}{\left(r \cdot \frac{\sin b}{\cos b}\right) \cdot \left(r \cdot \frac{\sin b}{\cos b}\right)}} \]
      6. sqrt-unprod54.4%

        \[\leadsto \color{blue}{\sqrt{r \cdot \frac{\sin b}{\cos b}} \cdot \sqrt{r \cdot \frac{\sin b}{\cos b}}} \]
      7. add-sqr-sqrt97.4%

        \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
      8. clear-num97.2%

        \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos b}{\sin b}}} \]
      9. un-div-inv97.2%

        \[\leadsto \color{blue}{\frac{r}{\frac{\cos b}{\sin b}}} \]
      10. clear-num97.2%

        \[\leadsto \frac{r}{\color{blue}{\frac{1}{\frac{\sin b}{\cos b}}}} \]
      11. quot-tan97.2%

        \[\leadsto \frac{r}{\frac{1}{\color{blue}{\tan b}}} \]
    15. Applied egg-rr97.2%

      \[\leadsto \color{blue}{\frac{r}{\frac{1}{\tan b}}} \]
    16. Step-by-step derivation
      1. associate-/r/97.5%

        \[\leadsto \color{blue}{\frac{r}{1} \cdot \tan b} \]
      2. /-rgt-identity97.5%

        \[\leadsto \color{blue}{r} \cdot \tan b \]
    17. Simplified97.5%

      \[\leadsto \color{blue}{r \cdot \tan b} \]
  3. Recombined 2 regimes into one program.
  4. Final simplification74.9%

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

Alternative 7: 76.3% accurate, 1.0× speedup?

\[\begin{array}{l} \\ \begin{array}{l} \mathbf{if}\;a \leq -75000000000000:\\ \;\;\;\;r \cdot \frac{\sin b}{\cos a}\\ \mathbf{elif}\;a \leq 2.9 \cdot 10^{-8}:\\ \;\;\;\;r \cdot \tan b\\ \mathbf{else}:\\ \;\;\;\;\frac{r \cdot \sin b}{\cos a}\\ \end{array} \end{array} \]
(FPCore (r a b)
 :precision binary64
 (if (<= a -75000000000000.0)
   (* r (/ (sin b) (cos a)))
   (if (<= a 2.9e-8) (* r (tan b)) (/ (* r (sin b)) (cos a)))))
double code(double r, double a, double b) {
	double tmp;
	if (a <= -75000000000000.0) {
		tmp = r * (sin(b) / cos(a));
	} else if (a <= 2.9e-8) {
		tmp = r * tan(b);
	} else {
		tmp = (r * sin(b)) / cos(a);
	}
	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 <= (-75000000000000.0d0)) then
        tmp = r * (sin(b) / cos(a))
    else if (a <= 2.9d-8) then
        tmp = r * tan(b)
    else
        tmp = (r * sin(b)) / cos(a)
    end if
    code = tmp
end function
public static double code(double r, double a, double b) {
	double tmp;
	if (a <= -75000000000000.0) {
		tmp = r * (Math.sin(b) / Math.cos(a));
	} else if (a <= 2.9e-8) {
		tmp = r * Math.tan(b);
	} else {
		tmp = (r * Math.sin(b)) / Math.cos(a);
	}
	return tmp;
}
def code(r, a, b):
	tmp = 0
	if a <= -75000000000000.0:
		tmp = r * (math.sin(b) / math.cos(a))
	elif a <= 2.9e-8:
		tmp = r * math.tan(b)
	else:
		tmp = (r * math.sin(b)) / math.cos(a)
	return tmp
function code(r, a, b)
	tmp = 0.0
	if (a <= -75000000000000.0)
		tmp = Float64(r * Float64(sin(b) / cos(a)));
	elseif (a <= 2.9e-8)
		tmp = Float64(r * tan(b));
	else
		tmp = Float64(Float64(r * sin(b)) / cos(a));
	end
	return tmp
end
function tmp_2 = code(r, a, b)
	tmp = 0.0;
	if (a <= -75000000000000.0)
		tmp = r * (sin(b) / cos(a));
	elseif (a <= 2.9e-8)
		tmp = r * tan(b);
	else
		tmp = (r * sin(b)) / cos(a);
	end
	tmp_2 = tmp;
end
code[r_, a_, b_] := If[LessEqual[a, -75000000000000.0], N[(r * N[(N[Sin[b], $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision], If[LessEqual[a, 2.9e-8], N[(r * N[Tan[b], $MachinePrecision]), $MachinePrecision], N[(N[(r * N[Sin[b], $MachinePrecision]), $MachinePrecision] / N[Cos[a], $MachinePrecision]), $MachinePrecision]]]
\begin{array}{l}

\\
\begin{array}{l}
\mathbf{if}\;a \leq -75000000000000:\\
\;\;\;\;r \cdot \frac{\sin b}{\cos a}\\

\mathbf{elif}\;a \leq 2.9 \cdot 10^{-8}:\\
\;\;\;\;r \cdot \tan b\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 3 regimes
  2. if a < -7.5e13

    1. Initial program 52.9%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. +-commutative52.9%

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

      \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in b around 0 52.5%

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

    if -7.5e13 < a < 2.9000000000000002e-8

    1. Initial program 97.4%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. associate-*r/97.3%

        \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(a + b\right)}} \]
      2. +-commutative97.3%

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

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. cos-sum99.7%

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
      2. cancel-sign-sub-inv99.7%

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

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

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

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

        \[\leadsto \color{blue}{\left(-r \cdot \sin b\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
      3. distribute-rgt-neg-in99.6%

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

        \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{-\sin b} \cdot \sqrt{-\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      5. sqrt-unprod60.9%

        \[\leadsto \left(r \cdot \color{blue}{\sqrt{\left(-\sin b\right) \cdot \left(-\sin b\right)}}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      6. sqr-neg60.9%

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

        \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{\sin b} \cdot \sqrt{\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      8. add-sqr-sqrt18.6%

        \[\leadsto \left(r \cdot \color{blue}{\sin b}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      9. distribute-lft-neg-out18.6%

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

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
      11. cos-sum18.8%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\cos \left(b + a\right)}} \]
      12. cos-sum18.6%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
      13. cancel-sign-sub-inv18.6%

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

      \[\leadsto \color{blue}{\left(r \cdot \sin b\right) \cdot \frac{1}{-\cos \left(b - a\right)}} \]
    9. Step-by-step derivation
      1. associate-*r/18.8%

        \[\leadsto \color{blue}{\frac{\left(r \cdot \sin b\right) \cdot 1}{-\cos \left(b - a\right)}} \]
      2. *-rgt-identity18.8%

        \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-\cos \left(b - a\right)} \]
      3. distribute-frac-neg218.8%

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

        \[\leadsto -\color{blue}{\frac{r}{\cos \left(b - a\right)} \cdot \sin b} \]
      5. associate-/r/18.8%

        \[\leadsto -\color{blue}{\frac{r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
      6. distribute-neg-frac18.8%

        \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    10. Simplified18.8%

      \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    11. Taylor expanded in a around 0 18.8%

      \[\leadsto \color{blue}{-1 \cdot \frac{r \cdot \sin b}{\cos b}} \]
    12. Step-by-step derivation
      1. mul-1-neg18.8%

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

        \[\leadsto -\color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
      3. distribute-rgt-neg-in18.8%

        \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
    13. Simplified18.8%

      \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
    14. Step-by-step derivation
      1. add-sqr-sqrt17.3%

        \[\leadsto \color{blue}{\sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \cdot \sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)}} \]
      2. sqrt-unprod43.1%

        \[\leadsto \color{blue}{\sqrt{\left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right) \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)}} \]
      3. distribute-rgt-neg-out43.1%

        \[\leadsto \sqrt{\color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)} \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)} \]
      4. distribute-rgt-neg-out43.1%

        \[\leadsto \sqrt{\left(-r \cdot \frac{\sin b}{\cos b}\right) \cdot \color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)}} \]
      5. sqr-neg43.1%

        \[\leadsto \sqrt{\color{blue}{\left(r \cdot \frac{\sin b}{\cos b}\right) \cdot \left(r \cdot \frac{\sin b}{\cos b}\right)}} \]
      6. sqrt-unprod54.4%

        \[\leadsto \color{blue}{\sqrt{r \cdot \frac{\sin b}{\cos b}} \cdot \sqrt{r \cdot \frac{\sin b}{\cos b}}} \]
      7. add-sqr-sqrt97.4%

        \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
      8. clear-num97.2%

        \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos b}{\sin b}}} \]
      9. un-div-inv97.2%

        \[\leadsto \color{blue}{\frac{r}{\frac{\cos b}{\sin b}}} \]
      10. clear-num97.2%

        \[\leadsto \frac{r}{\color{blue}{\frac{1}{\frac{\sin b}{\cos b}}}} \]
      11. quot-tan97.2%

        \[\leadsto \frac{r}{\frac{1}{\color{blue}{\tan b}}} \]
    15. Applied egg-rr97.2%

      \[\leadsto \color{blue}{\frac{r}{\frac{1}{\tan b}}} \]
    16. Step-by-step derivation
      1. associate-/r/97.5%

        \[\leadsto \color{blue}{\frac{r}{1} \cdot \tan b} \]
      2. /-rgt-identity97.5%

        \[\leadsto \color{blue}{r} \cdot \tan b \]
    17. Simplified97.5%

      \[\leadsto \color{blue}{r \cdot \tan b} \]

    if 2.9000000000000002e-8 < a

    1. Initial program 64.7%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. associate-*r/64.7%

        \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(a + b\right)}} \]
      2. +-commutative64.7%

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

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Taylor expanded in b around 0 64.3%

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

Alternative 8: 76.9% accurate, 1.0× speedup?

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

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

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Add Preprocessing
  3. Final simplification75.1%

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

Alternative 9: 76.8% accurate, 1.8× speedup?

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

\\
\begin{array}{l}
\mathbf{if}\;b \leq -0.0015 \lor \neg \left(b \leq 0.00013\right):\\
\;\;\;\;r \cdot \tan b\\

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


\end{array}
\end{array}
Derivation
  1. Split input into 2 regimes
  2. if b < -0.0015 or 1.29999999999999989e-4 < b

    1. Initial program 49.4%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. associate-*r/49.4%

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

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

      \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. cos-sum99.2%

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
      2. cancel-sign-sub-inv99.2%

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a + \left(-\sin b\right) \cdot \sin a}} \]
      3. fma-define99.3%

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

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
    7. Step-by-step derivation
      1. frac-2neg99.3%

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

        \[\leadsto \color{blue}{\left(-r \cdot \sin b\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
      3. distribute-rgt-neg-in99.2%

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

        \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{-\sin b} \cdot \sqrt{-\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      5. sqrt-unprod51.3%

        \[\leadsto \left(r \cdot \color{blue}{\sqrt{\left(-\sin b\right) \cdot \left(-\sin b\right)}}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      6. sqr-neg51.3%

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

        \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{\sin b} \cdot \sqrt{\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      8. add-sqr-sqrt2.0%

        \[\leadsto \left(r \cdot \color{blue}{\sin b}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
      9. distribute-lft-neg-out2.0%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \color{blue}{-\sin b \cdot \sin a}\right)} \]
      10. fma-neg2.0%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
      11. cos-sum6.5%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\cos \left(b + a\right)}} \]
      12. cos-sum2.0%

        \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
      13. cancel-sign-sub-inv2.0%

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

      \[\leadsto \color{blue}{\left(r \cdot \sin b\right) \cdot \frac{1}{-\cos \left(b - a\right)}} \]
    9. Step-by-step derivation
      1. associate-*r/7.1%

        \[\leadsto \color{blue}{\frac{\left(r \cdot \sin b\right) \cdot 1}{-\cos \left(b - a\right)}} \]
      2. *-rgt-identity7.1%

        \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-\cos \left(b - a\right)} \]
      3. distribute-frac-neg27.1%

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

        \[\leadsto -\color{blue}{\frac{r}{\cos \left(b - a\right)} \cdot \sin b} \]
      5. associate-/r/7.1%

        \[\leadsto -\color{blue}{\frac{r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
      6. distribute-neg-frac7.1%

        \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    10. Simplified7.1%

      \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    11. Taylor expanded in a around 0 7.2%

      \[\leadsto \color{blue}{-1 \cdot \frac{r \cdot \sin b}{\cos b}} \]
    12. Step-by-step derivation
      1. mul-1-neg7.2%

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

        \[\leadsto -\color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
      3. distribute-rgt-neg-in7.2%

        \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
    13. Simplified7.2%

      \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
    14. Step-by-step derivation
      1. add-sqr-sqrt3.8%

        \[\leadsto \color{blue}{\sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \cdot \sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)}} \]
      2. sqrt-unprod17.3%

        \[\leadsto \color{blue}{\sqrt{\left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right) \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)}} \]
      3. distribute-rgt-neg-out17.3%

        \[\leadsto \sqrt{\color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)} \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)} \]
      4. distribute-rgt-neg-out17.3%

        \[\leadsto \sqrt{\left(-r \cdot \frac{\sin b}{\cos b}\right) \cdot \color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)}} \]
      5. sqr-neg17.3%

        \[\leadsto \sqrt{\color{blue}{\left(r \cdot \frac{\sin b}{\cos b}\right) \cdot \left(r \cdot \frac{\sin b}{\cos b}\right)}} \]
      6. sqrt-unprod23.3%

        \[\leadsto \color{blue}{\sqrt{r \cdot \frac{\sin b}{\cos b}} \cdot \sqrt{r \cdot \frac{\sin b}{\cos b}}} \]
      7. add-sqr-sqrt48.7%

        \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
      8. clear-num48.5%

        \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos b}{\sin b}}} \]
      9. un-div-inv48.6%

        \[\leadsto \color{blue}{\frac{r}{\frac{\cos b}{\sin b}}} \]
      10. clear-num48.6%

        \[\leadsto \frac{r}{\color{blue}{\frac{1}{\frac{\sin b}{\cos b}}}} \]
      11. quot-tan48.7%

        \[\leadsto \frac{r}{\frac{1}{\color{blue}{\tan b}}} \]
    15. Applied egg-rr48.7%

      \[\leadsto \color{blue}{\frac{r}{\frac{1}{\tan b}}} \]
    16. Step-by-step derivation
      1. associate-/r/48.7%

        \[\leadsto \color{blue}{\frac{r}{1} \cdot \tan b} \]
      2. /-rgt-identity48.7%

        \[\leadsto \color{blue}{r} \cdot \tan b \]
    17. Simplified48.7%

      \[\leadsto \color{blue}{r \cdot \tan b} \]

    if -0.0015 < b < 1.29999999999999989e-4

    1. Initial program 99.2%

      \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
    2. Step-by-step derivation
      1. +-commutative99.2%

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

      \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
    4. Add Preprocessing
    5. Step-by-step derivation
      1. cos-sum99.8%

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
      2. cancel-sign-sub-inv99.8%

        \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a + \left(-\sin b\right) \cdot \sin a}} \]
      3. fma-define99.8%

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

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

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

        \[\leadsto \frac{b \cdot r}{\color{blue}{\cos \left(-a\right)}} \]
      2. associate-/l*99.2%

        \[\leadsto \color{blue}{b \cdot \frac{r}{\cos \left(-a\right)}} \]
      3. cos-neg99.2%

        \[\leadsto b \cdot \frac{r}{\color{blue}{\cos a}} \]
    9. Simplified99.2%

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

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

Alternative 10: 60.6% accurate, 2.0× speedup?

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

\\
r \cdot \tan b
\end{array}
Derivation
  1. Initial program 75.1%

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. associate-*r/75.1%

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

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

    \[\leadsto \color{blue}{\frac{r \cdot \sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Step-by-step derivation
    1. cos-sum99.5%

      \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\cos b \cdot \cos a - \sin b \cdot \sin a}} \]
    2. cancel-sign-sub-inv99.5%

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

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

    \[\leadsto \frac{r \cdot \sin b}{\color{blue}{\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
  7. Step-by-step derivation
    1. frac-2neg99.5%

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

      \[\leadsto \color{blue}{\left(-r \cdot \sin b\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)}} \]
    3. distribute-rgt-neg-in99.4%

      \[\leadsto \color{blue}{\left(r \cdot \left(-\sin b\right)\right)} \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
    4. add-sqr-sqrt51.9%

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

      \[\leadsto \left(r \cdot \color{blue}{\sqrt{\left(-\sin b\right) \cdot \left(-\sin b\right)}}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
    6. sqr-neg55.5%

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

      \[\leadsto \left(r \cdot \color{blue}{\left(\sqrt{\sin b} \cdot \sqrt{\sin b}\right)}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
    8. add-sqr-sqrt20.0%

      \[\leadsto \left(r \cdot \color{blue}{\sin b}\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \left(-\sin b\right) \cdot \sin a\right)} \]
    9. distribute-lft-neg-out20.0%

      \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\mathsf{fma}\left(\cos b, \cos a, \color{blue}{-\sin b \cdot \sin a}\right)} \]
    10. fma-neg20.0%

      \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
    11. cos-sum22.1%

      \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\cos \left(b + a\right)}} \]
    12. cos-sum20.0%

      \[\leadsto \left(r \cdot \sin b\right) \cdot \frac{1}{-\color{blue}{\left(\cos b \cdot \cos a - \sin b \cdot \sin a\right)}} \]
    13. cancel-sign-sub-inv20.0%

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

    \[\leadsto \color{blue}{\left(r \cdot \sin b\right) \cdot \frac{1}{-\cos \left(b - a\right)}} \]
  9. Step-by-step derivation
    1. associate-*r/22.5%

      \[\leadsto \color{blue}{\frac{\left(r \cdot \sin b\right) \cdot 1}{-\cos \left(b - a\right)}} \]
    2. *-rgt-identity22.5%

      \[\leadsto \frac{\color{blue}{r \cdot \sin b}}{-\cos \left(b - a\right)} \]
    3. distribute-frac-neg222.5%

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

      \[\leadsto -\color{blue}{\frac{r}{\cos \left(b - a\right)} \cdot \sin b} \]
    5. associate-/r/22.5%

      \[\leadsto -\color{blue}{\frac{r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
    6. distribute-neg-frac22.5%

      \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
  10. Simplified22.5%

    \[\leadsto \color{blue}{\frac{-r}{\frac{\cos \left(b - a\right)}{\sin b}}} \]
  11. Taylor expanded in a around 0 24.1%

    \[\leadsto \color{blue}{-1 \cdot \frac{r \cdot \sin b}{\cos b}} \]
  12. Step-by-step derivation
    1. mul-1-neg24.1%

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

      \[\leadsto -\color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
    3. distribute-rgt-neg-in24.1%

      \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
  13. Simplified24.1%

    \[\leadsto \color{blue}{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \]
  14. Step-by-step derivation
    1. add-sqr-sqrt20.1%

      \[\leadsto \color{blue}{\sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)} \cdot \sqrt{r \cdot \left(-\frac{\sin b}{\cos b}\right)}} \]
    2. sqrt-unprod33.0%

      \[\leadsto \color{blue}{\sqrt{\left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right) \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)}} \]
    3. distribute-rgt-neg-out33.0%

      \[\leadsto \sqrt{\color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)} \cdot \left(r \cdot \left(-\frac{\sin b}{\cos b}\right)\right)} \]
    4. distribute-rgt-neg-out33.0%

      \[\leadsto \sqrt{\left(-r \cdot \frac{\sin b}{\cos b}\right) \cdot \color{blue}{\left(-r \cdot \frac{\sin b}{\cos b}\right)}} \]
    5. sqr-neg33.0%

      \[\leadsto \sqrt{\color{blue}{\left(r \cdot \frac{\sin b}{\cos b}\right) \cdot \left(r \cdot \frac{\sin b}{\cos b}\right)}} \]
    6. sqrt-unprod36.8%

      \[\leadsto \color{blue}{\sqrt{r \cdot \frac{\sin b}{\cos b}} \cdot \sqrt{r \cdot \frac{\sin b}{\cos b}}} \]
    7. add-sqr-sqrt57.9%

      \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos b}} \]
    8. clear-num57.9%

      \[\leadsto r \cdot \color{blue}{\frac{1}{\frac{\cos b}{\sin b}}} \]
    9. un-div-inv57.9%

      \[\leadsto \color{blue}{\frac{r}{\frac{\cos b}{\sin b}}} \]
    10. clear-num57.9%

      \[\leadsto \frac{r}{\color{blue}{\frac{1}{\frac{\sin b}{\cos b}}}} \]
    11. quot-tan57.9%

      \[\leadsto \frac{r}{\frac{1}{\color{blue}{\tan b}}} \]
  15. Applied egg-rr57.9%

    \[\leadsto \color{blue}{\frac{r}{\frac{1}{\tan b}}} \]
  16. Step-by-step derivation
    1. associate-/r/58.0%

      \[\leadsto \color{blue}{\frac{r}{1} \cdot \tan b} \]
    2. /-rgt-identity58.0%

      \[\leadsto \color{blue}{r} \cdot \tan b \]
  17. Simplified58.0%

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

Alternative 11: 35.2% accurate, 69.0× speedup?

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

\\
r \cdot b
\end{array}
Derivation
  1. Initial program 75.1%

    \[r \cdot \frac{\sin b}{\cos \left(a + b\right)} \]
  2. Step-by-step derivation
    1. +-commutative75.1%

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

    \[\leadsto \color{blue}{r \cdot \frac{\sin b}{\cos \left(b + a\right)}} \]
  4. Add Preprocessing
  5. Taylor expanded in b around 0 52.9%

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

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

Reproduce

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