
(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 19 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)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (cbrt (PI))))
(if (<= a_m 3e-7)
(*
(*
(sin (* (* (* 0.011111111111111112 angle) (pow t_0 2.0)) t_0))
(- b a_m))
(+ b a_m))
(if (<= a_m 4e+264)
(/
(* (sin (* (* 0.011111111111111112 (PI)) angle)) (+ b a_m))
(pow (- b a_m) -1.0))
(*
1.0
(*
(sin (* (PI) (/ angle 180.0)))
(* (* (* a_m a_m) (fma (/ b a_m) (/ b a_m) -1.0)) 2.0)))))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;a\_m \leq 3 \cdot 10^{-7}:\\
\;\;\;\;\left(\sin \left(\left(\left(0.011111111111111112 \cdot angle\right) \cdot {t\_0}^{2}\right) \cdot t\_0\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{elif}\;a\_m \leq 4 \cdot 10^{+264}:\\
\;\;\;\;\frac{\sin \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot \left(b + a\_m\right)}{{\left(b - a\_m\right)}^{-1}}\\
\mathbf{else}:\\
\;\;\;\;1 \cdot \left(\sin \left(\mathsf{PI}\left(\right) \cdot \frac{angle}{180}\right) \cdot \left(\left(\left(a\_m \cdot a\_m\right) \cdot \mathsf{fma}\left(\frac{b}{a\_m}, \frac{b}{a\_m}, -1\right)\right) \cdot 2\right)\right)\\
\end{array}
\end{array}
if a < 2.9999999999999999e-7Initial program 51.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 rewrites63.7%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
pow2N/A
lower-pow.f64N/A
lift-PI.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-cbrt.f6464.9
Applied rewrites64.9%
if 2.9999999999999999e-7 < a < 4.00000000000000018e264Initial program 53.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 rewrites75.3%
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.7
Applied rewrites72.7%
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.f6472.8
Applied rewrites72.8%
Applied rewrites84.5%
if 4.00000000000000018e264 < a Initial program 40.0%
Taylor expanded in angle around 0
Applied rewrites60.0%
Taylor expanded in a around inf
*-commutativeN/A
lower-*.f64N/A
sub-negN/A
metadata-evalN/A
unpow2N/A
unpow2N/A
times-fracN/A
lower-fma.f64N/A
lower-/.f64N/A
lower-/.f64N/A
unpow2N/A
lower-*.f64100.0
Applied rewrites100.0%
Final simplification69.2%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (sqrt (PI)))
(t_1 (fma (sqrt a_m) (sqrt a_m) b))
(t_2 (cbrt (pow (PI) 1.5))))
(if (<= (/ angle 180.0) 1e+166)
(* (* (sin (* 0.011111111111111112 (* (* t_0 t_0) angle))) (- b a_m)) t_1)
(*
(* (sin (* (* (* t_2 t_2) angle) 0.011111111111111112)) (- b a_m))
t_1))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
t_1 := \mathsf{fma}\left(\sqrt{a\_m}, \sqrt{a\_m}, b\right)\\
t_2 := \sqrt[3]{{\mathsf{PI}\left(\right)}^{1.5}}\\
\mathbf{if}\;\frac{angle}{180} \leq 10^{+166}:\\
\;\;\;\;\left(\sin \left(0.011111111111111112 \cdot \left(\left(t\_0 \cdot t\_0\right) \cdot angle\right)\right) \cdot \left(b - a\_m\right)\right) \cdot t\_1\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(\left(\left(t\_2 \cdot t\_2\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b - a\_m\right)\right) \cdot t\_1\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 9.9999999999999994e165Initial program 55.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 rewrites70.4%
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.f6473.0
Applied rewrites73.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.f6432.3
Applied rewrites32.3%
if 9.9999999999999994e165 < (/.f64 angle #s(literal 180 binary64)) Initial program 19.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 rewrites29.6%
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.f6421.9
Applied rewrites21.9%
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.f6418.5
Applied rewrites18.5%
lift-*.f64N/A
lift-sqrt.f64N/A
lift-sqrt.f64N/A
rem-square-sqrt23.3
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
Applied rewrites20.4%
Final simplification30.9%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (sqrt (PI))) (t_1 (cbrt (pow (PI) 1.5))))
(if (<= (/ angle 180.0) 1e+166)
(*
(* (sin (* 0.011111111111111112 (* (* t_0 t_0) angle))) (- b a_m))
(fma (sqrt a_m) (sqrt a_m) b))
(*
(+ b a_m)
(* (sin (* (* (* t_1 t_1) angle) 0.011111111111111112)) (- b a_m))))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
t_1 := \sqrt[3]{{\mathsf{PI}\left(\right)}^{1.5}}\\
\mathbf{if}\;\frac{angle}{180} \leq 10^{+166}:\\
\;\;\;\;\left(\sin \left(0.011111111111111112 \cdot \left(\left(t\_0 \cdot t\_0\right) \cdot angle\right)\right) \cdot \left(b - a\_m\right)\right) \cdot \mathsf{fma}\left(\sqrt{a\_m}, \sqrt{a\_m}, b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(b + a\_m\right) \cdot \left(\sin \left(\left(\left(t\_1 \cdot t\_1\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b - a\_m\right)\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 9.9999999999999994e165Initial program 55.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 rewrites70.4%
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.f6473.0
Applied rewrites73.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.f6432.3
Applied rewrites32.3%
if 9.9999999999999994e165 < (/.f64 angle #s(literal 180 binary64)) Initial program 19.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 rewrites29.6%
lift-PI.f64N/A
add-cbrt-cubeN/A
lift-PI.f64N/A
lift-PI.f64N/A
add-sqr-sqrtN/A
unswap-sqrN/A
cbrt-prodN/A
lower-*.f64N/A
lower-cbrt.f64N/A
unpow1N/A
lift-PI.f64N/A
pow1/2N/A
pow-prod-upN/A
metadata-evalN/A
metadata-evalN/A
lower-pow.f64N/A
metadata-evalN/A
lower-cbrt.f64N/A
unpow1N/A
lift-PI.f64N/A
Applied rewrites30.9%
Final simplification32.1%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (cbrt (PI))) (t_1 (sqrt (PI))))
(if (<= (pow b 2.0) 5e+79)
(*
(*
(sin (* (* (* (pow t_0 2.0) angle) t_0) 0.011111111111111112))
(- b a_m))
(+ b a_m))
(*
(* (sin (* 0.011111111111111112 (* (* t_1 t_1) angle))) (- b a_m))
(fma (sqrt a_m) (sqrt a_m) b)))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
t_1 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;{b}^{2} \leq 5 \cdot 10^{+79}:\\
\;\;\;\;\left(\sin \left(\left(\left({t\_0}^{2} \cdot angle\right) \cdot t\_0\right) \cdot 0.011111111111111112\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(0.011111111111111112 \cdot \left(\left(t\_1 \cdot t\_1\right) \cdot angle\right)\right) \cdot \left(b - a\_m\right)\right) \cdot \mathsf{fma}\left(\sqrt{a\_m}, \sqrt{a\_m}, b\right)\\
\end{array}
\end{array}
if (pow.f64 b #s(literal 2 binary64)) < 5e79Initial program 58.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 rewrites64.8%
lift-*.f64N/A
lift-PI.f64N/A
add-cube-cbrtN/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
pow2N/A
lower-pow.f64N/A
lift-PI.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-cbrt.f6467.3
Applied rewrites67.3%
if 5e79 < (pow.f64 b #s(literal 2 binary64)) Initial program 45.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 rewrites66.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.f6471.5
Applied rewrites71.5%
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.f6433.2
Applied rewrites33.2%
Final simplification49.4%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (sqrt (PI))) (t_1 (cbrt (PI))))
(if (<= (/ angle 180.0) 5.5e+238)
(*
(* (sin (* 0.011111111111111112 (* (* t_0 t_0) angle))) (- b a_m))
(fma (sqrt a_m) (sqrt a_m) b))
(*
(*
(sin (* (* (* t_1 angle) (pow t_1 2.0)) 0.011111111111111112))
(- b a_m))
(+ b a_m)))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
t_1 := \sqrt[3]{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;\frac{angle}{180} \leq 5.5 \cdot 10^{+238}:\\
\;\;\;\;\left(\sin \left(0.011111111111111112 \cdot \left(\left(t\_0 \cdot t\_0\right) \cdot angle\right)\right) \cdot \left(b - a\_m\right)\right) \cdot \mathsf{fma}\left(\sqrt{a\_m}, \sqrt{a\_m}, b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(\left(\left(t\_1 \cdot angle\right) \cdot {t\_1}^{2}\right) \cdot 0.011111111111111112\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 5.50000000000000012e238Initial program 52.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 rewrites67.2%
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.f6468.9
Applied rewrites68.9%
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.f6431.0
Applied rewrites31.0%
if 5.50000000000000012e238 < (/.f64 angle #s(literal 180 binary64)) Initial program 26.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 rewrites32.2%
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.f6436.7
Applied rewrites36.7%
Final simplification31.3%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (if (<= (- (pow b 2.0) (pow a_m 2.0)) -1e-228) (* (* (* a_m angle) (* -0.011111111111111112 a_m)) (PI)) (* (* b b) (fma (* (PI) angle) 0.011111111111111112 0.0))))
\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;{b}^{2} - {a\_m}^{2} \leq -1 \cdot 10^{-228}:\\
\;\;\;\;\left(\left(a\_m \cdot angle\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right) \cdot \mathsf{PI}\left(\right)\\
\mathbf{else}:\\
\;\;\;\;\left(b \cdot b\right) \cdot \mathsf{fma}\left(\mathsf{PI}\left(\right) \cdot angle, 0.011111111111111112, 0\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < -1.00000000000000003e-228Initial program 56.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--.f6451.0
Applied rewrites51.0%
Taylor expanded in b around 0
Applied rewrites51.0%
Applied rewrites61.9%
Applied rewrites62.0%
if -1.00000000000000003e-228 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 49.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--.f6453.5
Applied rewrites53.5%
Taylor expanded in b around inf
Applied rewrites54.5%
Final simplification57.2%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (if (<= (- (pow b 2.0) (pow a_m 2.0)) -1e-228) (* (* (* a_m angle) (* -0.011111111111111112 a_m)) (PI)) (* (* (* (* b b) (PI)) angle) 0.011111111111111112)))
\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;{b}^{2} - {a\_m}^{2} \leq -1 \cdot 10^{-228}:\\
\;\;\;\;\left(\left(a\_m \cdot angle\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right) \cdot \mathsf{PI}\left(\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\left(b \cdot b\right) \cdot \mathsf{PI}\left(\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))) < -1.00000000000000003e-228Initial program 56.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--.f6451.0
Applied rewrites51.0%
Taylor expanded in b around 0
Applied rewrites51.0%
Applied rewrites61.9%
Applied rewrites62.0%
if -1.00000000000000003e-228 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 49.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--.f6453.5
Applied rewrites53.5%
Taylor expanded in b around inf
Applied rewrites54.5%
Final simplification57.2%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(if (<= (/ angle 180.0) 5.5e+238)
(*
(* (sin (* 0.011111111111111112 (* (* t_0 t_0) angle))) (- b a_m))
(fma (sqrt a_m) (sqrt a_m) b))
(*
(* (* (fma b (- b a_m) (* a_m a_m)) (/ 1.0 b)) (+ b a_m))
(* (* 0.011111111111111112 (PI)) angle)))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;\frac{angle}{180} \leq 5.5 \cdot 10^{+238}:\\
\;\;\;\;\left(\sin \left(0.011111111111111112 \cdot \left(\left(t\_0 \cdot t\_0\right) \cdot angle\right)\right) \cdot \left(b - a\_m\right)\right) \cdot \mathsf{fma}\left(\sqrt{a\_m}, \sqrt{a\_m}, b\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{fma}\left(b, b - a\_m, a\_m \cdot a\_m\right) \cdot \frac{1}{b}\right) \cdot \left(b + a\_m\right)\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 5.50000000000000012e238Initial program 52.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 rewrites67.2%
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.f6468.9
Applied rewrites68.9%
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.f6431.0
Applied rewrites31.0%
if 5.50000000000000012e238 < (/.f64 angle #s(literal 180 binary64)) Initial program 26.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--.f6422.1
Applied rewrites22.1%
Applied rewrites1.1%
Taylor expanded in b around inf
Applied rewrites22.1%
Final simplification30.7%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(if (<= (/ angle 180.0) 5.5e+238)
(*
(+ b a_m)
(* (sin (* 0.011111111111111112 (* (* t_0 t_0) angle))) (- b a_m)))
(*
(* (* (fma b (- b a_m) (* a_m a_m)) (/ 1.0 b)) (+ b a_m))
(* (* 0.011111111111111112 (PI)) angle)))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;\frac{angle}{180} \leq 5.5 \cdot 10^{+238}:\\
\;\;\;\;\left(b + a\_m\right) \cdot \left(\sin \left(0.011111111111111112 \cdot \left(\left(t\_0 \cdot t\_0\right) \cdot angle\right)\right) \cdot \left(b - a\_m\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{fma}\left(b, b - a\_m, a\_m \cdot a\_m\right) \cdot \frac{1}{b}\right) \cdot \left(b + a\_m\right)\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 5.50000000000000012e238Initial program 52.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 rewrites67.2%
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.f6468.9
Applied rewrites68.9%
if 5.50000000000000012e238 < (/.f64 angle #s(literal 180 binary64)) Initial program 26.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--.f6422.1
Applied rewrites22.1%
Applied rewrites1.1%
Taylor expanded in b around inf
Applied rewrites22.1%
Final simplification67.1%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (sqrt (PI))))
(if (<= b 2.25e+223)
(* (* (sin (* (* 0.011111111111111112 angle) (PI))) (- b a_m)) (+ b a_m))
(*
(* (sin (* (* (* t_0 angle) 0.011111111111111112) t_0)) (- b a_m))
(+ b a_m)))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
\mathbf{if}\;b \leq 2.25 \cdot 10^{+223}:\\
\;\;\;\;\left(\sin \left(\left(0.011111111111111112 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\sin \left(\left(\left(t\_0 \cdot angle\right) \cdot 0.011111111111111112\right) \cdot t\_0\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\end{array}
\end{array}
if b < 2.25e223Initial program 53.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 rewrites65.1%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6464.8
Applied rewrites64.8%
if 2.25e223 < b Initial program 36.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 rewrites71.9%
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.f6483.9
Applied rewrites83.9%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
associate-*r*N/A
lower-*.f64N/A
lower-*.f64N/A
lower-*.f6483.9
Applied rewrites83.9%
Final simplification66.7%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(if (<= (/ angle 180.0) 1e+70)
(* (* (sin (* (* 0.011111111111111112 angle) (PI))) (- b a_m)) (+ b a_m))
(*
(* (* (fma b (- b a_m) (* a_m a_m)) (/ 1.0 b)) (+ b a_m))
(* (* 0.011111111111111112 (PI)) angle))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 10^{+70}:\\
\;\;\;\;\left(\sin \left(\left(0.011111111111111112 \cdot angle\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{fma}\left(b, b - a\_m, a\_m \cdot a\_m\right) \cdot \frac{1}{b}\right) \cdot \left(b + a\_m\right)\right) \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 1.00000000000000007e70Initial program 58.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 rewrites74.5%
lift-*.f64N/A
*-commutativeN/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f6472.9
Applied rewrites72.9%
if 1.00000000000000007e70 < (/.f64 angle #s(literal 180 binary64)) Initial program 22.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--.f6423.6
Applied rewrites23.6%
Applied rewrites1.5%
Taylor expanded in b around inf
Applied rewrites21.3%
Final simplification63.6%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (if (<= (/ angle 180.0) 1e-39) (* (* (* (* 0.011111111111111112 (PI)) angle) (- b a_m)) (+ b a_m)) (* (* (+ b a_m) (- b a_m)) (sin (* (* (PI) angle) 0.011111111111111112)))))
\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
\mathbf{if}\;\frac{angle}{180} \leq 10^{-39}:\\
\;\;\;\;\left(\left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b + a\_m\right) \cdot \left(b - a\_m\right)\right) \cdot \sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 9.99999999999999929e-40Initial program 59.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--.f6462.4
Applied rewrites62.4%
Applied rewrites73.8%
if 9.99999999999999929e-40 < (/.f64 angle #s(literal 180 binary64)) Initial program 29.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
*-commutativeN/A
lower-*.f64N/A
lower--.f64N/A
+-commutativeN/A
lower-+.f64N/A
Applied rewrites35.5%
Final simplification63.9%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (* (* 0.011111111111111112 (PI)) angle)))
(if (<= (/ angle 180.0) 1e-39)
(* (* t_0 (- b a_m)) (+ b a_m))
(* (* (+ b a_m) (- b a_m)) (sin t_0)))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\\
\mathbf{if}\;\frac{angle}{180} \leq 10^{-39}:\\
\;\;\;\;\left(t\_0 \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b + a\_m\right) \cdot \left(b - a\_m\right)\right) \cdot \sin t\_0\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 9.99999999999999929e-40Initial program 59.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--.f6462.4
Applied rewrites62.4%
Applied rewrites73.8%
if 9.99999999999999929e-40 < (/.f64 angle #s(literal 180 binary64)) Initial program 29.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 rewrites35.5%
lift-*.f64N/A
lift-*.f64N/A
associate-*r*N/A
lift-+.f64N/A
+-commutativeN/A
lift--.f64N/A
difference-of-squaresN/A
pow2N/A
lift-pow.f64N/A
pow2N/A
lift-pow.f64N/A
lift--.f64N/A
lower-*.f6427.9
lift--.f64N/A
lift-pow.f64N/A
pow2N/A
lift-pow.f64N/A
pow2N/A
difference-of-squaresN/A
lift-+.f64N/A
lift--.f64N/A
lift-*.f6435.5
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
Applied rewrites36.5%
Final simplification64.2%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (* (* (sin (* (* (PI) angle) 0.011111111111111112)) (- b a_m)) (+ b a_m)))
\begin{array}{l}
a_m = \left|a\right|
\\
\left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)
\end{array}
Initial program 51.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%
Final simplification65.8%
a_m = (fabs.f64 a)
(FPCore (a_m b angle)
:precision binary64
(let* ((t_0 (* (* 0.011111111111111112 (PI)) angle)))
(if (<= (/ angle 180.0) 5e+120)
(* (* t_0 (- b a_m)) (+ b a_m))
(* (* (* (fma b (- b a_m) (* a_m a_m)) (/ 1.0 b)) (+ b a_m)) t_0))))\begin{array}{l}
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\\
\mathbf{if}\;\frac{angle}{180} \leq 5 \cdot 10^{+120}:\\
\;\;\;\;\left(t\_0 \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(\mathsf{fma}\left(b, b - a\_m, a\_m \cdot a\_m\right) \cdot \frac{1}{b}\right) \cdot \left(b + a\_m\right)\right) \cdot t\_0\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 5.00000000000000019e120Initial program 56.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--.f6458.6
Applied rewrites58.6%
Applied rewrites68.5%
if 5.00000000000000019e120 < (/.f64 angle #s(literal 180 binary64)) Initial program 21.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--.f6415.8
Applied rewrites15.8%
Applied rewrites1.7%
Taylor expanded in b around inf
Applied rewrites18.5%
Final simplification61.4%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (* (* (* (* 0.011111111111111112 (PI)) angle) (- b a_m)) (+ b a_m)))
\begin{array}{l}
a_m = \left|a\right|
\\
\left(\left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right) \cdot \left(b - a\_m\right)\right) \cdot \left(b + a\_m\right)
\end{array}
Initial program 51.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.6
Applied rewrites52.6%
Applied rewrites61.1%
Final simplification61.1%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (* (* (* a_m angle) (* -0.011111111111111112 a_m)) (PI)))
\begin{array}{l}
a_m = \left|a\right|
\\
\left(\left(a\_m \cdot angle\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)\right) \cdot \mathsf{PI}\left(\right)
\end{array}
Initial program 51.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.6
Applied rewrites52.6%
Taylor expanded in b around 0
Applied rewrites28.3%
Applied rewrites32.5%
Applied rewrites32.5%
Final simplification32.5%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (* (* (* -0.011111111111111112 a_m) (PI)) (* a_m angle)))
\begin{array}{l}
a_m = \left|a\right|
\\
\left(\left(-0.011111111111111112 \cdot a\_m\right) \cdot \mathsf{PI}\left(\right)\right) \cdot \left(a\_m \cdot angle\right)
\end{array}
Initial program 51.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.6
Applied rewrites52.6%
Taylor expanded in b around 0
Applied rewrites28.3%
Applied rewrites32.5%
Applied rewrites32.5%
Final simplification32.5%
a_m = (fabs.f64 a) (FPCore (a_m b angle) :precision binary64 (* (* (* (PI) angle) a_m) (* -0.011111111111111112 a_m)))
\begin{array}{l}
a_m = \left|a\right|
\\
\left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right) \cdot \left(-0.011111111111111112 \cdot a\_m\right)
\end{array}
Initial program 51.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.6
Applied rewrites52.6%
Taylor expanded in b around 0
Applied rewrites28.3%
Applied rewrites32.5%
Final simplification32.5%
herbie shell --seed 2024248
(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)))))