
(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 15 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 (pow (cbrt (sqrt (PI))) 3.0)))
(*
angle_s
(if (<= (/ angle_m 180.0) 2e+132)
(*
(*
(+ a_m b_m)
(*
(- b_m a_m)
(* (sin (* (* 0.005555555555555556 angle_m) (PI))) 2.0)))
(cos (* (* t_0 t_0) (/ angle_m 180.0))))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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(\sqrt[3]{\sqrt{\mathsf{PI}\left(\right)}}\right)}^{3}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 2 \cdot 10^{+132}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\left(t\_0 \cdot t\_0\right) \cdot \frac{angle\_m}{180}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.99999999999999998e132Initial program 61.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6472.3
Applied rewrites72.1%
rem-cube-cbrtN/A
lift-PI.f64N/A
add-sqr-sqrtN/A
cbrt-prodN/A
unpow-prod-downN/A
lower-*.f64N/A
lower-pow.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lower-pow.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f6474.5
Applied rewrites74.5%
if 1.99999999999999998e132 < (/.f64 angle #s(literal 180 binary64)) Initial program 36.2%
Taylor expanded in angle around 0
Applied rewrites37.1%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6432.7
Applied rewrites32.7%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6439.5
Applied rewrites39.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
(let* ((t_0 (cbrt (PI))))
(*
angle_s
(if (<= (/ angle_m 180.0) 2e+132)
(*
(*
(+ a_m b_m)
(*
(- b_m a_m)
(* (sin (* (* 0.005555555555555556 angle_m) (PI))) 2.0)))
(cos (* (* (* angle_m 0.005555555555555556) (pow t_0 2.0)) t_0)))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 2 \cdot 10^{+132}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\left(\left(angle\_m \cdot 0.005555555555555556\right) \cdot {t\_0}^{2}\right) \cdot t\_0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.99999999999999998e132Initial program 61.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6472.3
Applied rewrites72.1%
lift-*.f64N/A
lift-/.f64N/A
div-invN/A
metadata-evalN/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
pow2N/A
lower-pow.f64N/A
lift-PI.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-cbrt.f6475.1
Applied rewrites75.1%
if 1.99999999999999998e132 < (/.f64 angle #s(literal 180 binary64)) Initial program 36.2%
Taylor expanded in angle around 0
Applied rewrites37.1%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6432.7
Applied rewrites32.7%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6439.5
Applied rewrites39.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
(let* ((t_0 (sqrt (PI))))
(*
angle_s
(if (<= (/ angle_m 180.0) 2e+132)
(*
(*
(+ a_m b_m)
(*
(- b_m a_m)
(* (sin (* (* 0.005555555555555556 angle_m) (PI))) 2.0)))
(cos (* (/ t_0 180.0) (/ t_0 (pow angle_m -1.0)))))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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 := \sqrt{\mathsf{PI}\left(\right)}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 2 \cdot 10^{+132}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\frac{t\_0}{180} \cdot \frac{t\_0}{{angle\_m}^{-1}}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.99999999999999998e132Initial program 61.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6472.3
Applied rewrites72.1%
lift-*.f64N/A
lift-/.f64N/A
clear-numN/A
un-div-invN/A
lift-PI.f64N/A
add-sqr-sqrtN/A
div-invN/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lower-/.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
inv-powN/A
lower-pow.f6474.4
Applied rewrites74.4%
if 1.99999999999999998e132 < (/.f64 angle #s(literal 180 binary64)) Initial program 36.2%
Taylor expanded in angle around 0
Applied rewrites37.1%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6432.7
Applied rewrites32.7%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6439.5
Applied rewrites39.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 180.0) 1e+97)
(*
(/
(sin (* (* 0.011111111111111112 (PI)) angle_m))
(- (pow (- b_m a_m) -1.0)))
(/ -1.0 (pow (+ b_m a_m) -1.0)))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 10^{+97}:\\
\;\;\;\;\frac{\sin \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)}{-{\left(b\_m - a\_m\right)}^{-1}} \cdot \frac{-1}{{\left(b\_m + a\_m\right)}^{-1}}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.0000000000000001e97Initial program 62.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
flip--N/A
clear-numN/A
associate-*l/N/A
Applied rewrites62.7%
lift-/.f64N/A
frac-2negN/A
*-rgt-identityN/A
distribute-rgt-neg-inN/A
metadata-evalN/A
lift-pow.f64N/A
lift-*.f64N/A
unpow-prod-downN/A
distribute-lft-neg-inN/A
times-fracN/A
lower-*.f64N/A
Applied rewrites73.0%
if 1.0000000000000001e97 < (/.f64 angle #s(literal 180 binary64)) Initial program 34.7%
Taylor expanded in angle around 0
Applied rewrites35.5%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6431.6
Applied rewrites31.6%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6438.0
Applied rewrites38.0%
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 180.0) 1e+97)
(/
(/ (sin (* (* 0.011111111111111112 (PI)) angle_m)) (pow (- b_m a_m) -1.0))
(pow (+ b_m a_m) -1.0))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 10^{+97}:\\
\;\;\;\;\frac{\frac{\sin \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)}{{\left(b\_m - a\_m\right)}^{-1}}}{{\left(b\_m + a\_m\right)}^{-1}}\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.0000000000000001e97Initial program 62.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
flip--N/A
clear-numN/A
associate-*l/N/A
Applied rewrites62.7%
lift-/.f64N/A
lift-pow.f64N/A
lift-*.f64N/A
unpow-prod-downN/A
associate-/r*N/A
lower-/.f64N/A
Applied rewrites73.0%
if 1.0000000000000001e97 < (/.f64 angle #s(literal 180 binary64)) Initial program 34.7%
Taylor expanded in angle around 0
Applied rewrites35.5%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6431.6
Applied rewrites31.6%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6438.0
Applied rewrites38.0%
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 180.0) 1.5e+37)
(*
(*
(+ a_m b_m)
(* (- b_m a_m) (* (sin (* (* 0.005555555555555556 angle_m) (PI))) 2.0)))
(cos (* (PI) (/ angle_m 180.0))))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 1.5 \cdot 10^{+37}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\mathsf{PI}\left(\right) \cdot \frac{angle\_m}{180}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.50000000000000011e37Initial program 63.9%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6475.0
Applied rewrites74.8%
if 1.50000000000000011e37 < (/.f64 angle #s(literal 180 binary64)) Initial program 32.4%
Taylor expanded in angle around 0
Applied rewrites33.5%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6429.8
Applied rewrites29.8%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6435.8
Applied rewrites35.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 (<= (pow a_m 2.0) 5e+304)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle_m (PI)) 0.011111111111111112))))
(* (* (* (PI) angle_m) (* -0.011111111111111112 a_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}\;{a\_m}^{2} \leq 5 \cdot 10^{+304}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle\_m \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right) \cdot a\_m\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 4.9999999999999997e304Initial program 59.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites63.9%
if 4.9999999999999997e304 < (pow.f64 a #s(literal 2 binary64)) Initial program 50.1%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.1
Applied rewrites57.1%
Taylor expanded in a around inf
Applied rewrites58.8%
Applied rewrites74.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 (<= (- (pow b_m 2.0) (pow a_m 2.0)) -2e-195)
(* (* (* (PI) angle_m) (* -0.011111111111111112 a_m)) a_m)
(* (* (* (PI) (* b_m b_m)) 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}^{2} - {a\_m}^{2} \leq -2 \cdot 10^{-195}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right) \cdot a\_m\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m \cdot b\_m\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -2.0000000000000002e-195Initial program 54.8%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6455.3
Applied rewrites55.3%
Taylor expanded in a around inf
Applied rewrites55.3%
Applied rewrites64.0%
if -2.0000000000000002e-195 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 59.4%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6451.0
Applied rewrites51.0%
Taylor expanded in a around 0
Applied rewrites53.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 180.0) 1e+97)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle_m (PI)) 0.011111111111111112))))
(*
(*
(*
(sin (* (* (PI) angle_m) 0.005555555555555556))
(* (+ b_m a_m) (- b_m a_m)))
2.0)
1.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)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 10^{+97}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle\_m \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.005555555555555556\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot 2\right) \cdot 1\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.0000000000000001e97Initial program 62.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites72.1%
if 1.0000000000000001e97 < (/.f64 angle #s(literal 180 binary64)) Initial program 34.7%
Taylor expanded in angle around 0
Applied rewrites35.5%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
unpow2N/A
unpow2N/A
times-fracN/A
metadata-evalN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f6431.6
Applied rewrites31.6%
Taylor expanded in angle around inf
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
+-commutativeN/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
lower--.f6438.0
Applied rewrites38.0%
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 (PI)) angle_m)))
(*
angle_s
(if (<= (/ angle_m 180.0) 5e-40)
(* (+ b_m a_m) (* (- b_m a_m) t_0))
(* (* (+ b_m a_m) (- b_m a_m)) (sin 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(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 5 \cdot 10^{-40}:\\
\;\;\;\;\left(b\_m + a\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot t\_0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \sin t\_0\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.99999999999999965e-40Initial program 63.0%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6460.2
Applied rewrites60.2%
Applied rewrites69.8%
if 4.99999999999999965e-40 < (/.f64 angle #s(literal 180 binary64)) Initial program 43.5%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6443.4
Applied rewrites41.8%
Applied rewrites40.3%
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 180.0) 5e-7)
(* (+ b_m a_m) (* (- b_m a_m) (* (* 0.011111111111111112 (PI)) angle_m)))
(* (sin (* (* (PI) angle_m) 0.011111111111111112)) (* b_m b_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}\;\frac{angle\_m}{180} \leq 5 \cdot 10^{-7}:\\
\;\;\;\;\left(b\_m + a\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m \cdot b\_m\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.99999999999999977e-7Initial program 64.1%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6461.5
Applied rewrites61.5%
Applied rewrites70.7%
if 4.99999999999999977e-7 < (/.f64 angle #s(literal 180 binary64)) Initial program 38.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
flip--N/A
clear-numN/A
associate-*l/N/A
Applied rewrites34.8%
Taylor expanded in a around 0
*-commutativeN/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
lower-*.f6424.1
Applied rewrites24.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
(*
angle_s
(if (<= (/ angle_m 180.0) 5e+166)
(* (+ b_m a_m) (* (- b_m a_m) (* (* 0.011111111111111112 (PI)) angle_m)))
(* (* (* -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 \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 5 \cdot 10^{+166}:\\
\;\;\;\;\left(b\_m + a\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot a\_m\right) \cdot a\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot angle\_m\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 5.0000000000000002e166Initial program 60.5%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6456.8
Applied rewrites56.8%
Applied rewrites64.7%
if 5.0000000000000002e166 < (/.f64 angle #s(literal 180 binary64)) Initial program 37.6%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6423.6
Applied rewrites23.6%
Taylor expanded in a around inf
Applied rewrites30.8%
Applied rewrites30.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 (* (* (* (PI) angle_m) (* -0.011111111111111112 a_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 \left(\left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right) \cdot a\_m\right)
\end{array}
Initial program 57.6%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6452.6
Applied rewrites52.6%
Taylor expanded in a around inf
Applied rewrites36.8%
Applied rewrites39.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 (* (* a_m (PI)) (* 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 \left(\left(a\_m \cdot \mathsf{PI}\left(\right)\right) \cdot \left(angle\_m \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\right)
\end{array}
Initial program 57.6%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6452.6
Applied rewrites52.6%
Taylor expanded in a around inf
Applied rewrites36.8%
Applied rewrites39.3%
Applied rewrites39.3%
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 57.6%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6452.6
Applied rewrites52.6%
Taylor expanded in a around inf
Applied rewrites36.8%
Applied rewrites39.3%
herbie shell --seed 2024309
(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)))))