
(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 16 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)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (cbrt (PI))) (t_1 (* (- b_m a_m) 2.0)) (t_2 (* (PI) angle)))
(if (<= (pow a_m 2.0) 4e+67)
(*
(* (cos (/ t_2 -180.0)) (+ b_m a_m))
(* (sin (* 0.005555555555555556 t_2)) t_1))
(*
(*
(* (sin (* (* (pow t_0 2.0) t_0) (* 0.005555555555555556 angle))) t_1)
(cos (* -0.005555555555555556 t_2)))
(+ b_m a_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
t_1 := \left(b\_m - a\_m\right) \cdot 2\\
t_2 := \mathsf{PI}\left(\right) \cdot angle\\
\mathbf{if}\;{a\_m}^{2} \leq 4 \cdot 10^{+67}:\\
\;\;\;\;\left(\cos \left(\frac{t\_2}{-180}\right) \cdot \left(b\_m + a\_m\right)\right) \cdot \left(\sin \left(0.005555555555555556 \cdot t\_2\right) \cdot t\_1\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\sin \left(\left({t\_0}^{2} \cdot t\_0\right) \cdot \left(0.005555555555555556 \cdot angle\right)\right) \cdot t\_1\right) \cdot \cos \left(-0.005555555555555556 \cdot t\_2\right)\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 3.99999999999999993e67Initial program 66.2%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6473.3
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval72.9
Applied rewrites72.9%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites74.3%
if 3.99999999999999993e67 < (pow.f64 a #s(literal 2 binary64)) Initial program 48.3%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6469.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval69.9
Applied rewrites69.9%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6471.8
Applied rewrites71.8%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites71.7%
rem-cube-cbrtN/A
lift-cbrt.f64N/A
pow3N/A
unpow2N/A
lift-pow.f64N/A
lower-*.f6475.2
Applied rewrites75.2%
Final simplification74.7%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (sqrt (PI))) (t_1 (* (PI) angle)))
(if (<= (pow a_m 2.0) 1e+282)
(*
(* (cos (/ t_1 -180.0)) (+ b_m a_m))
(* (sin (* 0.005555555555555556 t_1)) (* (- b_m a_m) 2.0)))
(*
(cos (/ 1.0 (/ (/ (/ 180.0 angle) t_0) t_0)))
(*
(* (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0) (- b_m a_m))
(+ b_m a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
t_1 := \mathsf{PI}\left(\right) \cdot angle\\
\mathbf{if}\;{a\_m}^{2} \leq 10^{+282}:\\
\;\;\;\;\left(\cos \left(\frac{t\_1}{-180}\right) \cdot \left(b\_m + a\_m\right)\right) \cdot \left(\sin \left(0.005555555555555556 \cdot t\_1\right) \cdot \left(\left(b\_m - a\_m\right) \cdot 2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\cos \left(\frac{1}{\frac{\frac{\frac{180}{angle}}{t\_0}}{t\_0}}\right) \cdot \left(\left(\left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 1.00000000000000003e282Initial program 63.8%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.5
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.2
Applied rewrites71.2%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites72.4%
if 1.00000000000000003e282 < (pow.f64 a #s(literal 2 binary64)) Initial program 41.8%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6472.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval72.8
Applied rewrites72.8%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6477.6
Applied rewrites77.6%
lift-/.f64N/A
lift-*.f64N/A
associate-/r*N/A
rem-square-sqrtN/A
lift-sqrt.f64N/A
lift-sqrt.f64N/A
associate-/r*N/A
lower-/.f64N/A
lower-/.f64N/A
lower-/.f6481.2
Applied rewrites81.2%
Final simplification74.6%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* (PI) angle)))
(if (<= (pow a_m 2.0) 1.18e+147)
(*
(* (cos (/ t_0 -180.0)) (+ b_m a_m))
(* (sin (* 0.005555555555555556 t_0)) (* (- b_m a_m) 2.0)))
(*
(sin (fma -0.005555555555555556 t_0 (* 0.5 (PI))))
(*
(* (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0) (- b_m a_m))
(+ b_m a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot angle\\
\mathbf{if}\;{a\_m}^{2} \leq 1.18 \cdot 10^{+147}:\\
\;\;\;\;\left(\cos \left(\frac{t\_0}{-180}\right) \cdot \left(b\_m + a\_m\right)\right) \cdot \left(\sin \left(0.005555555555555556 \cdot t\_0\right) \cdot \left(\left(b\_m - a\_m\right) \cdot 2\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(\mathsf{fma}\left(-0.005555555555555556, t\_0, 0.5 \cdot \mathsf{PI}\left(\right)\right)\right) \cdot \left(\left(\left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 1.18000000000000006e147Initial program 65.1%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6472.0
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.6
Applied rewrites71.6%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites73.5%
if 1.18000000000000006e147 < (pow.f64 a #s(literal 2 binary64)) Initial program 47.3%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.4
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.6
Applied rewrites71.6%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6474.1
Applied rewrites74.1%
lift-cos.f64N/A
cos-neg-revN/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
sin-+PI/2-revN/A
lower-sin.f64N/A
Applied rewrites76.1%
Final simplification74.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) -1e+299)
(*
1.0
(*
(* (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0) (- b_m a_m))
(+ b_m a_m)))
(*
(* (sin (* (* 0.005555555555555556 (* (PI) angle)) 2.0)) (- b_m a_m))
(+ b_m a_m))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -1 \cdot 10^{+299}:\\
\;\;\;\;1 \cdot \left(\left(\left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(\left(0.005555555555555556 \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right) \cdot 2\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -1.0000000000000001e299Initial program 51.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6474.3
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval76.3
Applied rewrites76.3%
Taylor expanded in angle around 0
Applied rewrites80.6%
if -1.0000000000000001e299 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 60.1%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.2
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval70.5
Applied rewrites70.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites71.5%
Final simplification73.3%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* (PI) angle)))
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) (- INFINITY))
(* (* (* t_0 a_m) a_m) -0.011111111111111112)
(*
(* (sin (* (* 0.005555555555555556 t_0) 2.0)) (- b_m a_m))
(+ b_m a_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot angle\\
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -\infty:\\
\;\;\;\;\left(\left(t\_0 \cdot a\_m\right) \cdot a\_m\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(\left(0.005555555555555556 \cdot t\_0\right) \cdot 2\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -inf.0Initial program 54.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6476.4
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval78.6
Applied rewrites78.6%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites56.8%
Taylor expanded in a around inf
Applied rewrites78.5%
Applied rewrites78.7%
if -inf.0 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 59.3%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6470.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval70.0
Applied rewrites70.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites71.1%
Final simplification72.5%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (cos (/ 1.0 (/ 180.0 (* (PI) angle)))) (* (* (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0) (- b_m a_m)) (+ b_m a_m))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\cos \left(\frac{1}{\frac{180}{\mathsf{PI}\left(\right) \cdot angle}}\right) \cdot \left(\left(\left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\right)
\end{array}
Initial program 58.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.6
Applied rewrites71.6%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6472.7
Applied rewrites72.7%
Final simplification72.7%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (* (* (sin (* (* 0.005555555555555556 angle) (PI))) (* (- b_m a_m) 2.0)) (cos (* -0.005555555555555556 (* (PI) angle)))) (+ b_m a_m)))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\left(\left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b\_m - a\_m\right) \cdot 2\right)\right) \cdot \cos \left(-0.005555555555555556 \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right)\right) \cdot \left(b\_m + a\_m\right)
\end{array}
Initial program 58.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.6
Applied rewrites71.6%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6472.7
Applied rewrites72.7%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites72.6%
Final simplification72.6%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (- (pow b_m 2.0) (pow a_m 2.0)) -4e-288) (* (* (* angle a_m) (* -0.011111111111111112 (PI))) a_m) (* (* (* (* b_m b_m) (PI)) 0.011111111111111112) angle)))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -4 \cdot 10^{-288}:\\
\;\;\;\;\left(\left(angle \cdot a\_m\right) \cdot \left(-0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right)\right) \cdot a\_m\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(b\_m \cdot b\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right) \cdot angle\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -4.00000000000000023e-288Initial program 58.2%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6467.9
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval68.9
Applied rewrites68.9%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites56.0%
Taylor expanded in a around inf
Applied rewrites65.2%
Applied rewrites65.3%
if -4.00000000000000023e-288 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 58.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6475.0
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval73.8
Applied rewrites73.8%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites58.7%
Taylor expanded in a around 0
Applied rewrites58.4%
Final simplification61.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(if (<= (/ angle 180.0) 5e-70)
(* (* (* (* (PI) (- b_m a_m)) angle) 0.011111111111111112) (+ b_m a_m))
(*
(* (+ b_m a_m) (- b_m a_m))
(sin (* (* 0.005555555555555556 (* (PI) angle)) 2.0)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 5 \cdot 10^{-70}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \sin \left(\left(0.005555555555555556 \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right) \cdot 2\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.9999999999999998e-70Initial program 63.2%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6480.7
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval80.9
Applied rewrites80.9%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6481.8
Applied rewrites81.8%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites80.9%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f6477.6
Applied rewrites77.6%
if 4.9999999999999998e-70 < (/.f64 angle #s(literal 180 binary64)) Initial program 47.6%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6451.4
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval50.4
Applied rewrites50.4%
Applied rewrites45.5%
Final simplification67.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(if (<= (/ angle 180.0) 6e-64)
(* (* (* (* (PI) (- b_m a_m)) angle) 0.011111111111111112) (+ b_m a_m))
(if (<= (/ angle 180.0) 2e+73)
(*
(fma (* (* angle angle) -1.54320987654321e-5) (* (PI) (PI)) 1.0)
(* (* (* 0.011111111111111112 angle) (PI)) (* (+ b_m a_m) (- b_m a_m))))
(*
(*
(* (/ (* (fma (- a_m) a_m (* b_m b_m)) (- b_m a_m)) (- b_m a_m)) (PI))
angle)
0.011111111111111112))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 6 \cdot 10^{-64}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{elif}\;\frac{angle}{180} \leq 2 \cdot 10^{+73}:\\
\;\;\;\;\mathsf{fma}\left(\left(angle \cdot angle\right) \cdot -1.54320987654321 \cdot 10^{-5}, \mathsf{PI}\left(\right) \cdot \mathsf{PI}\left(\right), 1\right) \cdot \left(\left(\left(0.011111111111111112 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{\mathsf{fma}\left(-a\_m, a\_m, b\_m \cdot b\_m\right) \cdot \left(b\_m - a\_m\right)}{b\_m - a\_m} \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 6.0000000000000001e-64Initial program 63.6%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6480.9
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval81.1
Applied rewrites81.1%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6482.0
Applied rewrites82.0%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites81.1%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f6477.9
Applied rewrites77.9%
if 6.0000000000000001e-64 < (/.f64 angle #s(literal 180 binary64)) < 1.99999999999999997e73Initial program 57.7%
Taylor expanded in angle around 0
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
+-commutativeN/A
lower-+.f64N/A
lower--.f6463.9
Applied rewrites63.9%
Taylor expanded in angle around 0
+-commutativeN/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-PI.f64N/A
lower-PI.f6466.0
Applied rewrites66.0%
if 1.99999999999999997e73 < (/.f64 angle #s(literal 180 binary64)) Initial program 38.3%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6440.6
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval40.9
Applied rewrites40.9%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites37.0%
Applied rewrites37.0%
Final simplification69.2%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(if (<= (/ angle 180.0) 2e+14)
(* (* (* (* (PI) (- b_m a_m)) angle) 0.011111111111111112) (+ b_m a_m))
(*
(*
(* (/ (* (fma (- a_m) a_m (* b_m b_m)) (- b_m a_m)) (- b_m a_m)) (PI))
angle)
0.011111111111111112)))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 2 \cdot 10^{+14}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\frac{\mathsf{fma}\left(-a\_m, a\_m, b\_m \cdot b\_m\right) \cdot \left(b\_m - a\_m\right)}{b\_m - a\_m} \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 2e14Initial program 65.8%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6482.1
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval82.3
Applied rewrites82.3%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6483.0
Applied rewrites83.0%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites82.2%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f6478.8
Applied rewrites78.8%
if 2e14 < (/.f64 angle #s(literal 180 binary64)) Initial program 34.0%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6437.3
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval36.0
Applied rewrites36.0%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites30.6%
Applied rewrites30.8%
Final simplification67.7%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (/ angle 180.0) 6e-64) (* (* (* (* (PI) (- b_m a_m)) angle) 0.011111111111111112) (+ b_m a_m)) (* (fma (- a_m) a_m (* b_m b_m)) (* (* 0.011111111111111112 angle) (PI)))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 6 \cdot 10^{-64}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(-a\_m, a\_m, b\_m \cdot b\_m\right) \cdot \left(\left(0.011111111111111112 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 6.0000000000000001e-64Initial program 63.6%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6480.9
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval81.1
Applied rewrites81.1%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6482.0
Applied rewrites82.0%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites81.1%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f6477.9
Applied rewrites77.9%
if 6.0000000000000001e-64 < (/.f64 angle #s(literal 180 binary64)) Initial program 46.2%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6450.2
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval49.1
Applied rewrites49.1%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites43.7%
Applied rewrites43.7%
Final simplification67.7%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (/ angle 180.0) 8e-79) (* (* (* (* (PI) (- b_m a_m)) angle) 0.011111111111111112) (+ b_m a_m)) (* (* (fma (- a_m) a_m (* b_m b_m)) (* 0.011111111111111112 angle)) (PI))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 8 \cdot 10^{-79}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\mathsf{fma}\left(-a\_m, a\_m, b\_m \cdot b\_m\right) \cdot \left(0.011111111111111112 \cdot angle\right)\right) \cdot \mathsf{PI}\left(\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 8e-79Initial program 62.6%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6480.4
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval80.6
Applied rewrites80.6%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6481.5
Applied rewrites81.5%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites80.6%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f6477.2
Applied rewrites77.2%
if 8e-79 < (/.f64 angle #s(literal 180 binary64)) Initial program 49.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6453.2
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval52.2
Applied rewrites52.2%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites47.1%
Applied rewrites47.1%
Final simplification67.7%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (/ angle 180.0) 1e-25) (* (* (* (* (PI) (- b_m a_m)) angle) 0.011111111111111112) (+ b_m a_m)) (* (* (* (* (+ b_m a_m) (- b_m a_m)) (PI)) angle) 0.011111111111111112)))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 10^{-25}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m - a\_m\right)\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.00000000000000004e-25Initial program 65.0%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6481.6
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval81.8
Applied rewrites81.8%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
clear-numN/A
lower-/.f64N/A
lower-/.f64N/A
*-commutativeN/A
lower-*.f6482.6
Applied rewrites82.6%
lift-*.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-/.f64N/A
clear-num-revN/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
Applied rewrites81.8%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
lower--.f6478.7
Applied rewrites78.7%
if 1.00000000000000004e-25 < (/.f64 angle #s(literal 180 binary64)) Initial program 40.8%
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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6445.1
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval44.0
Applied rewrites44.0%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites38.0%
Applied rewrites33.6%
Final simplification66.5%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (* (* angle a_m) (* -0.011111111111111112 (PI))) a_m))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\left(\left(angle \cdot a\_m\right) \cdot \left(-0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right)\right) \cdot a\_m
\end{array}
Initial program 58.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.6
Applied rewrites71.6%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites57.5%
Taylor expanded in a around inf
Applied rewrites42.2%
Applied rewrites42.2%
Final simplification42.2%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (* (* (* (PI) angle) a_m) a_m) -0.011111111111111112))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\left(\left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right) \cdot a\_m\right) \cdot -0.011111111111111112
\end{array}
Initial program 58.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
lower-+.f64N/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6471.8
lift-/.f64N/A
clear-numN/A
associate-/r/N/A
lower-*.f64N/A
metadata-eval71.6
Applied rewrites71.6%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites57.5%
Taylor expanded in a around inf
Applied rewrites42.2%
Applied rewrites42.2%
Final simplification42.2%
herbie shell --seed 2024298
(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)))))