
(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 (- (- (/ a_m b_m) 1.0)))
(t_1 (cbrt (pow (PI) 1.5)))
(t_2 (sqrt (PI)))
(t_3 (* t_2 angle)))
(if (<= b_m 5.4e-24)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle (* t_1 t_1)) 0.011111111111111112))))
(if (<= b_m 3.2e+166)
(*
(+ a_m b_m)
(*
(*
(sin
(*
(cbrt (PI))
(* t_3 (* 0.011111111111111112 (pow (PI) 0.16666666666666666)))))
t_0)
b_m))
(*
(+ a_m b_m)
(* (* (sin (* t_3 (* t_2 0.011111111111111112))) t_0) b_m))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := -\left(\frac{a\_m}{b\_m} - 1\right)\\
t_1 := \sqrt[3]{{\mathsf{PI}\left(\right)}^{1.5}}\\
t_2 := \sqrt{\mathsf{PI}\left(\right)}\\
t_3 := t\_2 \cdot angle\\
\mathbf{if}\;b\_m \leq 5.4 \cdot 10^{-24}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle \cdot \left(t\_1 \cdot t\_1\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{elif}\;b\_m \leq 3.2 \cdot 10^{+166}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\sin \left(\sqrt[3]{\mathsf{PI}\left(\right)} \cdot \left(t\_3 \cdot \left(0.011111111111111112 \cdot {\mathsf{PI}\left(\right)}^{0.16666666666666666}\right)\right)\right) \cdot t\_0\right) \cdot b\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\sin \left(t\_3 \cdot \left(t\_2 \cdot 0.011111111111111112\right)\right) \cdot t\_0\right) \cdot b\_m\right)\\
\end{array}
\end{array}
if b < 5.40000000000000014e-24Initial 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 rewrites67.2%
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 rewrites66.5%
if 5.40000000000000014e-24 < b < 3.19999999999999968e166Initial program 53.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 rewrites64.4%
Taylor expanded in b around inf
distribute-rgt-inN/A
*-commutativeN/A
remove-double-negN/A
*-commutativeN/A
distribute-lft-neg-outN/A
mul-1-negN/A
neg-mul-1N/A
associate-*l*N/A
distribute-lft-inN/A
distribute-rgt-inN/A
Applied rewrites64.4%
Applied rewrites78.6%
if 3.19999999999999968e166 < b Initial program 55.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 rewrites84.0%
Taylor expanded in b around inf
distribute-rgt-inN/A
*-commutativeN/A
remove-double-negN/A
*-commutativeN/A
distribute-lft-neg-outN/A
mul-1-negN/A
neg-mul-1N/A
associate-*l*N/A
distribute-lft-inN/A
distribute-rgt-inN/A
Applied rewrites84.0%
Applied rewrites91.9%
Final simplification71.8%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* (PI) (/ angle 180.0))))
(if (<=
(* (* (* 2.0 (- (pow b_m 2.0) (pow a_m 2.0))) (sin t_0)) (cos t_0))
-2e+251)
(*
(+ a_m b_m)
(*
(- b_m a_m)
(*
(fma
(* (* (pow (PI) 3.0) -2.2862368541380886e-7) angle)
angle
(* 0.011111111111111112 (PI)))
angle)))
(*
(+ a_m b_m)
(*
(- b_m a_m)
(sin
(*
(*
(* (* angle (sqrt (PI))) (cbrt (PI)))
(pow (PI) 0.16666666666666666))
0.011111111111111112)))))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \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\_0\right) \cdot \cos t\_0 \leq -2 \cdot 10^{+251}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\mathsf{fma}\left(\left({\mathsf{PI}\left(\right)}^{3} \cdot -2.2862368541380886 \cdot 10^{-7}\right) \cdot angle, angle, 0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(\left(\left(angle \cdot \sqrt{\mathsf{PI}\left(\right)}\right) \cdot \sqrt[3]{\mathsf{PI}\left(\right)}\right) \cdot {\mathsf{PI}\left(\right)}^{0.16666666666666666}\right) \cdot 0.011111111111111112\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))))) < -2.0000000000000001e251Initial program 48.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.1%
Taylor expanded in angle around 0
*-commutativeN/A
+-commutativeN/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
lower-*.f64N/A
Applied rewrites63.6%
if -2.0000000000000001e251 < (*.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.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 rewrites70.3%
lift-*.f64N/A
lift-PI.f64N/A
add-sqr-sqrtN/A
associate-*r*N/A
add-cube-cbrtN/A
sqrt-prodN/A
pow2N/A
sqrt-pow1N/A
metadata-evalN/A
unpow1N/A
associate-*r*N/A
lower-*.f64N/A
Applied rewrites71.0%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (* 0.011111111111111112 (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))
-4e+286)
(*
(+ a_m b_m)
(*
(- b_m a_m)
(*
(fma (* (* (pow (PI) 3.0) -2.2862368541380886e-7) angle) angle t_0)
angle)))
(* (- b_m a_m) (* (+ b_m a_m) (sin (* t_0 angle)))))))\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)\\
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 -4 \cdot 10^{+286}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \left(\mathsf{fma}\left(\left({\mathsf{PI}\left(\right)}^{3} \cdot -2.2862368541380886 \cdot 10^{-7}\right) \cdot angle, angle, t\_0\right) \cdot angle\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(b\_m - a\_m\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \sin \left(t\_0 \cdot angle\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))))) < -4.00000000000000013e286Initial program 50.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 rewrites69.0%
Taylor expanded in angle around 0
*-commutativeN/A
+-commutativeN/A
*-commutativeN/A
associate-*r*N/A
*-commutativeN/A
lower-*.f64N/A
Applied rewrites67.1%
if -4.00000000000000013e286 < (*.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 54.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 rewrites69.4%
lift-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lower-*.f6469.4
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f6469.5
Applied rewrites69.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (sqrt (PI))) (t_1 (pow (cbrt t_0) 3.0)))
(if (<= b_m 3.2e+166)
(*
(+ a_m b_m)
(* (- b_m a_m) (sin (* (* angle (* t_1 t_1)) 0.011111111111111112))))
(*
(+ a_m b_m)
(*
(*
(sin (* (* t_0 angle) (* t_0 0.011111111111111112)))
(- (- (/ a_m b_m) 1.0)))
b_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := \sqrt{\mathsf{PI}\left(\right)}\\
t_1 := {\left(\sqrt[3]{t\_0}\right)}^{3}\\
\mathbf{if}\;b\_m \leq 3.2 \cdot 10^{+166}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle \cdot \left(t\_1 \cdot t\_1\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\sin \left(\left(t\_0 \cdot angle\right) \cdot \left(t\_0 \cdot 0.011111111111111112\right)\right) \cdot \left(-\left(\frac{a\_m}{b\_m} - 1\right)\right)\right) \cdot b\_m\right)\\
\end{array}
\end{array}
if b < 3.19999999999999968e166Initial program 53.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.8%
rem-cube-cbrtN/A
lift-PI.f64N/A
add-sqr-sqrtN/A
cbrt-prodN/A
unpow-prod-downN/A
lower-*.f64N/A
lower-pow.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f64N/A
lower-pow.f64N/A
lower-cbrt.f64N/A
lift-PI.f64N/A
lower-sqrt.f6468.4
Applied rewrites68.4%
if 3.19999999999999968e166 < b Initial program 55.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 rewrites84.0%
Taylor expanded in b around inf
distribute-rgt-inN/A
*-commutativeN/A
remove-double-negN/A
*-commutativeN/A
distribute-lft-neg-outN/A
mul-1-negN/A
neg-mul-1N/A
associate-*l*N/A
distribute-lft-inN/A
distribute-rgt-inN/A
Applied rewrites84.0%
Applied rewrites91.9%
Final simplification71.9%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (- (pow b_m 2.0) (pow a_m 2.0))))
(if (or (<= t_0 2e-194) (not (<= t_0 INFINITY)))
(* (* (* (* (PI) angle) a_m) a_m) -0.011111111111111112)
(* (PI) (* (* (* angle b_m) b_m) 0.011111111111111112)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := {b\_m}^{2} - {a\_m}^{2}\\
\mathbf{if}\;t\_0 \leq 2 \cdot 10^{-194} \lor \neg \left(t\_0 \leq \infty\right):\\
\;\;\;\;\left(\left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot a\_m\right) \cdot a\_m\right) \cdot -0.011111111111111112\\
\mathbf{else}:\\
\;\;\;\;\mathsf{PI}\left(\right) \cdot \left(\left(\left(angle \cdot b\_m\right) \cdot b\_m\right) \cdot 0.011111111111111112\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < 2.00000000000000004e-194 or +inf.0 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 48.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--.f6456.6
Applied rewrites56.6%
Taylor expanded in a around inf
Applied rewrites68.4%
if 2.00000000000000004e-194 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < +inf.0Initial program 60.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--.f6452.5
Applied rewrites52.5%
Taylor expanded in a around 0
Applied rewrites51.9%
Applied rewrites51.9%
Applied rewrites59.0%
Final simplification64.5%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (- (pow b_m 2.0) (pow a_m 2.0))))
(if (or (<= t_0 2e-194) (not (<= t_0 INFINITY)))
(* (* -0.011111111111111112 (* a_m a_m)) (* (PI) angle))
(* (PI) (* (* (* angle b_m) b_m) 0.011111111111111112)))))\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\begin{array}{l}
t_0 := {b\_m}^{2} - {a\_m}^{2}\\
\mathbf{if}\;t\_0 \leq 2 \cdot 10^{-194} \lor \neg \left(t\_0 \leq \infty\right):\\
\;\;\;\;\left(-0.011111111111111112 \cdot \left(a\_m \cdot a\_m\right)\right) \cdot \left(\mathsf{PI}\left(\right) \cdot angle\right)\\
\mathbf{else}:\\
\;\;\;\;\mathsf{PI}\left(\right) \cdot \left(\left(\left(angle \cdot b\_m\right) \cdot b\_m\right) \cdot 0.011111111111111112\right)\\
\end{array}
\end{array}
if (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < 2.00000000000000004e-194 or +inf.0 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) Initial program 48.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--.f6456.6
Applied rewrites56.6%
Taylor expanded in a around 0
Applied rewrites19.0%
Taylor expanded in a around inf
Applied rewrites57.8%
if 2.00000000000000004e-194 < (-.f64 (pow.f64 b #s(literal 2 binary64)) (pow.f64 a #s(literal 2 binary64))) < +inf.0Initial program 60.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--.f6452.5
Applied rewrites52.5%
Taylor expanded in a around 0
Applied rewrites51.9%
Applied rewrites51.9%
Applied rewrites59.0%
Final simplification58.3%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (cbrt (PI))) (t_1 (sqrt (PI))))
(if (<= b_m 2.4e+166)
(*
(+ a_m b_m)
(*
(- b_m a_m)
(sin (* (* (* angle (pow t_0 2.0)) t_0) 0.011111111111111112))))
(*
(+ a_m b_m)
(*
(*
(sin (* (* t_1 angle) (* t_1 0.011111111111111112)))
(- (- (/ a_m b_m) 1.0)))
b_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
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\_m \leq 2.4 \cdot 10^{+166}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(\left(angle \cdot {t\_0}^{2}\right) \cdot t\_0\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\sin \left(\left(t\_1 \cdot angle\right) \cdot \left(t\_1 \cdot 0.011111111111111112\right)\right) \cdot \left(-\left(\frac{a\_m}{b\_m} - 1\right)\right)\right) \cdot b\_m\right)\\
\end{array}
\end{array}
if b < 2.39999999999999992e166Initial program 53.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.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.f6470.9
Applied rewrites70.9%
if 2.39999999999999992e166 < b Initial program 55.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 rewrites84.0%
Taylor expanded in b around inf
distribute-rgt-inN/A
*-commutativeN/A
remove-double-negN/A
*-commutativeN/A
distribute-lft-neg-outN/A
mul-1-negN/A
neg-mul-1N/A
associate-*l*N/A
distribute-lft-inN/A
distribute-rgt-inN/A
Applied rewrites84.0%
Applied rewrites91.9%
Final simplification74.1%
b_m = (fabs.f64 b)
a_m = (fabs.f64 a)
(FPCore (a_m b_m angle)
:precision binary64
(let* ((t_0 (cbrt (PI))) (t_1 (sqrt (PI))))
(if (<= b_m 2.4e+166)
(*
(+ a_m b_m)
(*
(- b_m a_m)
(sin (* (* angle (* (pow t_0 2.0) t_0)) 0.011111111111111112))))
(*
(+ a_m b_m)
(*
(*
(sin (* (* t_1 angle) (* t_1 0.011111111111111112)))
(- (- (/ a_m b_m) 1.0)))
b_m)))))\begin{array}{l}
b_m = \left|b\right|
\\
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\_m \leq 2.4 \cdot 10^{+166}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(b\_m - a\_m\right) \cdot \sin \left(\left(angle \cdot \left({t\_0}^{2} \cdot t\_0\right)\right) \cdot 0.011111111111111112\right)\right)\\
\mathbf{else}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\left(\sin \left(\left(t\_1 \cdot angle\right) \cdot \left(t\_1 \cdot 0.011111111111111112\right)\right) \cdot \left(-\left(\frac{a\_m}{b\_m} - 1\right)\right)\right) \cdot b\_m\right)\\
\end{array}
\end{array}
if b < 2.39999999999999992e166Initial program 53.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.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.f6469.6
Applied rewrites69.6%
if 2.39999999999999992e166 < b Initial program 55.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 rewrites84.0%
Taylor expanded in b around inf
distribute-rgt-inN/A
*-commutativeN/A
remove-double-negN/A
*-commutativeN/A
distribute-lft-neg-outN/A
mul-1-negN/A
neg-mul-1N/A
associate-*l*N/A
distribute-lft-inN/A
distribute-rgt-inN/A
Applied rewrites84.0%
Applied rewrites91.9%
Final simplification72.9%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (pow a_m 2.0) 5e-275) (* (+ a_m b_m) (* (sin (* (* (PI) angle) 0.011111111111111112)) b_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}\;{a\_m}^{2} \leq 5 \cdot 10^{-275}:\\
\;\;\;\;\left(a\_m + b\_m\right) \cdot \left(\sin \left(\left(\mathsf{PI}\left(\right) \cdot angle\right) \cdot 0.011111111111111112\right) \cdot b\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(angle \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot \left(b\_m + a\_m\right)\\
\end{array}
\end{array}
if (pow.f64 a #s(literal 2 binary64)) < 4.99999999999999983e-275Initial program 64.4%
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.3%
Taylor expanded in a around 0
*-commutativeN/A
lower-*.f64N/A
lower-sin.f64N/A
*-commutativeN/A
lower-*.f64N/A
*-commutativeN/A
lower-*.f64N/A
lower-PI.f6470.6
Applied rewrites70.6%
if 4.99999999999999983e-275 < (pow.f64 a #s(literal 2 binary64)) Initial program 49.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--.f6455.2
Applied rewrites55.2%
Applied rewrites66.5%
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-13)
(* (* angle (* t_0 (- b_m a_m))) (+ b_m a_m))
(* (* (+ b_m a_m) (- b_m a_m)) (sin (* t_0 angle))))))\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^{-13}:\\
\;\;\;\;\left(angle \cdot \left(t\_0 \cdot \left(b\_m - a\_m\right)\right)\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(\left(b\_m + a\_m\right) \cdot \left(b\_m - a\_m\right)\right) \cdot \sin \left(t\_0 \cdot angle\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.9999999999999999e-13Initial program 60.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--.f6462.5
Applied rewrites62.5%
Applied rewrites75.1%
if 4.9999999999999999e-13 < (/.f64 angle #s(literal 180 binary64)) Initial program 33.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 rewrites37.4%
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
unpow2N/A
lift-pow.f64N/A
lift--.f64N/A
lower-*.f6434.2
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-*.f6437.3
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
Applied rewrites38.7%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (if (<= (/ angle 180.0) 1e+118) (* (* angle (* (* 0.011111111111111112 (PI)) (- b_m a_m))) (+ 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 10^{+118}:\\
\;\;\;\;\left(angle \cdot \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot \left(b\_m - a\_m\right)\right)\right) \cdot \left(b\_m + a\_m\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)) < 9.99999999999999967e117Initial program 58.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--.f6462.0
Applied rewrites62.0%
Applied rewrites73.1%
if 9.99999999999999967e117 < (/.f64 angle #s(literal 180 binary64)) Initial program 22.0%
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 rewrites22.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-*.f6421.0
Applied rewrites21.0%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (- 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|
\\
\left(b\_m - a\_m\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \sin \left(\left(0.011111111111111112 \cdot \mathsf{PI}\left(\right)\right) \cdot angle\right)\right)
\end{array}
Initial program 53.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 rewrites69.3%
lift-*.f64N/A
lift-+.f64N/A
+-commutativeN/A
lift-+.f64N/A
lift-*.f64N/A
associate-*r*N/A
*-commutativeN/A
associate-*l*N/A
lower-*.f64N/A
lower-*.f6469.3
lift-*.f64N/A
lift-*.f64N/A
associate-*l*N/A
*-commutativeN/A
lift-*.f64N/A
*-commutativeN/A
lower-*.f6470.6
Applied rewrites70.6%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (+ 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|
\\
\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}
Initial program 53.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 rewrites69.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+126)
(* (* angle (* t_0 (- b_m a_m))) (+ b_m a_m))
(* (* angle t_0) (* (+ b_m a_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^{+126}:\\
\;\;\;\;\left(angle \cdot \left(t\_0 \cdot \left(b\_m - a\_m\right)\right)\right) \cdot \left(b\_m + a\_m\right)\\
\mathbf{else}:\\
\;\;\;\;\left(angle \cdot t\_0\right) \cdot \left(\left(b\_m + a\_m\right) \cdot \left(-a\_m\right)\right)\\
\end{array}
\end{array}
if (/.f64 angle #s(literal 180 binary64)) < 4.99999999999999977e126Initial 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--.f6461.8
Applied rewrites61.8%
Applied rewrites72.8%
if 4.99999999999999977e126 < (/.f64 angle #s(literal 180 binary64)) Initial program 22.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--.f6412.9
Applied rewrites12.9%
Taylor expanded in a around inf
Applied rewrites11.0%
b_m = (fabs.f64 b) a_m = (fabs.f64 a) (FPCore (a_m b_m angle) :precision binary64 (* (PI) (* (* (* angle b_m) b_m) 0.011111111111111112)))
\begin{array}{l}
b_m = \left|b\right|
\\
a_m = \left|a\right|
\\
\mathsf{PI}\left(\right) \cdot \left(\left(\left(angle \cdot b\_m\right) \cdot b\_m\right) \cdot 0.011111111111111112\right)
\end{array}
Initial program 53.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--.f6454.9
Applied rewrites54.9%
Taylor expanded in a around 0
Applied rewrites32.7%
Applied rewrites32.8%
Applied rewrites35.0%
herbie shell --seed 2024313
(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)))))