
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* (PI) (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t\_0\right) \cdot \cos t\_0
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 15 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* (PI) (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t\_0\right) \cdot \cos t\_0
\end{array}
\end{array}
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (cbrt (PI))))
(if (<= a_m 3.2e+122)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle (PI)) 0.011111111111111112))))
(*
(*
(+ a_m b_m)
(* (- b_m a_m) (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0)))
(cos (* (* (pow t_0 2.0) t_0) (/ angle 180.0)))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;a\_m \leq 3.2 \cdot 10^{+122}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\left({t\_0}^{2} \cdot t\_0\right) \cdot \frac{angle}{180}\right)\\
\end{array}
\end{array}
if a < 3.20000000000000012e122Initial program 60.3%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites71.5%
if 3.20000000000000012e122 < a Initial program 48.4%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6469.9
Applied rewrites72.8%
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.f6477.8
Applied rewrites77.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(if (<= (pow a_m 2.0) 2e+51)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle (PI)) 0.011111111111111112))))
(*
(*
(+ a_m b_m)
(* (- b_m a_m) (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0)))
(cos (* (* t_0 t_0) (/ angle 180.0)))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;{a\_m}^{2} \leq 2 \cdot 10^{+51}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\left(t\_0 \cdot t\_0\right) \cdot \frac{angle}{180}\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 2e51Initial program 67.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites74.9%
if 2e51 < (pow.f64 a #s(literal 2 binary64)) Initial program 47.7%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6468.7
Applied rewrites68.7%
lift-PI.f64N/A
add-sqr-sqrtN/A
lower-*.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f6472.0
Applied rewrites72.0%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(if (<= (/ angle 180.0) 2e+112)
(*
(*
(+ a_m b_m)
(* (- b_m a_m) (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0)))
(cos (* (* t_0 t_0) (/ angle 180.0))))
(/
(sin (* (* angle (PI)) 0.011111111111111112))
(pow (pow (* (+ b_m a_m) (- b_m a_m)) 2.0) -0.5)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;\frac{angle}{180} \leq 2 \cdot 10^{+112}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot \cos \left(\left(t\_0 \cdot t\_0\right) \cdot \frac{angle}{180}\right)\\
\mathbf{else}:\\
\;\;\;\;\frac{\sin \left(\left(angle \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right)}{{\left({\left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)}^{2}\right)}^{-0.5}}\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.9999999999999999e112Initial program 62.4%
lift-*.f64N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6478.3
Applied rewrites78.0%
lift-PI.f64N/A
add-sqr-sqrtN/A
lower-*.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f6477.9
Applied rewrites77.9%
if 1.9999999999999999e112 < (/.f64 angle #s(literal 180 binary64)) Initial program 38.7%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
flip--N/A
clear-numN/A
associate-*l/N/A
Applied rewrites29.4%
lift-pow.f64N/A
lift-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
*-commutativeN/A
lift-*.f64N/A
sqr-powN/A
pow-prod-downN/A
lower-pow.f64N/A
pow2N/A
lower-pow.f64N/A
metadata-eval49.7
Applied rewrites49.7%
Final simplification73.3%
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)
(*
(*
(+ a_m b_m)
(* (- b_m a_m) (* (sin (* (* 0.005555555555555556 angle) (PI))) 2.0)))
1.0)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle (PI)) 0.011111111111111112))))))\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}:\\
\;\;\;\;\left(\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\sin \left(\left(0.005555555555555556 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 2\right)\right)\right) \cdot 1\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right)\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
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6474.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
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites71.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* angle (PI))))
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) (- INFINITY))
(* (* (* t_0 a_m) a_m) -0.011111111111111112)
(* (+ a_m b_m) (* (- b_m a_m) (sin (* t_0 0.011111111111111112)))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := angle \cdot \mathsf{PI}\left(\right)\\
\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(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(t\_0 \cdot 0.011111111111111112\right)\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%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6456.8
Applied rewrites56.8%
Taylor expanded in a around inf
Applied rewrites56.8%
Applied rewrites78.6%
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
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites71.1%
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 (PI)) a_m) a_m) -0.011111111111111112) (* (fma 0.011111111111111112 (* (PI) angle) 0.0) (* b_m b_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 -4 \cdot 10^{-288}:\\
\;\;\;\;\left(\left(\left(angle \cdot \mathsf{PI}\left(\right)\right) \cdot a\_m\right) \cdot a\_m\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\mathsf{fma}\left(0.011111111111111112, \mathsf{PI}\left(\right) \cdot angle, 0\right) \cdot \left(b\_m \cdot b\_m\right)\\
\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%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6456.8
Applied rewrites56.8%
Taylor expanded in a around inf
Applied rewrites56.3%
Applied rewrites65.3%
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%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.3
Applied rewrites57.3%
Taylor expanded in b around inf
Applied rewrites58.4%
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 (PI)) a_m) a_m) -0.011111111111111112) (* (* (* (PI) (* b_m b_m)) angle) 0.011111111111111112)))
\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(\left(angle \cdot \mathsf{PI}\left(\right)\right) \cdot a\_m\right) \cdot a\_m\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 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -4.00000000000000023e-288Initial program 58.2%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6456.8
Applied rewrites56.8%
Taylor expanded in a around inf
Applied rewrites56.3%
Applied rewrites65.3%
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%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.3
Applied rewrites57.3%
Taylor expanded in a around 0
Applied rewrites58.4%
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) (* (PI) (* -0.011111111111111112 a_m))) (* (* (* (PI) (* b_m b_m)) angle) 0.011111111111111112)))
\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(angle \cdot a\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)\\
\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 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -4.00000000000000023e-288Initial program 58.2%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6456.8
Applied rewrites56.8%
Taylor expanded in a around inf
Applied rewrites56.3%
Applied rewrites65.3%
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%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.3
Applied rewrites57.3%
Taylor expanded in a around 0
Applied rewrites58.4%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(if (<= (/ angle 180.0) 5e-70)
(* (- b_m a_m) (* (* 0.011111111111111112 angle) (* (PI) (+ b_m a_m))))
(*
(* (+ b_m a_m) (- b_m a_m))
(sin (* (* 0.011111111111111112 (PI)) angle)))))\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(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot angle\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(b\_m + a\_m\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \sin \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.9999999999999998e-70Initial program 63.2%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6464.0
Applied rewrites64.0%
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
+-commutativeN/A
lower-+.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-*.f6451.4
Applied rewrites50.4%
Applied rewrites48.3%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (/ angle 180.0) 5e+127) (* (- b_m a_m) (* (* 0.011111111111111112 angle) (* (PI) (+ b_m a_m)))) (* (sin (* (* (PI) angle) 0.011111111111111112)) (* b_m b_m))))
\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^{+127}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot angle\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(b\_m + a\_m\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m \cdot b\_m\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 5.0000000000000004e127Initial program 61.7%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6462.1
Applied rewrites62.1%
Applied rewrites73.1%
if 5.0000000000000004e127 < (/.f64 angle #s(literal 180 binary64)) Initial program 38.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
flip--N/A
clear-numN/A
associate-*l/N/A
Applied rewrites30.8%
Taylor expanded in a around 0
*-commutativeN/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
lower-*.f6430.0
Applied rewrites30.0%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= a_m 7.5e+268) (* (- b_m a_m) (* (* 0.011111111111111112 angle) (* (PI) (+ b_m a_m)))) (* (* (- a_m) a_m) (sin (* (* (PI) angle) 0.011111111111111112)))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;a\_m \leq 7.5 \cdot 10^{+268}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot angle\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(b\_m + a\_m\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-a\_m\right) \cdot a\_m\right) \cdot \sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right)\\
\end{array}
\end{array}
if a < 7.5000000000000004e268Initial program 57.3%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6456.3
Applied rewrites56.3%
Applied rewrites65.1%
if 7.5000000000000004e268 < a Initial program 78.6%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
flip--N/A
clear-numN/A
associate-*l/N/A
Applied rewrites85.7%
Taylor expanded in a around inf
associate-*r*N/A
lower-*.f64N/A
mul-1-negN/A
unpow2N/A
distribute-lft-neg-inN/A
mul-1-negN/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.f6485.7
Applied rewrites85.7%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (/ angle 180.0) 5e-70) (* (- b_m a_m) (* (* 0.011111111111111112 angle) (* (PI) (+ b_m a_m)))) (* (* angle (* 0.011111111111111112 (PI))) (* (+ 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}\;\frac{angle}{180} \leq 5 \cdot 10^{-70}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(0.011111111111111112 \cdot angle\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(b\_m + a\_m\right)\right)\right)\\
\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 angle #s(literal 180 binary64)) < 4.9999999999999998e-70Initial program 63.2%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6464.0
Applied rewrites64.0%
Applied rewrites77.6%
if 4.9999999999999998e-70 < (/.f64 angle #s(literal 180 binary64)) Initial program 47.6%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6441.3
Applied rewrites41.3%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* 0.011111111111111112 (PI))))
(if (<= (/ angle 180.0) 5e-70)
(* (+ b_m a_m) (* (- b_m a_m) (* t_0 angle)))
(* (* angle t_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 := 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\\
\mathbf{if}\;\frac{angle}{180} \leq 5 \cdot 10^{-70}:\\
\;\;\;\;\left(b\_m + a\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(t\_0 \cdot angle\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(angle \cdot t\_0\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.9999999999999998e-70Initial program 63.2%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6464.0
Applied rewrites64.0%
Applied rewrites77.6%
if 4.9999999999999998e-70 < (/.f64 angle #s(literal 180 binary64)) Initial program 47.6%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6441.3
Applied rewrites41.3%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (* angle a_m) (* (PI) (* -0.011111111111111112 a_m))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\left(angle \cdot a\_m\right) \cdot \left(\mathsf{PI}\left(\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right)
\end{array}
Initial program 58.5%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.1
Applied rewrites57.1%
Taylor expanded in a around inf
Applied rewrites38.6%
Applied rewrites42.2%
Applied rewrites42.2%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (* -0.011111111111111112 a_m) (* a_m (* angle (PI)))))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\left(-0.011111111111111112 \cdot a\_m\right) \cdot \left(a\_m \cdot \left(angle \cdot \mathsf{PI}\left(\right)\right)\right)
\end{array}
Initial program 58.5%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.1
Applied rewrites57.1%
Taylor expanded in a around inf
Applied rewrites38.6%
Applied rewrites42.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)))))