
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* (PI) (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t\_0\right) \cdot \cos t\_0
\end{array}
\end{array}
Sampling outcomes in binary64 precision:
Herbie found 16 alternatives:
| Alternative | Accuracy | Speedup |
|---|
(FPCore (a b angle) :precision binary64 (let* ((t_0 (* (PI) (/ angle 180.0)))) (* (* (* 2.0 (- (pow b 2.0) (pow a 2.0))) (sin t_0)) (cos t_0))))
\begin{array}{l}
\\
\begin{array}{l}
t_0 := \mathsf{PI}\left(\right) \cdot \frac{angle}{180}\\
\left(\left(2 \cdot \left({b}^{2} - {a}^{2}\right)\right) \cdot \sin t\_0\right) \cdot \cos t\_0
\end{array}
\end{array}
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(let* ((t_0 (cbrt (pow (PI) 1.5))))
(*
angle_s
(if (<= (/ angle_m 180.0) 4e+192)
(*
(cos (* (* t_0 t_0) (/ angle_m 180.0)))
(*
(- b_m a_m)
(*
(+ b_m a_m)
(* 2.0 (sin (* (PI) (* 0.005555555555555556 angle_m)))))))
(*
(*
(sin (* 0.011111111111111112 (* (cbrt (pow (PI) 3.0)) angle_m)))
(- b_m a_m))
(fma (sqrt a_m) (sqrt a_m) b_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \sqrt[3]{{\mathsf{PI}\left(\right)}^{1.5}}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 4 \cdot 10^{+192}:\\
\;\;\;\;\cos \left(\left(t\_0 \cdot t\_0\right) \cdot \frac{angle\_m}{180}\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(2 \cdot \sin \left(\mathsf{PI}\left(\right) \cdot \left(0.005555555555555556 \cdot angle\_m\right)\right)\right)\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(0.011111111111111112 \cdot \left(\sqrt[3]{{\mathsf{PI}\left(\right)}^{3}} \cdot angle\_m\right)\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \mathsf{fma}\left(\sqrt{a\_m}, \sqrt{a\_m}, b\_m\right)\\
\end{array}
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.00000000000000016e192Initial program 51.6%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites68.0%
lift-PI.f64N/A
add-cbrt-cubeN/A
lift-PI.f64N/A
lift-PI.f64N/A
lift-PI.f64N/A
rem-square-sqrtN/A
lift-sqrt.f64N/A
lift-sqrt.f64N/A
unswap-sqrN/A
cbrt-prodN/A
lower-*.f64N/A
lower-cbrt.f64N/A
unpow1N/A
lift-sqrt.f64N/A
pow1/2N/A
pow-prod-upN/A
metadata-evalN/A
metadata-evalN/A
lower-pow.f64N/A
metadata-evalN/A
Applied rewrites70.5%
if 4.00000000000000016e192 < (/.f64 angle #s(literal 180 binary64)) Initial program 36.6%
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 rewrites36.0%
lift-+.f64N/A
unpow1N/A
sqr-powN/A
lower-fma.f64N/A
metadata-evalN/A
unpow1/2N/A
lower-sqrt.f64N/A
metadata-evalN/A
unpow1/2N/A
lower-sqrt.f649.3
Applied rewrites9.3%
lift-PI.f64N/A
add-cbrt-cubeN/A
lower-cbrt.f64N/A
rem-cube-cbrtN/A
add-cbrt-cubeN/A
lift-PI.f64N/A
lower-pow.f6412.8
Applied rewrites12.8%
Final simplification64.2%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(let* ((t_0
(*
(- b_m a_m)
(*
(+ b_m a_m)
(* 2.0 (sin (* (PI) (* 0.005555555555555556 angle_m)))))))
(t_1 (sqrt (PI))))
(*
angle_s
(if (<= a_m 1.75e-53)
(* (cos (* (/ t_1 (pow angle_m -1.0)) (/ t_1 180.0))) t_0)
(* 1.0 t_0)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
\begin{array}{l}
t_0 := \left(b\_m - a\_m\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(2 \cdot \sin \left(\mathsf{PI}\left(\right) \cdot \left(0.005555555555555556 \cdot angle\_m\right)\right)\right)\right)\\
t_1 := \sqrt{\mathsf{PI}\left(\right)}\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;a\_m \leq 1.75 \cdot 10^{-53}:\\
\;\;\;\;\cos \left(\frac{t\_1}{{angle\_m}^{-1}} \cdot \frac{t\_1}{180}\right) \cdot t\_0\\
\mathbf{else}:\\
\;\;\;\;1 \cdot t\_0\\
\end{array}
\end{array}
\end{array}
if a < 1.74999999999999997e-53Initial program 52.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites67.5%
lift-*.f64N/A
lift-/.f64N/A
clear-numN/A
un-div-invN/A
rem-square-sqrtN/A
lift-sqrt.f64N/A
lift-sqrt.f64N/A
div-invN/A
times-fracN/A
lower-*.f64N/A
lower-/.f64N/A
lower-/.f64N/A
inv-powN/A
lower-pow.f6469.7
Applied rewrites69.7%
if 1.74999999999999997e-53 < a Initial program 44.6%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites57.8%
Taylor expanded in angle around 0
Applied rewrites68.1%
Final simplification69.3%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (pow a_m 2.0) 5e-46)
(*
(* (sin (* (* (PI) angle_m) 0.011111111111111112)) (- b_m a_m))
(+ b_m a_m))
(*
1.0
(*
(- b_m a_m)
(*
(+ b_m a_m)
(* 2.0 (sin (* (PI) (* 0.005555555555555556 angle_m))))))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{a\_m}^{2} \leq 5 \cdot 10^{-46}:\\
\;\;\;\;\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(2 \cdot \sin \left(\mathsf{PI}\left(\right) \cdot \left(0.005555555555555556 \cdot angle\_m\right)\right)\right)\right)\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 4.99999999999999992e-46Initial program 56.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 rewrites64.1%
if 4.99999999999999992e-46 < (pow.f64 a #s(literal 2 binary64)) Initial program 44.2%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites68.5%
Taylor expanded in angle around 0
Applied rewrites73.3%
Final simplification68.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) -2e+55)
(* (* (* -0.011111111111111112 angle_m) (* a_m (PI))) a_m)
(*
(* (* 0.011111111111111112 (PI)) angle_m)
(* (- b_m a_m) (+ b_m a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -2 \cdot 10^{+55}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\right) \cdot a\_m\\
\mathbf{else}:\\
\;\;\;\;\left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(b\_m + a\_m\right)\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -2.00000000000000002e55Initial program 51.1%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6455.9
Applied rewrites55.9%
Taylor expanded in b around 0
Applied rewrites56.0%
Applied rewrites55.9%
Applied rewrites65.8%
if -2.00000000000000002e55 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 49.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--.f6454.3
Applied rewrites54.3%
Final simplification57.2%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) -2e-192)
(* (* (* -0.011111111111111112 angle_m) a_m) (* a_m (PI)))
(* (* b_m b_m) (fma (* (PI) angle_m) 0.011111111111111112 0.0)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -2 \cdot 10^{-192}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot a\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(b\_m \cdot b\_m\right) \cdot \mathsf{fma}\left(\mathsf{PI}\left(\right) \cdot angle\_m, 0.011111111111111112, 0\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -2.0000000000000002e-192Initial program 52.8%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6455.0
Applied rewrites55.0%
Taylor expanded in b around 0
Applied rewrites55.0%
Applied rewrites54.9%
Applied rewrites61.9%
if -2.0000000000000002e-192 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 48.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--.f6454.5
Applied rewrites54.5%
Taylor expanded in b around 0
Applied rewrites19.9%
Taylor expanded in b around inf
Applied rewrites53.4%
Final simplification56.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) -2e-192)
(* (* (* -0.011111111111111112 angle_m) a_m) (* a_m (PI)))
(* (* (* (* b_m (PI)) b_m) angle_m) 0.011111111111111112))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -2 \cdot 10^{-192}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot a\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(b\_m \cdot \mathsf{PI}\left(\right)\right) \cdot b\_m\right) \cdot angle\_m\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -2.0000000000000002e-192Initial program 52.8%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6455.0
Applied rewrites55.0%
Taylor expanded in b around 0
Applied rewrites55.0%
Applied rewrites54.9%
Applied rewrites61.9%
if -2.0000000000000002e-192 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 48.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--.f6454.5
Applied rewrites54.5%
Taylor expanded in b around inf
Applied rewrites53.4%
Final simplification56.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (- (pow b_m 2.0) (pow a_m 2.0)) -2e-192)
(* (* (* -0.011111111111111112 angle_m) a_m) (* a_m (PI)))
(* (* (* (* b_m b_m) (PI)) angle_m) 0.011111111111111112))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{b\_m}^{2} - {a\_m}^{2} \leq -2 \cdot 10^{-192}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot a\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(b\_m \cdot b\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right) \cdot 0.011111111111111112\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -2.0000000000000002e-192Initial program 52.8%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6455.0
Applied rewrites55.0%
Taylor expanded in b around 0
Applied rewrites55.0%
Applied rewrites54.9%
Applied rewrites61.9%
if -2.0000000000000002e-192 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 48.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--.f6454.5
Applied rewrites54.5%
Taylor expanded in b around 0
Applied rewrites19.9%
Taylor expanded in b around inf
Applied rewrites53.4%
Final simplification56.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (pow a_m 2.0) 5e-180)
(* (* (sin (* (* (PI) angle_m) 0.011111111111111112)) b_m) (+ b_m a_m))
(*
(* (* (* (- b_m a_m) (PI)) 0.011111111111111112) angle_m)
(+ b_m a_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{a\_m}^{2} \leq 5 \cdot 10^{-180}:\\
\;\;\;\;\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right) \cdot b\_m\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(b\_m - a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right) \cdot angle\_m\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 5.0000000000000001e-180Initial program 58.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 rewrites65.8%
Taylor expanded in b around inf
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6465.6
Applied rewrites65.6%
if 5.0000000000000001e-180 < (pow.f64 a #s(literal 2 binary64)) Initial program 45.2%
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 rewrites66.5%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-PI.f6465.1
Applied rewrites65.1%
Final simplification65.3%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (/ angle_m 180.0) 1e+133)
(* (* (* (* (- b_m a_m) (PI)) 0.011111111111111112) angle_m) (+ b_m a_m))
(*
(sin (* (* 0.011111111111111112 (PI)) angle_m))
(* (- b_m a_m) (+ b_m a_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 10^{+133}:\\
\;\;\;\;\left(\left(\left(\left(b\_m - a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right) \cdot angle\_m\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\sin \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\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)) < 1e133Initial program 52.2%
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.9%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-PI.f6469.4
Applied rewrites69.4%
if 1e133 < (/.f64 angle #s(literal 180 binary64)) Initial program 37.5%
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 rewrites34.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-+.f64N/A
+-commutativeN/A
lift--.f64N/A
difference-of-squaresN/A
unpow2N/A
lift-pow.f64N/A
pow2N/A
lift-pow.f64N/A
lift--.f64N/A
lower-*.f6434.5
lift--.f64N/A
lift-pow.f64N/A
pow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
lift-+.f64N/A
lift--.f64N/A
lift-*.f6434.5
lift-*.f64N/A
lift-*.f64N/A
Applied rewrites34.8%
Final simplification64.1%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= b_m 1.4e+279)
(*
(* (sin (* (* (PI) angle_m) 0.011111111111111112)) (- b_m a_m))
(+ b_m a_m))
(*
(* (* (* (- b_m a_m) (PI)) 0.011111111111111112) angle_m)
(+ b_m a_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;b\_m \leq 1.4 \cdot 10^{+279}:\\
\;\;\;\;\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\_m\right) \cdot 0.011111111111111112\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(b\_m - a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right) \cdot angle\_m\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if b < 1.4000000000000001e279Initial program 50.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites66.1%
if 1.4000000000000001e279 < b Initial program 15.5%
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.4%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-PI.f64100.0
Applied rewrites100.0%
Final simplification67.0%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= b_m 1.4e+279)
(*
(* (sin (* (* 0.011111111111111112 angle_m) (PI))) (- b_m a_m))
(+ b_m a_m))
(*
(* (* (* (- b_m a_m) (PI)) 0.011111111111111112) angle_m)
(+ b_m a_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;b\_m \leq 1.4 \cdot 10^{+279}:\\
\;\;\;\;\left(\sin \left(\left(0.011111111111111112 \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(\left(b\_m - a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right) \cdot angle\_m\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if b < 1.4000000000000001e279Initial program 50.9%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites66.1%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6465.2
Applied rewrites65.2%
if 1.4000000000000001e279 < b Initial program 15.5%
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.4%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-PI.f64100.0
Applied rewrites100.0%
Final simplification66.2%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (pow a_m 2.0) 4000000.0)
(* (* (* (* a_m a_m) angle_m) (PI)) -0.011111111111111112)
(* (* (* -0.011111111111111112 angle_m) (* a_m (PI))) a_m))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{a\_m}^{2} \leq 4000000:\\
\;\;\;\;\left(\left(\left(a\_m \cdot a\_m\right) \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\right) \cdot a\_m\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 4e6Initial program 56.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--.f6452.1
Applied rewrites52.1%
Taylor expanded in b around 0
Applied rewrites24.8%
Applied rewrites24.8%
Applied rewrites24.8%
if 4e6 < (pow.f64 a #s(literal 2 binary64)) Initial program 41.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--.f6457.9
Applied rewrites57.9%
Taylor expanded in b around 0
Applied rewrites42.2%
Applied rewrites42.2%
Applied rewrites48.6%
Final simplification35.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (pow a_m 2.0) 1000000000000.0)
(* (* (* a_m a_m) (PI)) (* -0.011111111111111112 angle_m))
(* (* (* -0.011111111111111112 angle_m) (* a_m (PI))) a_m))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;{a\_m}^{2} \leq 1000000000000:\\
\;\;\;\;\left(\left(a\_m \cdot a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(-0.011111111111111112 \cdot angle\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\right) \cdot a\_m\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 1e12Initial program 57.0%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6452.4
Applied rewrites52.4%
Taylor expanded in b around 0
Applied rewrites25.3%
Applied rewrites25.3%
if 1e12 < (pow.f64 a #s(literal 2 binary64)) Initial program 41.1%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6457.5
Applied rewrites57.5%
Taylor expanded in b around 0
Applied rewrites41.7%
Applied rewrites41.7%
Applied rewrites48.2%
Final simplification35.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (/ angle_m 180.0) 2e+201)
(* (* (* (* (- b_m a_m) (PI)) 0.011111111111111112) angle_m) (+ b_m a_m))
(* (* (- a_m) (+ b_m a_m)) (* (* 0.011111111111111112 (PI)) angle_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 2 \cdot 10^{+201}:\\
\;\;\;\;\left(\left(\left(\left(b\_m - a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot 0.011111111111111112\right) \cdot angle\_m\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(-a\_m\right) \cdot \left(b\_m + a\_m\right)\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\_m\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 2.00000000000000008e201Initial program 51.8%
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
lift-*.f64N/A
*-commutativeN/A
associate-*l*N/A
lift--.f64N/A
lift-pow.f64N/A
unpow2N/A
lift-pow.f64N/A
unpow2N/A
difference-of-squaresN/A
associate-*l*N/A
lower-*.f64N/A
Applied rewrites70.1%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
lower-PI.f6466.7
Applied rewrites66.7%
if 2.00000000000000008e201 < (/.f64 angle #s(literal 180 binary64)) Initial program 34.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--.f6427.4
Applied rewrites27.4%
Taylor expanded in b around 0
Applied rewrites31.3%
Final simplification63.0%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
angle\_m = (fabs.f64 angle)
angle\_s = (copysign.f64 #s(literal 1 binary64) angle)
(FPCore (angle_s a_m b_m angle_m)
:precision binary64
(*
angle_s
(if (<= (/ angle_m 180.0) 1e-170)
(* (* (* -0.011111111111111112 angle_m) a_m) (* a_m (PI)))
(* (* (* (* a_m a_m) -0.011111111111111112) angle_m) (PI)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \begin{array}{l}
\mathbf{if}\;\frac{angle\_m}{180} \leq 10^{-170}:\\
\;\;\;\;\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot a\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(a\_m \cdot a\_m\right) \cdot -0.011111111111111112\right) \cdot angle\_m\right) \cdot \mathsf{PI}\left(\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 9.99999999999999983e-171Initial program 53.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--.f6461.2
Applied rewrites61.2%
Taylor expanded in b around 0
Applied rewrites33.8%
Applied rewrites33.8%
Applied rewrites38.1%
if 9.99999999999999983e-171 < (/.f64 angle #s(literal 180 binary64)) Initial program 44.4%
Taylor expanded in angle around 0
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f64N/A
lower-PI.f64N/A
unpow2N/A
unpow2N/A
difference-of-squaresN/A
lower-*.f64N/A
lower-+.f64N/A
lower--.f6445.2
Applied rewrites45.2%
Taylor expanded in b around 0
Applied rewrites30.9%
Final simplification35.1%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) angle\_m = (fabs.f64 angle) angle\_s = (copysign.f64 #s(literal 1 binary64) angle) (FPCore (angle_s a_m b_m angle_m) :precision binary64 (* angle_s (* (* (* -0.011111111111111112 angle_m) (* a_m (PI))) a_m)))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
angle\_m = \left|angle\right|
\\
angle\_s = \mathsf{copysign}\left(1, angle\right)
\\
angle\_s \cdot \left(\left(\left(-0.011111111111111112 \cdot angle\_m\right) \cdot \left(a\_m \cdot \mathsf{PI}\left(\right)\right)\right) \cdot a\_m\right)
\end{array}
Initial program 49.9%
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--.f6454.7
Applied rewrites54.7%
Taylor expanded in b around 0
Applied rewrites32.6%
Applied rewrites32.6%
Applied rewrites33.7%
Final simplification33.7%
herbie shell --seed 2024268
(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)))))