Details

simplify10.8m (37.6%)

sample9.5m (33.1%)

Algorithm
78×intervals
Results
5.0m26288×body10240exit
1.9m43571×body1280valid
38.9s30540×body640valid
27.2s202536×body80valid
18.5s150771×body80nan
18.1s27686×body320valid
12.7s36538×body160valid
10.7s163277×pre80true
2.6s3037×body2560valid
1.5s4104×pre10240exit
1.0s8004×body160nan
295.0ms202×body5120valid
1.0msbody320nan

prune5.4m (18.7%)

series1.5m (5.2%)

Calls

468 calls:

8.4s
(/ (+ (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2))))))) (+ (* (cos phi1) (cos phi1)) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (- (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (cos phi1)))))
2.7s
(+ (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))))))
1.7s
(- (pow (cos delta) 3) (* (pow (sin (asin (+ (* (cos theta) (* (sin delta) (cos phi1))) (* (cos delta) (sin phi1))))) 3) (* (sin phi1) (* (sin phi1) (sin phi1)))))
1.7s
(- (pow (cos delta) 3) (* (* (* (sin (asin (+ (* (cos theta) (* (sin delta) (cos phi1))) (* (cos delta) (sin phi1))))) (sin (asin (+ (* (cos theta) (* (sin delta) (cos phi1))) (* (cos delta) (sin phi1)))))) (sin (asin (+ (* (cos theta) (* (sin delta) (cos phi1))) (* (cos delta) (sin phi1)))))) (* (* (sin phi1) (sin phi1)) (sin phi1))))
1.7s
(- (pow (cos delta) 3) (pow (* (sin (asin (+ (* (cos theta) (* (sin delta) (cos phi1))) (* (cos delta) (sin phi1))))) (sin phi1)) 3))

rewrite45.6s (2.7%)

Algorithm
145×rewrite-expression-head
Calls

468 calls:

2.3s
(sqrt (+ (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2.0)) (* (- lambda1 lambda2) (* (* (cbrt (cos (/ (+ phi1 phi2) 2.0))) (cbrt (cos (/ (+ phi1 phi2) 2.0)))) (cbrt (cos (/ (+ phi1 phi2) 2.0))))))) (* (- phi1 phi2) (- phi1 phi2))))
1.8s
(/ (+ (* (* (cos phi1) (cos phi1)) (cos phi1)) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2))))))) (+ (* (cos phi1) (cos phi1)) (* (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (- (* (cos phi2) (+ (* (cos lambda2) (cos lambda1)) (* (sin lambda1) (sin lambda2)))) (cos phi1)))))
1.2s
(sqrt (* (cbrt (+ (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2.0)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))))) (* (- phi1 phi2) (- phi1 phi2)))) (cbrt (+ (* (- lambda1 lambda2) (* (cos (/ (+ phi1 phi2) 2.0)) (* (- lambda1 lambda2) (cos (/ (+ phi1 phi2) 2.0))))) (* (- phi1 phi2) (- phi1 phi2))))))
1.2s
(- (* (* (* (cbrt (/ x (+ x 1.0))) (cbrt (/ x (+ x 1.0)))) (cbrt (/ x (+ x 1.0)))) (* (* (cbrt (/ x (+ x 1.0))) (cbrt (/ x (+ x 1.0)))) (cbrt (/ x (+ x 1.0))))) (* (/ (+ x 1.0) (- x 1.0)) (/ (+ x 1.0) (- x 1.0))))
886.0ms
(* (sqrt (- (+ (* 0.5 (* s c_p)) 1) (* 0.5 (* s c_n)))) (sqrt (- (+ (* 0.5 (* s c_p)) 1) (* 0.5 (* s c_n)))))
Rules
14787×frac-times
13698×flip--
13697×flip3--
12580×associate-*r/
12298×associate-*l/
9999×cbrt-div
9562×frac-add
4802×sqrt-div
3905×*-un-lft-identity
3819×times-frac
3607×add-sqr-sqrt
2905×add-exp-log
2678×add-cube-cbrt
2089×add-cbrt-cube
1356×pow1
1194×sqrt-prod
1037×prod-exp
820×div-exp
726×add-log-exp
722×flip-+
721×flip3-+
636×cbrt-unprod
547×associate-*r*
542×associate-*l*
483×associate-/r*
461×cbrt-undiv
362×associate-/l*
354×distribute-lft-out
342×pow-prod-down
335×cos-mult
307×cbrt-prod
301×difference-of-squares
279×pow-exp
263×div-inv
262×tan-quot
251×frac-sub
243×distribute-lft-out--
222×associate-/r/
201×sin-mult
197×pow-to-exp
187×associate-/l/
144×unswap-sqr
132×log-prod
123×*-commutative
115×unpow-prod-down
105×pow-prod-up clear-num frac-2neg
103×sub-neg
77×swap-sqr
73×diff-log
66×distribute-rgt-in distribute-lft-in sum-log
65×pow-sqr
64×exp-prod
59×sqrt-pow1
55×pow-plus
52×log-pow
51×pow1/2
49×pow1/3
42×sin-cos-mult log-div
41×sqr-pow
40×+-commutative
38×pow2
37×1-exp rec-exp
35×div-sub
31×rem-sqrt-square associate-+r+
30×distribute-rgt-neg-in
27×associate--l+
21×cos-diff sub-div
19×rem-log-exp
18×distribute-lft-neg-in
17×sin-diff
16×pow3
15×pow-unpow
14×neg-sub0
13×associate--r+
12×distribute-rgt-out cos-sum
11×pow-pow
10×cube-unmult associate--l-
sin-sum
distribute-frac-neg distribute-rgt-neg-out associate-+l-
associate-+r- cube-prod acos-asin asin-acos
difference-cubes associate--r- exp-sum
rem-cube-cbrt sin-neg sum-cubes rem-exp-log sqrt-undiv neg-mul-1
cube-div pow-flip neg-log
acos-neg unpow3 sqrt-unprod inv-pow cube-mult rem-cbrt-cube
un-div-inv distribute-lft1-in distribute-lft-neg-out rem-square-sqrt tanh-def
exp-diff sqr-sin tanh-undef exp-to-pow

regimes34.2s (2.0%)

Accuracy

Total 62.3b remaining (32.1%)

Threshold costs 4.6b (2.4%)

9.5b33.8%Equirectangular approximation to distance on a great circle
8.4b38.2%Quadratic roots, narrow range
5.9b15.1%Quadratic roots, medium range
5.5b59%Cubic critical, narrow range
5.2b82.1%Quadratic roots, full range

localize10.8s (0.6%)

bsearch1.1s (0.1%)

end8.0ms (0.0%)