
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* (PI) (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t\_0\right) \cdot \cos t\_0
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 18 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* (PI) (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t\_0\right) \cdot \cos t\_0
\end{array}
\end{array}
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(let* ((t_0 (* (PI) angle_m))
(t_1 (/ (PI) 2.0))
(t_2 (sin (* (/ angle_m 180.0) (PI))))
(t_3 (* (+ a_m b_m) 2.0)))
(*
angle_s
(if (<= a_m 5.8e+15)
(*
(- b_m a_m)
(*
t_3
(*
(sin (* t_0 0.005555555555555556))
(cos (* -0.005555555555555556 t_0)))))
(if (<= a_m 1.45e+254)
(*
(- b_m a_m)
(*
t_3
(* (sin (fma (- (PI)) (* 0.005555555555555556 angle_m) t_1)) t_2)))
(*
(- b_m a_m)
(*
t_3
(* (sin (fma (PI) (* 0.005555555555555556 angle_m) t_1)) t_2))))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot angle\_m\\
t_1 := \frac{\mathsf{PI}\left(\right)}{2}\\
t_2 := \sin \left(\frac{angle\_m}{180} \cdot \mathsf{PI}\left(\right)\right)\\
t_3 := \left(a\_m + b\_m\right) \cdot 2\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a\_m \leq 5.8 \cdot 10^{+15}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(t\_3 \cdot \left(\sin \left(t\_0 \cdot 0.005555555555555556\right) \cdot \cos \left(-0.005555555555555556 \cdot t\_0\right)\right)\right)\\
\mathbf{elif}\;a\_m \leq 1.45 \cdot 10^{+254}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(t\_3 \cdot \left(\sin \left(\mathsf{fma}\left(-\mathsf{PI}\left(\right), 0.005555555555555556 \cdot angle\_m, t\_1\right)\right) \cdot t\_2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(t\_3 \cdot \left(\sin \left(\mathsf{fma}\left(\mathsf{PI}\left(\right), 0.005555555555555556 \cdot angle\_m, t\_1\right)\right) \cdot t\_2\right)\right)\\
\end{array}
\end{array}
\end{array}
if a < 5.8e15Initial program 53.1%
Taylor expanded in angle around 0
Applied rewrites53.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites55.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6463.6
Applied rewrites63.6%
Taylor expanded in angle around inf
Applied rewrites66.9%
if 5.8e15 < a < 1.45e254Initial program 36.0%
Taylor expanded in angle around 0
Applied rewrites35.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites42.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6455.2
Applied rewrites55.2%
lift-cos.f64N/A
cos-neg-revN/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
distribute-lft-neg-inN/A
lower-fma.f64N/A
lower-neg.f64N/A
lift-PI.f64N/A
lower-/.f6456.3
Applied rewrites56.3%
if 1.45e254 < a Initial program 25.3%
Taylor expanded in angle around 0
Applied rewrites25.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites48.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6469.2
Applied rewrites69.2%
lift-cos.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-fma.f64N/A
lift-PI.f64N/A
lower-/.f6484.6
Applied rewrites84.6%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(let* ((t_0 (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0)))))
(*
angle_s
(if (<= t_0 -2e-303)
(* (* (PI) a_m) (* angle_m (* -0.011111111111111112 a_m)))
(if (<= t_0 INFINITY)
(* (* (* (PI) (* b_m b_m)) angle_m) 0.011111111111111112)
(* (* -0.011111111111111112 a_m) (* a_m (* (PI) angle_m))))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := 2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right)\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;t\_0 \leq -2 \cdot 10^{-303}:\\
\;\;\;\;\left(\mathsf{PI}\left(\right) \cdot a\_m\right) \cdot \left(angle\_m \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\\
\mathbf{elif}\;t\_0 \leq \infty:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m \cdot b\_m\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot a\_m\right) \cdot \left(a\_m \cdot \left(\mathsf{PI}\left(\right) \cdot angle\_m\right)\right)\\
\end{array}
\end{array}
\end{array}
if (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < -1.99999999999999986e-303Initial program 46.7%
Taylor expanded in angle around 0
Applied rewrites47.3%
Taylor expanded in a around inf
Applied rewrites47.3%
Applied rewrites55.5%
Applied rewrites55.6%
if -1.99999999999999986e-303 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < +inf.0Initial program 57.8%
Taylor expanded in angle around 0
Applied rewrites58.8%
Taylor expanded in a around 0
Applied rewrites58.8%
if +inf.0 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 0.0%
Taylor expanded in angle around 0
Applied rewrites69.6%
Taylor expanded in a around inf
Applied rewrites69.1%
Applied rewrites75.1%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(let* ((t_0 (* (PI) angle_m)) (t_1 (* (+ a_m b_m) 2.0)))
(*
angle_s
(if (<= angle_m 3.3e+243)
(*
(- b_m a_m)
(*
t_1
(*
(sin (* t_0 0.005555555555555556))
(cos (* -0.005555555555555556 t_0)))))
(* (- b_m a_m) (* t_1 (* 1.0 (sin (* (/ angle_m 180.0) (PI))))))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot angle\_m\\
t_1 := \left(a\_m + b\_m\right) \cdot 2\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 3.3 \cdot 10^{+243}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(t\_1 \cdot \left(\sin \left(t\_0 \cdot 0.005555555555555556\right) \cdot \cos \left(-0.005555555555555556 \cdot t\_0\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(t\_1 \cdot \left(1 \cdot \sin \left(\frac{angle\_m}{180} \cdot \mathsf{PI}\left(\right)\right)\right)\right)\\
\end{array}
\end{array}
\end{array}
if angle < 3.29999999999999994e243Initial program 50.6%
Taylor expanded in angle around 0
Applied rewrites51.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites55.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6465.6
Applied rewrites65.6%
Taylor expanded in angle around inf
Applied rewrites68.9%
if 3.29999999999999994e243 < angle Initial program 19.1%
Taylor expanded in angle around 0
Applied rewrites11.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites11.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6411.6
Applied rewrites11.6%
Taylor expanded in angle around 0
Applied rewrites31.9%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) -2e-303)
(* (* (PI) a_m) (* angle_m (* -0.011111111111111112 a_m)))
(* (* (* 0.011111111111111112 angle_m) (PI)) (* b_m (- b_m a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq -2 \cdot 10^{-303}:\\
\;\;\;\;\left(\mathsf{PI}\left(\right) \cdot a\_m\right) \cdot \left(angle\_m \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(b\_m \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < -1.99999999999999986e-303Initial program 46.7%
Taylor expanded in angle around 0
Applied rewrites47.3%
Taylor expanded in a around inf
Applied rewrites47.3%
Applied rewrites55.5%
Applied rewrites55.6%
if -1.99999999999999986e-303 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 50.7%
Taylor expanded in angle around 0
Applied rewrites60.1%
Taylor expanded in a around 0
Applied rewrites58.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= b_m 6.8e+149)
(*
(- b_m a_m)
(* (* (+ a_m b_m) 2.0) (* 1.0 (sin (* (/ angle_m 180.0) (PI))))))
(*
(* (- b_m a_m) (* (+ a_m b_m) (* (PI) (* 0.011111111111111112 angle_m))))
(cos (* (* angle_m (PI)) 0.005555555555555556))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;b\_m \leq 6.8 \cdot 10^{+149}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(a\_m + b\_m\right) \cdot 2\right) \cdot \left(1 \cdot \sin \left(\frac{angle\_m}{180} \cdot \mathsf{PI}\left(\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b\_m - a\_m\right) \cdot \left(\left(a\_m + b\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\right)\right)\right) \cdot \cos \left(\left(angle\_m \cdot \mathsf{PI}\left(\right)\right) \cdot 0.005555555555555556\right)\\
\end{array}
\end{array}
if b < 6.7999999999999997e149Initial program 50.0%
Taylor expanded in angle around 0
Applied rewrites51.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites53.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6461.7
Applied rewrites61.7%
Taylor expanded in angle around 0
Applied rewrites65.0%
if 6.7999999999999997e149 < b Initial program 39.0%
Taylor expanded in angle around 0
Applied rewrites66.8%
Applied rewrites86.1%
Taylor expanded in angle around 0
Applied rewrites89.5%
Final simplification67.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= b_m 4.9e-101)
(* (* (* -2.0 (* a_m a_m)) (sin (* (PI) (/ angle_m 180.0)))) 1.0)
(*
(* (- b_m a_m) (* (+ a_m b_m) (* (PI) (* 0.011111111111111112 angle_m))))
(cos (* (* angle_m (PI)) 0.005555555555555556))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;b\_m \leq 4.9 \cdot 10^{-101}:\\
\;\;\;\;\left(\left(-2 \cdot \left(a\_m \cdot a\_m\right)\right) \cdot \sin \left(\mathsf{PI}\left(\right) \cdot \frac{angle\_m}{180}\right)\right) \cdot 1\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b\_m - a\_m\right) \cdot \left(\left(a\_m + b\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\right)\right)\right) \cdot \cos \left(\left(angle\_m \cdot \mathsf{PI}\left(\right)\right) \cdot 0.005555555555555556\right)\\
\end{array}
\end{array}
if b < 4.9e-101Initial program 47.0%
Taylor expanded in a around inf
Applied rewrites35.5%
Taylor expanded in angle around 0
Applied rewrites40.8%
if 4.9e-101 < b Initial program 53.2%
Taylor expanded in angle around 0
Applied rewrites58.7%
Applied rewrites72.0%
Taylor expanded in angle around 0
Applied rewrites73.3%
Final simplification49.7%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 7.8e+45)
(*
(- b_m a_m)
(* (* (+ a_m b_m) 2.0) (* (* (PI) angle_m) 0.005555555555555556)))
(*
(* (* (* 0.011111111111111112 angle_m) (PI)) (* (+ b_m a_m) (- b_m a_m)))
(cos (* (* angle_m (PI)) 0.005555555555555556))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 7.8 \cdot 10^{+45}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(a\_m + b\_m\right) \cdot 2\right) \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot \cos \left(\left(angle\_m \cdot \mathsf{PI}\left(\right)\right) \cdot 0.005555555555555556\right)\\
\end{array}
\end{array}
if angle < 7.7999999999999999e45Initial program 56.0%
Taylor expanded in angle around 0
Applied rewrites56.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites61.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6474.0
Applied rewrites74.0%
Taylor expanded in angle around 0
Applied rewrites72.4%
if 7.7999999999999999e45 < angle Initial program 27.8%
Taylor expanded in angle around 0
Applied rewrites34.5%
Taylor expanded in angle around 0
Applied rewrites34.4%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= b_m 1e-157)
(* (* (* -2.0 (* a_m a_m)) (sin (* (PI) (/ angle_m 180.0)))) 1.0)
(*
(- b_m a_m)
(* (* (* (+ a_m b_m) (PI)) angle_m) 0.011111111111111112)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;b\_m \leq 10^{-157}:\\
\;\;\;\;\left(\left(-2 \cdot \left(a\_m \cdot a\_m\right)\right) \cdot \sin \left(\mathsf{PI}\left(\right) \cdot \frac{angle\_m}{180}\right)\right) \cdot 1\\
\mathbf{else}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(\left(a\_m + b\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right)\\
\end{array}
\end{array}
if b < 9.99999999999999943e-158Initial program 45.8%
Taylor expanded in a around inf
Applied rewrites32.9%
Taylor expanded in angle around 0
Applied rewrites38.7%
if 9.99999999999999943e-158 < b Initial program 54.4%
Taylor expanded in angle around 0
Applied rewrites51.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites57.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6469.1
Applied rewrites69.1%
Taylor expanded in angle around 0
Applied rewrites64.5%
Final simplification47.6%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(let* ((t_0
(*
(* (* 0.011111111111111112 angle_m) (PI))
(* (+ b_m a_m) (- b_m a_m)))))
(*
angle_s
(if (<= angle_m 4.9e+58)
(*
(- b_m a_m)
(* (* (+ a_m b_m) 2.0) (* (* (PI) angle_m) 0.005555555555555556)))
(if (<= angle_m 2.2e+150)
(*
t_0
(fma (* -1.54320987654321e-5 (* angle_m angle_m)) (* (PI) (PI)) 1.0))
t_0)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 4.9 \cdot 10^{+58}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(a\_m + b\_m\right) \cdot 2\right) \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right)\right)\\
\mathbf{elif}\;angle\_m \leq 2.2 \cdot 10^{+150}:\\
\;\;\;\;t\_0 \cdot \mathsf{fma}\left(-1.54320987654321 \cdot 10^{-5} \cdot \left(angle\_m \cdot angle\_m\right), \mathsf{PI}\left(\right) \cdot \mathsf{PI}\left(\right), 1\right)\\
\mathbf{else}:\\
\;\;\;\;t\_0\\
\end{array}
\end{array}
\end{array}
if angle < 4.90000000000000018e58Initial program 55.5%
Taylor expanded in angle around 0
Applied rewrites56.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites60.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6473.1
Applied rewrites73.1%
Taylor expanded in angle around 0
Applied rewrites71.5%
if 4.90000000000000018e58 < angle < 2.19999999999999999e150Initial program 29.2%
Taylor expanded in angle around 0
Applied rewrites27.4%
Taylor expanded in angle around 0
Applied rewrites44.8%
if 2.19999999999999999e150 < angle Initial program 26.7%
Taylor expanded in angle around 0
Applied rewrites35.7%
Final simplification63.6%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 0.00096)
(*
(- b_m a_m)
(* (* (+ a_m b_m) 2.0) (* (* (PI) angle_m) 0.005555555555555556)))
(*
(* (* 0.011111111111111112 angle_m) (PI))
(/ (* (- b_m a_m) (* (- b_m a_m) (+ a_m b_m))) (- b_m a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 0.00096:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(a\_m + b\_m\right) \cdot 2\right) \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \frac{\left(b\_m - a\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(a\_m + b\_m\right)\right)}{b\_m - a\_m}\\
\end{array}
\end{array}
if angle < 9.60000000000000024e-4Initial program 56.9%
Taylor expanded in angle around 0
Applied rewrites57.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites62.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6475.7
Applied rewrites75.7%
Taylor expanded in angle around 0
Applied rewrites72.8%
if 9.60000000000000024e-4 < angle Initial program 28.7%
Taylor expanded in angle around 0
Applied rewrites34.3%
Applied rewrites34.4%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 6.5e-51)
(*
(- b_m a_m)
(* (* (+ a_m b_m) 2.0) (* (* (PI) angle_m) 0.005555555555555556)))
(*
(* (* (PI) (- b_m a_m)) (+ a_m b_m))
(* 0.011111111111111112 angle_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 6.5 \cdot 10^{-51}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(a\_m + b\_m\right) \cdot 2\right) \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(a\_m + b\_m\right)\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\\
\end{array}
\end{array}
if angle < 6.5000000000000003e-51Initial program 55.2%
Taylor expanded in angle around 0
Applied rewrites55.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites60.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6474.4
Applied rewrites74.4%
Taylor expanded in angle around 0
Applied rewrites71.4%
if 6.5000000000000003e-51 < angle Initial program 35.2%
Taylor expanded in angle around 0
Applied rewrites41.4%
Applied rewrites41.4%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 6e-51)
(* (- b_m a_m) (* (* (* (+ a_m b_m) (PI)) angle_m) 0.011111111111111112))
(*
(* (* (PI) (- b_m a_m)) (+ a_m b_m))
(* 0.011111111111111112 angle_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 6 \cdot 10^{-51}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(\left(\left(a\_m + b\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(a\_m + b\_m\right)\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\\
\end{array}
\end{array}
if angle < 6.00000000000000005e-51Initial program 55.2%
Taylor expanded in angle around 0
Applied rewrites55.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites60.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f6474.4
Applied rewrites74.4%
Taylor expanded in angle around 0
Applied rewrites71.4%
if 6.00000000000000005e-51 < angle Initial program 35.2%
Taylor expanded in angle around 0
Applied rewrites41.4%
Applied rewrites41.4%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 1.85e-51)
(* (- b_m a_m) (* (+ a_m b_m) (* (PI) (* 0.011111111111111112 angle_m))))
(*
(* (* (PI) (- b_m a_m)) (+ a_m b_m))
(* 0.011111111111111112 angle_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 1.85 \cdot 10^{-51}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(a\_m + b\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(a\_m + b\_m\right)\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\\
\end{array}
\end{array}
if angle < 1.84999999999999987e-51Initial program 55.2%
Taylor expanded in angle around 0
Applied rewrites59.9%
Applied rewrites71.3%
if 1.84999999999999987e-51 < angle Initial program 35.2%
Taylor expanded in angle around 0
Applied rewrites41.4%
Applied rewrites41.4%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= a_m 1.05e+155)
(* (* (* (PI) (- b_m a_m)) (+ a_m b_m)) (* 0.011111111111111112 angle_m))
(* (* (PI) a_m) (* angle_m (* -0.011111111111111112 a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a\_m \leq 1.05 \cdot 10^{+155}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(a\_m + b\_m\right)\right) \cdot \left(0.011111111111111112 \cdot angle\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\mathsf{PI}\left(\right) \cdot a\_m\right) \cdot \left(angle\_m \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\\
\end{array}
\end{array}
if a < 1.05e155Initial program 50.8%
Taylor expanded in angle around 0
Applied rewrites52.2%
Applied rewrites52.3%
if 1.05e155 < a Initial program 34.6%
Taylor expanded in angle around 0
Applied rewrites65.1%
Taylor expanded in a around inf
Applied rewrites59.1%
Applied rewrites78.7%
Applied rewrites78.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= a_m 1.05e+155)
(* (* (* 0.011111111111111112 angle_m) (PI)) (* (+ b_m a_m) (- b_m a_m)))
(* (* (PI) a_m) (* angle_m (* -0.011111111111111112 a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a\_m \leq 1.05 \cdot 10^{+155}:\\
\;\;\;\;\left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\mathsf{PI}\left(\right) \cdot a\_m\right) \cdot \left(angle\_m \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\\
\end{array}
\end{array}
if a < 1.05e155Initial program 50.8%
Taylor expanded in angle around 0
Applied rewrites52.2%
if 1.05e155 < a Initial program 34.6%
Taylor expanded in angle around 0
Applied rewrites65.1%
Taylor expanded in a around inf
Applied rewrites59.1%
Applied rewrites78.7%
Applied rewrites78.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 1e+114)
(* (* (PI) a_m) (* angle_m (* -0.011111111111111112 a_m)))
(* (* -0.011111111111111112 (* a_m a_m)) (* angle_m (PI))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 10^{+114}:\\
\;\;\;\;\left(\mathsf{PI}\left(\right) \cdot a\_m\right) \cdot \left(angle\_m \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot \left(a\_m \cdot a\_m\right)\right) \cdot \left(angle\_m \cdot \mathsf{PI}\left(\right)\right)\\
\end{array}
\end{array}
if angle < 1e114Initial program 54.2%
Taylor expanded in angle around 0
Applied rewrites58.4%
Taylor expanded in a around inf
Applied rewrites38.9%
Applied rewrites42.5%
Applied rewrites42.6%
if 1e114 < angle Initial program 25.7%
Taylor expanded in angle around 0
Applied rewrites34.7%
Taylor expanded in a around inf
Applied rewrites28.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 1e+114)
(* (* -0.011111111111111112 a_m) (* a_m (* (PI) angle_m)))
(* (* -0.011111111111111112 (* a_m a_m)) (* angle_m (PI))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 10^{+114}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot a\_m\right) \cdot \left(a\_m \cdot \left(\mathsf{PI}\left(\right) \cdot angle\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot \left(a\_m \cdot a\_m\right)\right) \cdot \left(angle\_m \cdot \mathsf{PI}\left(\right)\right)\\
\end{array}
\end{array}
if angle < 1e114Initial program 54.2%
Taylor expanded in angle around 0
Applied rewrites58.4%
Taylor expanded in a around inf
Applied rewrites38.9%
Applied rewrites42.5%
if 1e114 < angle Initial program 25.7%
Taylor expanded in angle around 0
Applied rewrites34.7%
Taylor expanded in a around inf
Applied rewrites28.5%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) angle\_m = (fabs.f64 angle) angle\_s = (copysign.f64 #s(literal 1 binary64) angle) (FPCore (angle_s a_m b_m angle_m) :precision binary64 (* angle_s (* (* -0.011111111111111112 a_m) (* a_m (* (PI) angle_m)))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \left(\left(-0.011111111111111112 \cdot a\_m\right) \cdot \left(a\_m \cdot \left(\mathsf{PI}\left(\right) \cdot angle\_m\right)\right)\right)
\end{array}
Initial program 48.7%
Taylor expanded in angle around 0
Applied rewrites53.9%
Taylor expanded in a around inf
Applied rewrites36.9%
Applied rewrites39.1%
herbie shell --seed 2025018
(FPCore (a b angle)
:name "ab-angle->ABCF B"
:precision binary64
(* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin (* (PI) (/ angle 180.0)))) (cos (* (PI) (/ angle 180.0)))))