
(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 21 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}
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (cbrt (PI))) (t_1 (* (PI) angle_m)))
(*
angle_s
(if (<= angle_m 3.4e+161)
(*
(+ a b)
(* (- b a) (sin (* 2.0 (* angle_m (/ (cbrt (pow (PI) 3.0)) 180.0))))))
(if (<= angle_m 3.2e+253)
(*
(+ a b)
(*
(- b a)
(/
(+
(+
(sin (* (* (PI) (/ angle_m 180.0)) 2.0))
(sin (/ (fma (- angle_m) (PI) t_1) -180.0)))
(+ (sin (* t_1 0.011111111111111112)) (sin 0.0)))
2.0)))
(*
(+ a b)
(*
(- b a)
(sin (* 2.0 (* (pow t_0 2.0) (* t_0 (/ angle_m 180.0))))))))))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
t_1 := \mathsf{PI}\left(\right) \cdot angle\_m\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 3.4 \cdot 10^{+161}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(2 \cdot \left(angle\_m \cdot \frac{\sqrt[3]{{\mathsf{PI}\left(\right)}^{3}}}{180}\right)\right)\right)\\
\mathbf{elif}\;angle\_m \leq 3.2 \cdot 10^{+253}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \frac{\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot \frac{angle\_m}{180}\right) \cdot 2\right) + \sin \left(\frac{\mathsf{fma}\left(-angle\_m, \mathsf{PI}\left(\right), t\_1\right)}{-180}\right)\right) + \left(\sin \left(t\_1 \cdot 0.011111111111111112\right) + \sin 0\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(2 \cdot \left({t\_0}^{2} \cdot \left(t\_0 \cdot \frac{angle\_m}{180}\right)\right)\right)\right)\\
\end{array}
\end{array}
\end{array}
if angle < 3.39999999999999993e161Initial program 57.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites72.7%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f6473.6
Applied rewrites73.6%
rem-cbrt-cubeN/A
lower-cbrt.f64N/A
lower-pow.f6475.3
Applied rewrites75.3%
if 3.39999999999999993e161 < angle < 3.2000000000000003e253Initial program 36.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites44.7%
Applied rewrites58.1%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6458.0
Applied rewrites58.0%
Taylor expanded in angle around 0
+-commutativeN/A
distribute-lft-inN/A
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-eval53.0
Applied rewrites53.0%
if 3.2000000000000003e253 < angle Initial program 12.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites22.6%
lift-*.f64N/A
*-commutativeN/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*l*N/A
lower-*.f64N/A
pow2N/A
lower-pow.f64N/A
lift-PI.f64N/A
lower-cbrt.f64N/A
lower-*.f64N/A
lift-PI.f64N/A
lower-cbrt.f6443.5
Applied rewrites43.5%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (cbrt (PI))) (t_1 (* (PI) angle_m)) (t_2 (sqrt (PI))))
(*
angle_s
(if (<= angle_m 3.2e+253)
(*
(+ a b)
(*
(- b a)
(/
(+
(+
(sin (* (* (PI) (/ angle_m 180.0)) 2.0))
(sin (/ (fma (* t_2 angle_m) t_2 (* (PI) (- angle_m))) -180.0)))
(+
(sin (* t_1 0.011111111111111112))
(sin (/ (fma (- angle_m) (PI) t_1) -180.0))))
2.0)))
(*
(+ a b)
(*
(- b a)
(sin (* 2.0 (* (pow t_0 2.0) (* t_0 (/ angle_m 180.0)))))))))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
t_1 := \mathsf{PI}\left(\right) \cdot angle\_m\\
t_2 := \sqrt{\mathsf{PI}\left(\right)}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 3.2 \cdot 10^{+253}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \frac{\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot \frac{angle\_m}{180}\right) \cdot 2\right) + \sin \left(\frac{\mathsf{fma}\left(t\_2 \cdot angle\_m, t\_2, \mathsf{PI}\left(\right) \cdot \left(-angle\_m\right)\right)}{-180}\right)\right) + \left(\sin \left(t\_1 \cdot 0.011111111111111112\right) + \sin \left(\frac{\mathsf{fma}\left(-angle\_m, \mathsf{PI}\left(\right), t\_1\right)}{-180}\right)\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(2 \cdot \left({t\_0}^{2} \cdot \left(t\_0 \cdot \frac{angle\_m}{180}\right)\right)\right)\right)\\
\end{array}
\end{array}
\end{array}
if angle < 3.2000000000000003e253Initial program 55.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites70.0%
Applied rewrites71.9%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6472.3
Applied rewrites72.3%
lift-fma.f64N/A
+-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
unpow1N/A
metadata-evalN/A
pow-powN/A
metadata-evalN/A
pow-powN/A
lift-pow.f64N/A
pow1/3N/A
lift-cbrt.f64N/A
pow2N/A
associate-*r*N/A
*-commutativeN/A
lower-fma.f64N/A
Applied rewrites74.1%
if 3.2000000000000003e253 < angle Initial program 12.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites22.6%
lift-*.f64N/A
*-commutativeN/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*l*N/A
lower-*.f64N/A
pow2N/A
lower-pow.f64N/A
lift-PI.f64N/A
lower-cbrt.f64N/A
lower-*.f64N/A
lift-PI.f64N/A
lower-cbrt.f6443.5
Applied rewrites43.5%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* (PI) angle_m))
(t_1 (sin (/ (fma (- angle_m) (PI) t_0) -180.0))))
(*
angle_s
(if (<= a 2e+210)
(*
(+ a b)
(*
(- b a)
(/
(+
(+ (sin (* (* (PI) 0.011111111111111112) angle_m)) t_1)
(+ (sin (* t_0 0.011111111111111112)) t_1))
2.0)))
(*
(+ a b)
(*
(- b a)
(*
(fma
(* -2.2862368541380886e-7 (* angle_m angle_m))
(pow (PI) 3.0)
(* 0.011111111111111112 (PI)))
angle_m)))))))\begin{array}{l}
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 := \sin \left(\frac{\mathsf{fma}\left(-angle\_m, \mathsf{PI}\left(\right), t\_0\right)}{-180}\right)\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq 2 \cdot 10^{+210}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \frac{\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot 0.011111111111111112\right) \cdot angle\_m\right) + t\_1\right) + \left(\sin \left(t\_0 \cdot 0.011111111111111112\right) + t\_1\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \left(\mathsf{fma}\left(-2.2862368541380886 \cdot 10^{-7} \cdot \left(angle\_m \cdot angle\_m\right), {\mathsf{PI}\left(\right)}^{3}, 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\right)\\
\end{array}
\end{array}
\end{array}
if a < 1.99999999999999985e210Initial program 54.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites66.7%
Applied rewrites69.5%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6470.8
Applied rewrites70.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
unpow1N/A
metadata-evalN/A
pow-powN/A
metadata-evalN/A
pow-powN/A
lift-pow.f64N/A
pow1/3N/A
lift-cbrt.f64N/A
pow2N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-/l*N/A
metadata-evalN/A
*-commutativeN/A
associate-*l*N/A
Applied rewrites71.2%
if 1.99999999999999985e210 < a Initial program 40.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites84.8%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-PI.f64N/A
lower-*.f64N/A
lower-PI.f6499.8
Applied rewrites99.8%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* (PI) angle_m))
(t_1 (sin (/ (fma (- angle_m) (PI) t_0) -180.0))))
(*
angle_s
(if (<= a 6e+207)
(*
(+ a b)
(*
(- b a)
(/
(+
(+ (sin (* (* 0.011111111111111112 angle_m) (PI))) t_1)
(+ (sin (* t_0 0.011111111111111112)) t_1))
2.0)))
(*
(+ a b)
(*
(- b a)
(*
(fma
(* -2.2862368541380886e-7 (* angle_m angle_m))
(pow (PI) 3.0)
(* 0.011111111111111112 (PI)))
angle_m)))))))\begin{array}{l}
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 := \sin \left(\frac{\mathsf{fma}\left(-angle\_m, \mathsf{PI}\left(\right), t\_0\right)}{-180}\right)\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq 6 \cdot 10^{+207}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \frac{\left(\sin \left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) + t\_1\right) + \left(\sin \left(t\_0 \cdot 0.011111111111111112\right) + t\_1\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \left(\mathsf{fma}\left(-2.2862368541380886 \cdot 10^{-7} \cdot \left(angle\_m \cdot angle\_m\right), {\mathsf{PI}\left(\right)}^{3}, 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\right)\\
\end{array}
\end{array}
\end{array}
if a < 5.99999999999999966e207Initial program 55.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites67.3%
Applied rewrites69.6%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6470.9
Applied rewrites70.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
unpow1N/A
metadata-evalN/A
pow-powN/A
metadata-evalN/A
pow-powN/A
lift-pow.f64N/A
pow1/3N/A
lift-cbrt.f64N/A
pow2N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-/l*N/A
metadata-evalN/A
*-commutativeN/A
associate-*l*N/A
Applied rewrites71.0%
if 5.99999999999999966e207 < a Initial program 37.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites77.1%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-PI.f64N/A
lower-*.f64N/A
lower-PI.f6495.3
Applied rewrites95.3%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (sin (* (* (PI) (/ angle_m 180.0)) 2.0))) (t_1 (cbrt (PI))))
(*
angle_s
(if (<= angle_m 4.6e+45)
(*
(+ a b)
(*
(- b a)
(/
(+
(+ t_0 (sin (/ (fma (- angle_m) (PI) (* (PI) angle_m)) -180.0)))
(+ t_0 (sin 0.0)))
2.0)))
(*
(+ a b)
(*
(- b a)
(sin (* 2.0 (* angle_m (/ (* (pow t_1 2.0) t_1) 180.0))))))))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sin \left(\left(\mathsf{PI}\left(\right) \cdot \frac{angle\_m}{180}\right) \cdot 2\right)\\
t_1 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 4.6 \cdot 10^{+45}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \frac{\left(t\_0 + \sin \left(\frac{\mathsf{fma}\left(-angle\_m, \mathsf{PI}\left(\right), \mathsf{PI}\left(\right) \cdot angle\_m\right)}{-180}\right)\right) + \left(t\_0 + \sin 0\right)}{2}\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(2 \cdot \left(angle\_m \cdot \frac{{t\_1}^{2} \cdot t\_1}{180}\right)\right)\right)\\
\end{array}
\end{array}
\end{array}
if angle < 4.60000000000000025e45Initial program 60.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites77.6%
Applied rewrites77.1%
Taylor expanded in angle around 0
+-commutativeN/A
distribute-lft-inN/A
mul-1-negN/A
distribute-rgt-neg-inN/A
mul-1-negN/A
distribute-lft1-inN/A
metadata-evalN/A
mul0-lftN/A
metadata-eval78.1
Applied rewrites78.1%
if 4.60000000000000025e45 < angle Initial program 24.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites30.3%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f6436.5
Applied rewrites36.5%
lift-PI.f64N/A
add-cube-cbrtN/A
lower-*.f64N/A
pow2N/A
lower-pow.f64N/A
lift-PI.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-cbrt.f6443.4
Applied rewrites43.4%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (sin (* (* (PI) angle_m) 0.011111111111111112))))
(*
angle_s
(if (<= (* 2.0 (- (pow b 2.0) (pow a 2.0))) -1e-237)
(* (+ a b) (* (- a) t_0))
(* (+ a b) (* t_0 b))))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right)\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;2 \cdot \left({b}^{2} - {a}^{2}\right) \leq -1 \cdot 10^{-237}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(-a\right) \cdot t\_0\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(t\_0 \cdot b\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)))) < -9.9999999999999999e-238Initial program 53.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites64.6%
Taylor expanded in a around inf
associate-*r*N/A
lower-*.f64N/A
mul-1-negN/A
lower-neg.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6466.0
Applied rewrites66.0%
if -9.9999999999999999e-238 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 53.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites71.1%
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.f6471.3
Applied rewrites71.3%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= a 2e+210)
(*
(*
(*
-2.0
(*
(sin (* 0.005555555555555556 (* angle_m (PI))))
(sin (* (fma 0.005555555555555556 angle_m 0.5) (PI)))))
(+ a b))
(- a b))
(*
(+ a b)
(*
(- b a)
(*
(fma
(* -2.2862368541380886e-7 (* angle_m angle_m))
(pow (PI) 3.0)
(* 0.011111111111111112 (PI)))
angle_m))))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq 2 \cdot 10^{+210}:\\
\;\;\;\;\left(\left(-2 \cdot \left(\sin \left(0.005555555555555556 \cdot \left(angle\_m \cdot \mathsf{PI}\left(\right)\right)\right) \cdot \sin \left(\mathsf{fma}\left(0.005555555555555556, angle\_m, 0.5\right) \cdot \mathsf{PI}\left(\right)\right)\right)\right) \cdot \left(a + b\right)\right) \cdot \left(a - b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \left(\mathsf{fma}\left(-2.2862368541380886 \cdot 10^{-7} \cdot \left(angle\_m \cdot angle\_m\right), {\mathsf{PI}\left(\right)}^{3}, 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\right)\\
\end{array}
\end{array}
if a < 1.99999999999999985e210Initial program 54.5%
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-/.f6456.3
Applied rewrites56.3%
Taylor expanded in a around 0
associate-*r*N/A
associate-*r*N/A
distribute-rgt-outN/A
lower-*.f64N/A
Applied rewrites56.5%
Applied rewrites68.8%
if 1.99999999999999985e210 < a Initial program 40.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites84.8%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-PI.f64N/A
lower-*.f64N/A
lower-PI.f6499.8
Applied rewrites99.8%
Final simplification71.2%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= (* 2.0 (- (pow b 2.0) (pow a 2.0))) -1e+277)
(* (* a angle_m) (* (PI) (* -0.011111111111111112 a)))
(* (* (* 0.011111111111111112 angle_m) (PI)) (* (+ b a) (- b a))))))\begin{array}{l}
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}^{2} - {a}^{2}\right) \leq -1 \cdot 10^{+277}:\\
\;\;\;\;\left(a \cdot angle\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(-0.011111111111111112 \cdot a\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b + a\right) \cdot \left(b - a\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)))) < -1e277Initial program 48.2%
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
lower-+.f64N/A
lower--.f6445.4
Applied rewrites45.4%
Taylor expanded in a around inf
Applied rewrites45.4%
Applied rewrites68.4%
Applied rewrites68.4%
if -1e277 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 54.9%
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
lower-+.f64N/A
lower--.f6456.8
Applied rewrites56.8%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= (* 2.0 (- (pow b 2.0) (pow a 2.0))) -1e-237)
(* (* a angle_m) (* (PI) (* -0.011111111111111112 a)))
(* (* (* (PI) (* b b)) angle_m) 0.011111111111111112))))\begin{array}{l}
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}^{2} - {a}^{2}\right) \leq -1 \cdot 10^{-237}:\\
\;\;\;\;\left(a \cdot angle\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(-0.011111111111111112 \cdot a\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b \cdot b\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\\
\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)))) < -9.9999999999999999e-238Initial program 53.5%
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
lower-+.f64N/A
lower--.f6449.2
Applied rewrites49.2%
Taylor expanded in a around inf
Applied rewrites49.1%
Applied rewrites60.3%
Applied rewrites60.3%
if -9.9999999999999999e-238 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 53.4%
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
lower-+.f64N/A
lower--.f6458.5
Applied rewrites58.5%
Taylor expanded in a around 0
Applied rewrites58.5%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(*
angle_s
(if (<= a 6e-44)
(* (+ a b) (* (- b a) (sin (* (* (* (/ angle_m 180.0) 2.0) t_0) t_0))))
(if (<= a 7.1e+171)
(* (+ a b) (* (- b a) (sin (/ (* (* (PI) angle_m) 2.0) 180.0))))
(*
(+ a b)
(*
(fma
(* 0.011111111111111112 (PI))
(- b a)
(*
(* (* -2.2862368541380886e-7 (pow (PI) 3.0)) (- b a))
(* angle_m angle_m)))
angle_m)))))))\begin{array}{l}
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}\;a \leq 6 \cdot 10^{-44}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(\left(\left(\frac{angle\_m}{180} \cdot 2\right) \cdot t\_0\right) \cdot t\_0\right)\right)\\
\mathbf{elif}\;a \leq 7.1 \cdot 10^{+171}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(\frac{\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 2}{180}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\mathsf{fma}\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right), b - a, \left(\left(-2.2862368541380886 \cdot 10^{-7} \cdot {\mathsf{PI}\left(\right)}^{3}\right) \cdot \left(b - a\right)\right) \cdot \left(angle\_m \cdot angle\_m\right)\right) \cdot angle\_m\right)\\
\end{array}
\end{array}
\end{array}
if a < 6.0000000000000005e-44Initial program 57.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites70.3%
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
*-commutativeN/A
lower-*.f6471.4
Applied rewrites71.4%
if 6.0000000000000005e-44 < a < 7.09999999999999969e171Initial program 51.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites57.9%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-*l/N/A
lower-/.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6464.2
Applied rewrites64.2%
if 7.09999999999999969e171 < a Initial program 32.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites71.3%
lift-sin.f64N/A
lift-*.f64N/A
count-2-revN/A
lift-*.f64N/A
*-commutativeN/A
fp-cancel-sign-sub-invN/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
sin-diffN/A
Applied rewrites71.3%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites85.6%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= a 7.1e+171)
(* (+ a b) (* (- b a) (sin (/ (* (* (PI) angle_m) 2.0) 180.0))))
(*
(+ a b)
(*
(fma
(* 0.011111111111111112 (PI))
(- b a)
(*
(* (* -2.2862368541380886e-7 (pow (PI) 3.0)) (- b a))
(* angle_m angle_m)))
angle_m)))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq 7.1 \cdot 10^{+171}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(\frac{\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 2}{180}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\mathsf{fma}\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right), b - a, \left(\left(-2.2862368541380886 \cdot 10^{-7} \cdot {\mathsf{PI}\left(\right)}^{3}\right) \cdot \left(b - a\right)\right) \cdot \left(angle\_m \cdot angle\_m\right)\right) \cdot angle\_m\right)\\
\end{array}
\end{array}
if a < 7.09999999999999969e171Initial program 56.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites67.8%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-*l/N/A
lower-/.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6470.3
Applied rewrites70.3%
if 7.09999999999999969e171 < a Initial program 32.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites71.3%
lift-sin.f64N/A
lift-*.f64N/A
count-2-revN/A
lift-*.f64N/A
*-commutativeN/A
fp-cancel-sign-sub-invN/A
distribute-lft-neg-inN/A
*-commutativeN/A
lift-*.f64N/A
sin-diffN/A
Applied rewrites71.3%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
Applied rewrites85.6%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= a 5e+170)
(* (+ a b) (* (- b a) (sin (/ (* (* (PI) angle_m) 2.0) 180.0))))
(*
(+ a b)
(*
(- b a)
(*
(fma
(* -2.2862368541380886e-7 (* angle_m angle_m))
(pow (PI) 3.0)
(* 0.011111111111111112 (PI)))
angle_m))))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a \leq 5 \cdot 10^{+170}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(\frac{\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 2}{180}\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \left(\mathsf{fma}\left(-2.2862368541380886 \cdot 10^{-7} \cdot \left(angle\_m \cdot angle\_m\right), {\mathsf{PI}\left(\right)}^{3}, 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\right)\\
\end{array}
\end{array}
if a < 4.99999999999999977e170Initial program 56.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites67.8%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-*l/N/A
lower-/.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6470.3
Applied rewrites70.3%
if 4.99999999999999977e170 < a Initial program 32.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites71.3%
Taylor expanded in angle around 0
*-commutativeN/A
lower-*.f64N/A
associate-*r*N/A
lower-fma.f64N/A
lower-*.f64N/A
unpow2N/A
lower-*.f64N/A
lower-pow.f64N/A
lower-PI.f64N/A
lower-*.f64N/A
lower-PI.f6485.6
Applied rewrites85.6%
angle\_m = (fabs.f64 angle) angle\_s = (copysign.f64 #s(literal 1 binary64) angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* (+ a b) (* (- b a) (sin (/ (* (* (PI) angle_m) 2.0) 180.0))))))
\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \left(\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(\frac{\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 2}{180}\right)\right)\right)
\end{array}
Initial program 53.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites68.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-*l/N/A
lower-/.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6470.4
Applied rewrites70.4%
angle\_m = (fabs.f64 angle) angle\_s = (copysign.f64 #s(literal 1 binary64) angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* (+ a b) (* (- b a) (sin (* 2.0 (* angle_m (/ (PI) 180.0))))))))
\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \left(\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(2 \cdot \left(angle\_m \cdot \frac{\mathsf{PI}\left(\right)}{180}\right)\right)\right)\right)
\end{array}
Initial program 53.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites68.2%
lift-*.f64N/A
lift-/.f64N/A
associate-*l/N/A
associate-/l*N/A
lower-*.f64N/A
lower-/.f6469.4
Applied rewrites69.4%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(let* ((t_0 (* (PI) angle_m)))
(*
angle_s
(if (<= angle_m 0.014)
(* (- b a) (* (+ b a) (* (* 0.011111111111111112 angle_m) (PI))))
(if (<= angle_m 6.8e+37)
(* (+ a b) (* (sin (* t_0 0.011111111111111112)) b))
(* 0.011111111111111112 (* t_0 (fma (- a) a (* b b)))))))))\begin{array}{l}
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\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 0.014:\\
\;\;\;\;\left(b - a\right) \cdot \left(\left(b + a\right) \cdot \left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right)\right)\\
\mathbf{elif}\;angle\_m \leq 6.8 \cdot 10^{+37}:\\
\;\;\;\;\left(a + b\right) \cdot \left(\sin \left(t\_0 \cdot 0.011111111111111112\right) \cdot b\right)\\
\mathbf{else}:\\
\;\;\;\;0.011111111111111112 \cdot \left(t\_0 \cdot \mathsf{fma}\left(-a, a, b \cdot b\right)\right)\\
\end{array}
\end{array}
\end{array}
if angle < 0.0140000000000000003Initial program 60.8%
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
lower-+.f64N/A
lower--.f6460.5
Applied rewrites60.5%
Applied rewrites71.0%
if 0.0140000000000000003 < angle < 6.80000000000000011e37Initial program 53.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites53.3%
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.f6447.9
Applied rewrites47.9%
if 6.80000000000000011e37 < angle Initial program 24.4%
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
lower-+.f64N/A
lower--.f6431.2
Applied rewrites31.2%
Applied rewrites33.2%
angle\_m = (fabs.f64 angle) angle\_s = (copysign.f64 #s(literal 1 binary64) angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* (+ a b) (* (- b a) (sin (* (/ angle_m 180.0) (+ (PI) (PI))))))))
\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \left(\left(a + b\right) \cdot \left(\left(b - a\right) \cdot \sin \left(\frac{angle\_m}{180} \cdot \left(\mathsf{PI}\left(\right) + \mathsf{PI}\left(\right)\right)\right)\right)\right)
\end{array}
Initial program 53.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-sin.f64N/A
lift-cos.f64N/A
Applied rewrites68.2%
lift-*.f64N/A
count-2-revN/A
lift-*.f64N/A
lift-*.f64N/A
distribute-lft-outN/A
lower-*.f64N/A
lower-+.f6468.2
Applied rewrites68.2%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 0.047)
(* (- b a) (* (+ b a) (* (* 0.011111111111111112 angle_m) (PI))))
(* 0.011111111111111112 (* (* (PI) angle_m) (fma (- a) a (* b b)))))))\begin{array}{l}
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.047:\\
\;\;\;\;\left(b - a\right) \cdot \left(\left(b + a\right) \cdot \left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;0.011111111111111112 \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot \mathsf{fma}\left(-a, a, b \cdot b\right)\right)\\
\end{array}
\end{array}
if angle < 0.047Initial program 60.8%
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
lower-+.f64N/A
lower--.f6460.5
Applied rewrites60.5%
Applied rewrites71.0%
if 0.047 < angle Initial program 27.0%
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
lower-+.f64N/A
lower--.f6432.2
Applied rewrites32.2%
Applied rewrites34.0%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 2.4e-35)
(* (- b a) (* (+ b a) (* (* 0.011111111111111112 angle_m) (PI))))
(* (* (* (* (PI) (+ a b)) (- b a)) angle_m) 0.011111111111111112))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 2.4 \cdot 10^{-35}:\\
\;\;\;\;\left(b - a\right) \cdot \left(\left(b + a\right) \cdot \left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot \left(a + b\right)\right) \cdot \left(b - a\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if angle < 2.4000000000000001e-35Initial program 59.3%
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
lower-+.f64N/A
lower--.f6458.4
Applied rewrites58.4%
Applied rewrites69.5%
if 2.4000000000000001e-35 < angle Initial program 36.5%
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
lower-+.f64N/A
lower--.f6442.5
Applied rewrites42.5%
Taylor expanded in a around inf
Applied rewrites26.4%
Applied rewrites20.8%
Taylor expanded in angle around 0
*-commutativeN/A
unpow2N/A
fp-cancel-sub-sign-invN/A
distribute-lft-neg-inN/A
unpow2N/A
mul-1-negN/A
+-commutativeN/A
lower-*.f64N/A
Applied rewrites42.5%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 1.6e-78)
(* (* a angle_m) (* (PI) (* -0.011111111111111112 a)))
(* (* -0.011111111111111112 (* a a)) (* (PI) angle_m)))))\begin{array}{l}
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.6 \cdot 10^{-78}:\\
\;\;\;\;\left(a \cdot angle\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(-0.011111111111111112 \cdot a\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot \left(a \cdot a\right)\right) \cdot \left(\mathsf{PI}\left(\right) \cdot angle\_m\right)\\
\end{array}
\end{array}
if angle < 1.6e-78Initial program 56.8%
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
lower-+.f64N/A
lower--.f6455.9
Applied rewrites55.9%
Taylor expanded in a around inf
Applied rewrites38.6%
Applied rewrites44.3%
Applied rewrites44.3%
if 1.6e-78 < angle Initial program 45.8%
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
lower-+.f64N/A
lower--.f6450.8
Applied rewrites50.8%
Taylor expanded in a around inf
Applied rewrites29.7%
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a b angle_m)
:precision binary64
(*
angle_s
(if (<= angle_m 2.5e-103)
(* (* -0.011111111111111112 a) (* a (* angle_m (PI))))
(* (* -0.011111111111111112 (* a a)) (* (PI) angle_m)))))\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;angle\_m \leq 2.5 \cdot 10^{-103}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot a\right) \cdot \left(a \cdot \left(angle\_m \cdot \mathsf{PI}\left(\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(-0.011111111111111112 \cdot \left(a \cdot a\right)\right) \cdot \left(\mathsf{PI}\left(\right) \cdot angle\_m\right)\\
\end{array}
\end{array}
if angle < 2.49999999999999983e-103Initial program 56.6%
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
lower-+.f64N/A
lower--.f6455.7
Applied rewrites55.7%
Taylor expanded in a around inf
Applied rewrites38.2%
Applied rewrites44.0%
if 2.49999999999999983e-103 < angle Initial program 46.5%
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
lower-+.f64N/A
lower--.f6451.4
Applied rewrites51.4%
Taylor expanded in a around inf
Applied rewrites30.6%
angle\_m = (fabs.f64 angle) angle\_s = (copysign.f64 #s(literal 1 binary64) angle) (FPCore (angle_s a b angle_m) :precision binary64 (* angle_s (* (* -0.011111111111111112 a) (* a (* angle_m (PI))))))
\begin{array}{l}
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \left(\left(-0.011111111111111112 \cdot a\right) \cdot \left(a \cdot \left(angle\_m \cdot \mathsf{PI}\left(\right)\right)\right)\right)
\end{array}
Initial program 53.4%
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
lower-+.f64N/A
lower--.f6454.3
Applied rewrites54.3%
Taylor expanded in a around inf
Applied rewrites35.8%
Applied rewrites38.3%
herbie shell --seed 2024359
(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)))))