
(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 20 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}
a_m = (fabs.f64 a)
b_m = (fabs.f64 b)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(if (<= a_m 1.52e+153)
(*
(+ a_m b_m)
(*
(* (- b_m a_m) 2.0)
(* (sin (* (/ angle 180.0) (PI))) (cos (/ (* (PI) angle) -180.0)))))
(if (<= a_m 1.25e+266)
(*
(+ a_m b_m)
(*
(*
(fma
(* -2.2862368541380886e-7 (* angle angle))
(pow (PI) 3.0)
(* 0.011111111111111112 (PI)))
angle)
(- b_m a_m)))
(*
(+ a_m b_m)
(* (sin (* 2.0 (/ (* (* angle t_0) t_0) 180.0))) (- b_m a_m)))))))\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;a\_m \leq 1.52 \cdot 10^{+153}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\left(b\_m - a\_m\right) \cdot 2\right) \cdot \left(\sin \left(\frac{angle}{180} \cdot \mathsf{PI}\left(\right)\right) \cdot \cos \left(\frac{\mathsf{PI}\left(\right) \cdot angle}{-180}\right)\right)\right)\\
\mathbf{elif}\;a\_m \leq 1.25 \cdot 10^{+266}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\mathsf{fma}\left(-2.2862368541380886 \cdot 10^{-7} \cdot \left(angle \cdot angle\right), {\mathsf{PI}\left(\right)}^{3}, 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot \left(b\_m - a\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\sin \left(2 \cdot \frac{\left(angle \cdot t\_0\right) \cdot t\_0}{180}\right) \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if a < 1.52e153Initial program 55.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites57.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6465.3
Applied rewrites65.3%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lift-*.f64N/A
lower-/.f6465.4
lift-*.f64N/A
*-commutativeN/A
lower-*.f6465.4
Applied rewrites65.4%
lift--.f64N/A
lift-*.f64N/A
*-commutativeN/A
lift-sin.f64N/A
lift-*.f64N/A
lift-/.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*r/N/A
lift-PI.f64N/A
lift-PI.f64N/A
lift-/.f64N/A
lift-*.f64N/A
sin-2N/A
associate-*r*N/A
Applied rewrites65.5%
if 1.52e153 < a < 1.25e266Initial program 38.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites49.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6478.9
Applied rewrites78.9%
Taylor expanded in angle around 0
Applied rewrites89.6%
if 1.25e266 < a Initial program 53.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites62.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6469.0
Applied rewrites69.0%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lift-*.f64N/A
lower-/.f6484.4
lift-*.f64N/A
*-commutativeN/A
lower-*.f6484.4
Applied rewrites84.4%
lift-*.f64N/A
lift-PI.f64N/A
add-sqr-sqrtN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f6484.4
Applied rewrites84.4%
a_m = (fabs.f64 a)
b_m = (fabs.f64 b)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (sqrt (PI))) (t_1 (* (PI) (/ angle 180.0))))
(if (<=
(* (* (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) (sin t_1)) (cos t_1))
-2e+295)
(*
(+ a_m b_m)
(*
(*
(fma
(* 2.2862368541380886e-7 (* angle angle))
(pow (PI) 3.0)
(* -0.011111111111111112 (PI)))
angle)
a_m))
(*
(+ a_m b_m)
(* (sin (* 2.0 (* (* (/ angle 180.0) t_0) t_0))) (- b_m a_m))))))\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
t_1 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\mathbf{if}\;\left(\left(2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right)\right) \cdot \sin t\_1\right) \cdot \cos t\_1 \leq -2 \cdot 10^{+295}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\mathsf{fma}\left(2.2862368541380886 \cdot 10^{-7} \cdot \left(angle \cdot angle\right), {\mathsf{PI}\left(\right)}^{3}, -0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\sin \left(2 \cdot \left(\left(\frac{angle}{180} \cdot t\_0\right) \cdot t\_0\right)\right) \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64))))) < -2e295Initial program 50.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites50.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6474.4
Applied rewrites74.4%
Taylor expanded in a around inf
Applied rewrites37.2%
Taylor expanded in angle around 0
Applied rewrites58.0%
if -2e295 < (*.f64 (*.f64 (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) (sin.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64))))) (cos.f64 (*.f64 (PI.f64) (/.f64 angle #s(literal 180 binary64))))) Initial program 55.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites58.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6464.7
Applied rewrites64.7%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lift-*.f64N/A
lower-/.f6464.3
lift-*.f64N/A
*-commutativeN/A
lower-*.f6464.3
Applied rewrites64.3%
lift-/.f64N/A
lift-*.f64N/A
associate-*l/N/A
lift-/.f64N/A
lift-PI.f64N/A
add-sqr-sqrtN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f6464.2
Applied rewrites64.2%
a_m = (fabs.f64 a)
b_m = (fabs.f64 b)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0)))))
(if (<= t_0 -2e+300)
(* (- b_m a_m) (* (* 0.011111111111111112 angle) (* (PI) (+ a_m b_m))))
(if (<= t_0 2e-204)
(* (sin (* -0.011111111111111112 (* (PI) angle))) (* a_m a_m))
(*
(+ a_m b_m)
(* (- b_m a_m) (* (* 0.011111111111111112 (PI)) angle)))))))\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
t_0 := 2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right)\\
\mathbf{if}\;t\_0 \leq -2 \cdot 10^{+300}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot angle\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(a\_m + b\_m\right)\right)\right)\\
\mathbf{elif}\;t\_0 \leq 2 \cdot 10^{-204}:\\
\;\;\;\;\sin \left(-0.011111111111111112 \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right) \cdot \left(a\_m \cdot a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\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)))) < -2.0000000000000001e300Initial program 49.9%
Taylor expanded in angle around 0
Applied rewrites44.6%
Applied rewrites69.6%
if -2.0000000000000001e300 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < 2e-204Initial program 63.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites63.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6463.5
Applied rewrites63.5%
Taylor expanded in a around inf
Applied rewrites62.1%
if 2e-204 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 49.2%
Taylor expanded in angle around 0
Applied rewrites53.7%
Applied rewrites62.6%
a_m = (fabs.f64 a)
b_m = (fabs.f64 b)
(FPCore (a_m b_m angle)
:precision binary64
(if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) -5e+295)
(*
(+ a_m b_m)
(*
(*
(fma
(* 2.2862368541380886e-7 (* angle angle))
(pow (PI) 3.0)
(* -0.011111111111111112 (PI)))
angle)
a_m))
(* (+ a_m b_m) (* (sin (* 2.0 (/ (* angle (PI)) 180.0))) (- b_m a_m)))))\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq -5 \cdot 10^{+295}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\mathsf{fma}\left(2.2862368541380886 \cdot 10^{-7} \cdot \left(angle \cdot angle\right), {\mathsf{PI}\left(\right)}^{3}, -0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\sin \left(2 \cdot \frac{angle \cdot \mathsf{PI}\left(\right)}{180}\right) \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < -4.99999999999999991e295Initial program 49.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites49.0%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6473.7
Applied rewrites73.7%
Taylor expanded in a around inf
Applied rewrites71.8%
Taylor expanded in angle around 0
Applied rewrites80.8%
if -4.99999999999999991e295 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 55.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites59.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6464.4
Applied rewrites64.4%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lift-*.f64N/A
lower-/.f6465.0
lift-*.f64N/A
*-commutativeN/A
lower-*.f6465.0
Applied rewrites65.0%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) 2e-204) (* (+ a_m b_m) (* (sin (* (* -0.011111111111111112 angle) (PI))) a_m)) (* (+ a_m b_m) (* (- b_m a_m) (* (* 0.011111111111111112 (PI)) angle)))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq 2 \cdot 10^{-204}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\sin \left(\left(-0.011111111111111112 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\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)))) < 2e-204Initial program 58.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites58.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6468.0
Applied rewrites68.0%
Taylor expanded in a around inf
Applied rewrites65.9%
Applied rewrites67.5%
if 2e-204 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 49.2%
Taylor expanded in angle around 0
Applied rewrites53.7%
Applied rewrites62.6%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) 2e-204) (* a_m (* (sin (* -0.011111111111111112 (* (PI) angle))) a_m)) (* (+ a_m b_m) (* (- b_m a_m) (* (* 0.011111111111111112 (PI)) angle)))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq 2 \cdot 10^{-204}:\\
\;\;\;\;a\_m \cdot \left(\sin \left(-0.011111111111111112 \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right) \cdot a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\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)))) < 2e-204Initial program 58.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites58.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6468.0
Applied rewrites68.0%
Taylor expanded in a around inf
Applied rewrites65.9%
Taylor expanded in a around inf
Applied rewrites66.4%
if 2e-204 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 49.2%
Taylor expanded in angle around 0
Applied rewrites53.7%
Applied rewrites62.6%
Final simplification64.7%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) (- INFINITY)) (* (* a_m (* (* (PI) angle) a_m)) -0.011111111111111112) (* (* (* 0.011111111111111112 (PI)) (* (- b_m a_m) (+ a_m b_m))) angle)))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq -\infty:\\
\;\;\;\;\left(a\_m \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right)\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(a\_m + b\_m\right)\right)\right) \cdot angle\\
\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)))) < -inf.0Initial program 48.1%
Taylor expanded in angle around 0
Applied rewrites42.5%
Taylor expanded in a around inf
Applied rewrites42.5%
Applied rewrites42.5%
Taylor expanded in a around inf
Applied rewrites68.4%
if -inf.0 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 55.8%
Taylor expanded in angle around 0
Applied rewrites55.6%
Applied rewrites55.6%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) (- INFINITY)) (* (* a_m (* (* (PI) angle) a_m)) -0.011111111111111112) (* (* angle (* 0.011111111111111112 (PI))) (* (+ b_m a_m) (- b_m a_m)))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq -\infty:\\
\;\;\;\;\left(a\_m \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right)\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(angle \cdot \left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right)\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < -inf.0Initial program 48.1%
Taylor expanded in angle around 0
Applied rewrites42.5%
Taylor expanded in a around inf
Applied rewrites42.5%
Applied rewrites42.5%
Taylor expanded in a around inf
Applied rewrites68.4%
if -inf.0 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 55.8%
Taylor expanded in angle around 0
Applied rewrites55.6%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) -1e-238) (* (* a_m (* (* (PI) angle) a_m)) -0.011111111111111112) (* (* angle (* 0.011111111111111112 (PI))) (* b_m (- b_m a_m)))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq -1 \cdot 10^{-238}:\\
\;\;\;\;\left(a\_m \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right)\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(angle \cdot \left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right)\right) \cdot \left(b\_m \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) < -9.9999999999999999e-239Initial program 52.5%
Taylor expanded in angle around 0
Applied rewrites45.7%
Taylor expanded in a around inf
Applied rewrites45.2%
Applied rewrites45.2%
Taylor expanded in a around inf
Applied rewrites57.0%
if -9.9999999999999999e-239 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 55.6%
Taylor expanded in angle around 0
Applied rewrites59.0%
Taylor expanded in a around 0
Applied rewrites57.6%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) -1e-238) (* (* a_m (* (* (PI) angle) a_m)) -0.011111111111111112) (* (* (* (PI) (* b_m b_m)) angle) 0.011111111111111112)))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;2 \cdot \left({b\_m}^{2} - {a\_m}^{2}\right) \leq -1 \cdot 10^{-238}:\\
\;\;\;\;\left(a\_m \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right)\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{PI}\left(\right) \cdot \left(b\_m \cdot b\_m\right)\right) \cdot angle\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-239Initial program 52.5%
Taylor expanded in angle around 0
Applied rewrites45.7%
Taylor expanded in a around inf
Applied rewrites45.2%
Applied rewrites45.2%
Taylor expanded in a around inf
Applied rewrites57.0%
if -9.9999999999999999e-239 < (*.f64 #s(literal 2 binary64) (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64)))) Initial program 55.6%
Taylor expanded in angle around 0
Applied rewrites59.0%
Taylor expanded in a around 0
Applied rewrites58.3%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* (+ a_m b_m) (* (sin (* 2.0 (/ (* angle (PI)) 180.0))) (- b_m a_m))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\left(a\_m + b\_m\right) \cdot \left(\sin \left(2 \cdot \frac{angle \cdot \mathsf{PI}\left(\right)}{180}\right) \cdot \left(b\_m - a\_m\right)\right)
\end{array}
Initial program 54.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites57.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6466.5
Applied rewrites66.5%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lift-*.f64N/A
lower-/.f6466.9
lift-*.f64N/A
*-commutativeN/A
lower-*.f6466.9
Applied rewrites66.9%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* (+ a_m b_m) (* (sin (* 2.0 (* (PI) (/ angle 180.0)))) (- b_m a_m))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\left(a\_m + b\_m\right) \cdot \left(\sin \left(2 \cdot \left(\mathsf{PI}\left(\right) \cdot \frac{angle}{180}\right)\right) \cdot \left(b\_m - a\_m\right)\right)
\end{array}
Initial program 54.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites57.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6466.5
Applied rewrites66.5%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* (+ a_m b_m) (* (sin (* (/ (PI) 180.0) (+ angle angle))) (- b_m a_m))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\left(a\_m + b\_m\right) \cdot \left(\sin \left(\frac{\mathsf{PI}\left(\right)}{180} \cdot \left(angle + angle\right)\right) \cdot \left(b\_m - a\_m\right)\right)
\end{array}
Initial program 54.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites57.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6466.5
Applied rewrites66.5%
lift-*.f64N/A
lift-/.f64N/A
associate-*r/N/A
lift-*.f64N/A
lower-/.f6466.9
lift-*.f64N/A
*-commutativeN/A
lower-*.f6466.9
Applied rewrites66.9%
lift-*.f64N/A
count-2-revN/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
lift-/.f64N/A
lift-*.f64N/A
associate-/l*N/A
distribute-rgt-outN/A
lower-*.f64N/A
lower-/.f64N/A
lower-+.f6465.9
Applied rewrites65.9%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (if (<= a_m 5.4e-124) (* (sin (* (* (PI) angle) 0.011111111111111112)) (* b_m b_m)) (* (+ a_m b_m) (* (- b_m a_m) (* (* 0.011111111111111112 (PI)) angle)))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
\mathbf{if}\;a\_m \leq 5.4 \cdot 10^{-124}:\\
\;\;\;\;\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m \cdot b\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\right)\\
\end{array}
\end{array}
if a < 5.40000000000000035e-124Initial program 55.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites58.4%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6468.2
Applied rewrites68.2%
Taylor expanded in a around 0
Applied rewrites40.6%
if 5.40000000000000035e-124 < a Initial program 51.4%
Taylor expanded in angle around 0
Applied rewrites52.5%
Applied rewrites61.4%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* (+ a_m b_m) (* (sin (* (* (PI) angle) 0.011111111111111112)) (- b_m a_m))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\left(a\_m + b\_m\right) \cdot \left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m - a\_m\right)\right)
\end{array}
Initial program 54.2%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f64N/A
Applied rewrites57.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lower-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f6466.5
Applied rewrites66.5%
Taylor expanded in angle around 0
Applied rewrites65.6%
a_m = (fabs.f64 a)
b_m = (fabs.f64 b)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* 0.011111111111111112 (PI))))
(if (<= angle 5.5e-35)
(* (+ a_m b_m) (* (- b_m a_m) (* t_0 angle)))
(* (* t_0 (* (- b_m a_m) (+ a_m b_m))) angle))))\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\begin{array}{l}
t_0 := 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\\
\mathbf{if}\;angle \leq 5.5 \cdot 10^{-35}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(t\_0 \cdot angle\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(t\_0 \cdot \left(\left(b\_m - a\_m\right) \cdot \left(a\_m + b\_m\right)\right)\right) \cdot angle\\
\end{array}
\end{array}
if angle < 5.4999999999999997e-35Initial program 60.8%
Taylor expanded in angle around 0
Applied rewrites60.7%
Applied rewrites72.7%
if 5.4999999999999997e-35 < angle Initial program 37.1%
Taylor expanded in angle around 0
Applied rewrites32.4%
Applied rewrites32.4%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* (* a_m (* (* (PI) angle) a_m)) -0.011111111111111112))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\left(a\_m \cdot \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right)\right) \cdot -0.011111111111111112
\end{array}
Initial program 54.2%
Taylor expanded in angle around 0
Applied rewrites52.9%
Taylor expanded in a around inf
Applied rewrites33.1%
Applied rewrites33.1%
Taylor expanded in a around inf
Applied rewrites37.5%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* (* -0.011111111111111112 a_m) (* a_m (* (PI) angle))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
\left(-0.011111111111111112 \cdot a\_m\right) \cdot \left(a\_m \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right)
\end{array}
Initial program 54.2%
Taylor expanded in angle around 0
Applied rewrites52.9%
Taylor expanded in a around inf
Applied rewrites33.1%
Applied rewrites33.1%
Applied rewrites37.5%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* a_m (* (* a_m (* (PI) angle)) -0.011111111111111112)))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
a\_m \cdot \left(\left(a\_m \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\right) \cdot -0.011111111111111112\right)
\end{array}
Initial program 54.2%
Taylor expanded in angle around 0
Applied rewrites52.9%
Taylor expanded in a around inf
Applied rewrites33.1%
Applied rewrites33.1%
Applied rewrites37.5%
a_m = (fabs.f64 a) b_m = (fabs.f64 b) (FPCore (a_m b_m angle) :precision binary64 (* -0.011111111111111112 (* (* a_m a_m) (* angle (PI)))))
\begin{array}{l}
a_m = \left|a\right|
\\
b_m = \left|b\right|
\\
-0.011111111111111112 \cdot \left(\left(a\_m \cdot a\_m\right) \cdot \left(angle \cdot \mathsf{PI}\left(\right)\right)\right)
\end{array}
Initial program 54.2%
Taylor expanded in angle around 0
Applied rewrites52.9%
Taylor expanded in a around inf
Applied rewrites33.1%
Applied rewrites33.1%
herbie shell --seed 2025025
(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)))))