| Alternative 1 | |
|---|---|
| Error | 0.52% |
| Cost | 51840 |
\[r \cdot \frac{\sin b}{\mathsf{fma}\left(\cos b, \cos a, -\mathsf{expm1}\left(\mathsf{log1p}\left(\sin b \cdot \sin a\right)\right)\right)}
\]
(FPCore (r a b) :precision binary64 (* r (/ (sin b) (cos (+ a b)))))
(FPCore (r a b)
:precision binary64
(let* ((t_0 (- (sin a))))
(/
(sin b)
(/
(fma
(sin b)
t_0
(fma (cos b) (cos a) (fma t_0 (sin b) (* (sin b) (sin a)))))
r))))double code(double r, double a, double b) {
return r * (sin(b) / cos((a + b)));
}
double code(double r, double a, double b) {
double t_0 = -sin(a);
return sin(b) / (fma(sin(b), t_0, fma(cos(b), cos(a), fma(t_0, sin(b), (sin(b) * sin(a))))) / r);
}
function code(r, a, b) return Float64(r * Float64(sin(b) / cos(Float64(a + b)))) end
function code(r, a, b) t_0 = Float64(-sin(a)) return Float64(sin(b) / Float64(fma(sin(b), t_0, fma(cos(b), cos(a), fma(t_0, sin(b), Float64(sin(b) * sin(a))))) / r)) end
code[r_, a_, b_] := N[(r * N[(N[Sin[b], $MachinePrecision] / N[Cos[N[(a + b), $MachinePrecision]], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]
code[r_, a_, b_] := Block[{t$95$0 = (-N[Sin[a], $MachinePrecision])}, N[(N[Sin[b], $MachinePrecision] / N[(N[(N[Sin[b], $MachinePrecision] * t$95$0 + N[(N[Cos[b], $MachinePrecision] * N[Cos[a], $MachinePrecision] + N[(t$95$0 * N[Sin[b], $MachinePrecision] + N[(N[Sin[b], $MachinePrecision] * N[Sin[a], $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision]), $MachinePrecision] / r), $MachinePrecision]), $MachinePrecision]]
r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\begin{array}{l}
t_0 := -\sin a\\
\frac{\sin b}{\frac{\mathsf{fma}\left(\sin b, t_0, \mathsf{fma}\left(\cos b, \cos a, \mathsf{fma}\left(t_0, \sin b, \sin b \cdot \sin a\right)\right)\right)}{r}}
\end{array}
Initial program 24.05
Simplified24.13
[Start]24.05 | \[ r \cdot \frac{\sin b}{\cos \left(a + b\right)}
\] |
|---|---|
*-commutative [=>]24.05 | \[ \color{blue}{\frac{\sin b}{\cos \left(a + b\right)} \cdot r}
\] |
associate-/r/ [<=]24.13 | \[ \color{blue}{\frac{\sin b}{\frac{\cos \left(a + b\right)}{r}}}
\] |
+-commutative [=>]24.13 | \[ \frac{\sin b}{\frac{\cos \color{blue}{\left(b + a\right)}}{r}}
\] |
Applied egg-rr0.6
Applied egg-rr0.6
Simplified0.59
[Start]0.6 | \[ \frac{\sin b}{\frac{\cos b \cdot \cos a + \left(\sin b \cdot \left(-\sin a\right) + \mathsf{fma}\left(-\sin a, \sin b, \sin b \cdot \sin a\right)\right)}{r}}
\] |
|---|---|
associate-+r+ [=>]0.59 | \[ \frac{\sin b}{\frac{\color{blue}{\left(\cos b \cdot \cos a + \sin b \cdot \left(-\sin a\right)\right) + \mathsf{fma}\left(-\sin a, \sin b, \sin b \cdot \sin a\right)}}{r}}
\] |
+-commutative [<=]0.59 | \[ \frac{\sin b}{\frac{\color{blue}{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right)} + \mathsf{fma}\left(-\sin a, \sin b, \sin b \cdot \sin a\right)}{r}}
\] |
fma-udef [=>]0.6 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \color{blue}{\left(\left(-\sin a\right) \cdot \sin b + \sin b \cdot \sin a\right)}}{r}}
\] |
*-commutative [<=]0.6 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \left(\color{blue}{\sin b \cdot \left(-\sin a\right)} + \sin b \cdot \sin a\right)}{r}}
\] |
neg-mul-1 [=>]0.6 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \left(\sin b \cdot \color{blue}{\left(-1 \cdot \sin a\right)} + \sin b \cdot \sin a\right)}{r}}
\] |
associate-*r* [=>]0.6 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \left(\color{blue}{\left(\sin b \cdot -1\right) \cdot \sin a} + \sin b \cdot \sin a\right)}{r}}
\] |
*-commutative [<=]0.6 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \left(\color{blue}{\left(-1 \cdot \sin b\right)} \cdot \sin a + \sin b \cdot \sin a\right)}{r}}
\] |
neg-mul-1 [<=]0.6 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \left(\color{blue}{\left(-\sin b\right)} \cdot \sin a + \sin b \cdot \sin a\right)}{r}}
\] |
fma-udef [<=]0.59 | \[ \frac{\sin b}{\frac{\left(\sin b \cdot \left(-\sin a\right) + \cos b \cdot \cos a\right) + \color{blue}{\mathsf{fma}\left(-\sin b, \sin a, \sin b \cdot \sin a\right)}}{r}}
\] |
associate-+r+ [<=]0.58 | \[ \frac{\sin b}{\frac{\color{blue}{\sin b \cdot \left(-\sin a\right) + \left(\cos b \cdot \cos a + \mathsf{fma}\left(-\sin b, \sin a, \sin b \cdot \sin a\right)\right)}}{r}}
\] |
fma-def [=>]0.59 | \[ \frac{\sin b}{\frac{\color{blue}{\mathsf{fma}\left(\sin b, -\sin a, \cos b \cdot \cos a + \mathsf{fma}\left(-\sin b, \sin a, \sin b \cdot \sin a\right)\right)}}{r}}
\] |
Final simplification0.59
| Alternative 1 | |
|---|---|
| Error | 0.52% |
| Cost | 51840 |
| Alternative 2 | |
|---|---|
| Error | 0.5% |
| Cost | 39040 |
| Alternative 3 | |
|---|---|
| Error | 0.51% |
| Cost | 32704 |
| Alternative 4 | |
|---|---|
| Error | 0.6% |
| Cost | 32704 |
| Alternative 5 | |
|---|---|
| Error | 22.96% |
| Cost | 19648 |
| Alternative 6 | |
|---|---|
| Error | 23.05% |
| Cost | 19648 |
| Alternative 7 | |
|---|---|
| Error | 24.09% |
| Cost | 13385 |
| Alternative 8 | |
|---|---|
| Error | 24.09% |
| Cost | 13384 |
| Alternative 9 | |
|---|---|
| Error | 24.11% |
| Cost | 13384 |
| Alternative 10 | |
|---|---|
| Error | 24.05% |
| Cost | 13248 |
| Alternative 11 | |
|---|---|
| Error | 24.06% |
| Cost | 13248 |
| Alternative 12 | |
|---|---|
| Error | 24.28% |
| Cost | 6985 |
| Alternative 13 | |
|---|---|
| Error | 39.94% |
| Cost | 6592 |
| Alternative 14 | |
|---|---|
| Error | 65.99% |
| Cost | 192 |
herbie shell --seed 2023115
(FPCore (r a b)
:name "rsin B (should all be same)"
:precision binary64
(* r (/ (sin b) (cos (+ a b)))))