Details

Time bar (total: 33.9s)

analyze7.3s (21.4%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.8%0.2%0
0%99.8%0.2%1
0%99.8%0.2%2
0%99.8%0.2%3
0%99.8%0.2%4
0%99.8%0.2%5
0%99.8%0.2%6
0%99.8%0.2%7
0%99.8%0.2%8
0%99.8%0.2%9
0%99.8%0.2%10
0%99.8%0.2%11
0%99.8%0.2%12
0.6%99.2%0.2%13
1.8%98%0.2%14
Compiler

Compiled 71 to 47 computations (33.8% saved)

sample433.0ms (1.3%)

Algorithm
intervals
Results
297.0ms175×body1024valid
55.0ms46×body512valid
36.0ms12×body2048valid
8.0ms11×body256valid
4.0ms12×body128valid
Compiler

Compiled 146 to 98 computations (32.9% saved)

simplify192.0ms (0.6%)

Algorithm
egg-herbie
Rules
714×distribute-rgt-neg-in_binary64
578×sub-neg_binary64
479×fabs-mul_binary64
468×cube-prod_binary64
458×sqr-pow_binary64
Counts
1 → 1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
027103
159103
2119103
3235103
4459103
5811103
61302103
72017103
82988103
93479103
104058103
114322103
124127103
133850103
144705103
154800103

prune7.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New101
Fresh011
Picked000
Done000
Total112
Error
23.0b
Counts
2 → 1
Alt Table
StatusErrorProgram
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
Compiler

Compiled 210 to 138 computations (34.3% saved)

localize34.0ms (0.1%)

Local error

Found 4 expressions with local error:

3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))

rewrite142.0ms (0.4%)

Algorithm
rewrite-expression-head
Error
22.7b
Rules
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
add-exp-log_binary64
Counts
4 → 32
Calls

4 calls:

8.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
7.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
6.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
Compiler

Compiled 2333 to 1346 computations (42.3% saved)

series303.0ms (0.9%)

Error
22.3b
Counts
4 → 46
Calls

4 calls:

42.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
41.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
41.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
40.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
Compiler

Compiled 7729 to 5049 computations (34.7% saved)

simplify132.0ms (0.4%)

Algorithm
egg-herbie
Rules
637×distribute-rgt-neg-in_binary64
610×cancel-sign-sub-inv_binary64
566×sub-neg_binary64
486×distribute-lft-neg-in_binary64
337×neg-mul-1_binary64
Counts
78 → 26
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0631524
11461448
23571348
39531330
422391330
542801330
644641330
748711330

prune124.0ms (0.4%)

Pruning

9 alts after pruning (8 fresh and 1 done)

PrunedKeptTotal
New18826
Fresh000
Picked011
Done000
Total18927
Error
22.6b
Counts
27 → 9
Alt Table
StatusErrorProgram
37.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2))))))))))))
40.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (sin.f64 (*.f64 1/2 lambda1)) (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
37.9b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (sin.f64 (*.f64 1/2 lambda1)) (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
36.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (sin.f64 (*.f64 -1/2 lambda2)) (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8))) (*.f64 lambda1 (*.f64 (cos.f64 (*.f64 -1/2 lambda2)) (+.f64 1/2 (*.f64 lambda1 (*.f64 lambda1 -1/48))))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
37.6b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))) (*.f64 (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8)) (sin.f64 (*.f64 lambda2 1/2))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
35.8b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
Compiler

Compiled 3343 to 2114 computations (36.8% saved)

localize40.0ms (0.1%)

Local error

Found 4 expressions with local error:

3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
6.0b
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))

rewrite201.0ms (0.6%)

Algorithm
rewrite-expression-head
Error
22.4b
Rules
12×cbrt-prod_binary64
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
Counts
4 → 45
Calls

4 calls:

7.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
6.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
Compiler

Compiled 3223 to 1914 computations (40.6% saved)

series347.0ms (1%)

Error
22.2b
Counts
4 → 47
Calls

4 calls:

43.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
42.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
42.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
41.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
Compiler

Compiled 8054 to 5341 computations (33.7% saved)

simplify225.0ms (0.7%)

Algorithm
egg-herbie
Rules
637×distribute-rgt-neg-in_binary64
626×fabs-mul_binary64
610×cancel-sign-sub-inv_binary64
528×unswap-sqr_binary64
379×*-commutative_binary64
Counts
92 → 46
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0891749
11821695
24651587
312301564
427521546
544371546
647451546
748601546
847401546
949711546
1049421546

prune214.0ms (0.6%)

Pruning

14 alts after pruning (14 fresh and 0 done)

PrunedKeptTotal
New38846
Fresh167
Picked101
Done101
Total411455
Error
22.6b
Counts
55 → 14
Alt Table
StatusErrorProgram
37.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2))))))))))))
40.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (sin.f64 (*.f64 1/2 lambda1)) (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
49.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (*.f64 (sqrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sqrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
38.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1) (sin.f64 (*.f64 1/2 lambda1)))) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
36.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (sin.f64 (*.f64 -1/2 lambda2)) (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8))) (*.f64 lambda1 (*.f64 (cos.f64 (*.f64 -1/2 lambda2)) (+.f64 1/2 (*.f64 lambda1 (*.f64 lambda1 -1/48))))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
37.6b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))) (*.f64 (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8)) (sin.f64 (*.f64 lambda2 1/2))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.1b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
38.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1) (sin.f64 (*.f64 1/2 lambda1))))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
35.8b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.1b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
Compiler

Compiled 5079 to 3252 computations (36% saved)

localize46.0ms (0.1%)

Local error

Found 4 expressions with local error:

3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
6.0b
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
6.0b
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))

rewrite333.0ms (1%)

Algorithm
rewrite-expression-head
Error
22.5b
Rules
24×cbrt-prod_binary64
10×*-un-lft-identity_binary64
10×add-sqr-sqrt_binary64
10×add-cube-cbrt_binary64
cube-prod_binary64
Counts
4 → 58
Calls

4 calls:

11.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
6.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
Compiler

Compiled 4173 to 2542 computations (39.1% saved)

series380.0ms (1.1%)

Error
22.4b
Counts
4 → 48
Calls

4 calls:

46.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
45.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
43.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
43.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
Compiler

Compiled 8385 to 5639 computations (32.7% saved)

simplify253.0ms (0.7%)

Algorithm
egg-herbie
Rules
637×distribute-rgt-neg-in_binary64
626×fabs-mul_binary64
610×cancel-sign-sub-inv_binary64
528×unswap-sqr_binary64
379×*-commutative_binary64
Counts
106 → 62
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0892058
11821974
24651858
312301830
427521802
544371802
647451802
748601802
847401802
949711802
1049421802

prune268.0ms (0.8%)

Pruning

14 alts after pruning (13 fresh and 1 done)

PrunedKeptTotal
New61162
Fresh11213
Picked011
Done000
Total621476
Error
22.6b
Counts
76 → 14
Alt Table
StatusErrorProgram
37.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2))))))))))))
40.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (sin.f64 (*.f64 1/2 lambda1)) (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
49.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (*.f64 (sqrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sqrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
38.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1) (sin.f64 (*.f64 1/2 lambda1)))) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
36.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (sin.f64 (*.f64 -1/2 lambda2)) (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8))) (*.f64 lambda1 (*.f64 (cos.f64 (*.f64 -1/2 lambda2)) (+.f64 1/2 (*.f64 lambda1 (*.f64 lambda1 -1/48))))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
37.6b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))) (*.f64 (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8)) (sin.f64 (*.f64 lambda2 1/2))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.1b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
35.8b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.1b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
38.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1) (sin.f64 (*.f64 1/2 lambda1)))) 3))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
Compiler

Compiled 5480 to 3522 computations (35.7% saved)

localize43.0ms (0.1%)

Local error

Found 4 expressions with local error:

3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
3.3b
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
6.0b
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))

rewrite209.0ms (0.6%)

Algorithm
rewrite-expression-head
Error
22.4b
Rules
12×cbrt-prod_binary64
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
Counts
4 → 45
Calls

4 calls:

7.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
7.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
5.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
Compiler

Compiled 3223 to 1914 computations (40.6% saved)

series346.0ms (1%)

Error
22.2b
Counts
4 → 46
Calls

4 calls:

44.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
44.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
42.0ms
(sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))
41.0ms
(cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))
Compiler

Compiled 7960 to 5280 computations (33.7% saved)

simplify232.0ms (0.7%)

Algorithm
egg-herbie
Rules
637×distribute-rgt-neg-in_binary64
626×fabs-mul_binary64
610×cancel-sign-sub-inv_binary64
528×unswap-sqr_binary64
379×*-commutative_binary64
Counts
91 → 45
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
0891695
11821641
24651541
312301523
427521505
544371505
647451505
748601505
847401505
949711505
1049421505

prune207.0ms (0.6%)

Pruning

14 alts after pruning (13 fresh and 1 done)

PrunedKeptTotal
New42345
Fresh21012
Picked101
Done011
Total451459
Error
22.6b
Counts
59 → 14
Alt Table
StatusErrorProgram
37.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2))))))))))))
40.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (sin.f64 (*.f64 1/2 lambda1)) (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1)))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
49.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (*.f64 (sqrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sqrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
38.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1) (sin.f64 (*.f64 1/2 lambda1)))) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
36.5b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (sin.f64 (*.f64 -1/2 lambda2)) (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8))) (*.f64 lambda1 (*.f64 (cos.f64 (*.f64 -1/2 lambda2)) (+.f64 1/2 (*.f64 lambda1 (*.f64 lambda1 -1/48))))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.1b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (cbrt.f64 (pow.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) 2) (cbrt.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
23.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3)) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
35.8b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (+.f64 (sin.f64 (*.f64 -1/2 lambda2)) (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
38.0b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (+.f64 (*.f64 -1/2 (*.f64 lambda2 (cos.f64 (*.f64 1/2 lambda1)))) (*.f64 (+.f64 (*.f64 (*.f64 lambda2 lambda2) -1/8) 1) (sin.f64 (*.f64 1/2 lambda1)))) 3))) (cbrt.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)) 3))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
37.7b
(*.f64 R (*.f64 2 (atan2.f64 (sqrt.f64 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2))))) (sqrt.f64 (-.f64 1 (+.f64 (pow.f64 (sin.f64 (/.f64 (-.f64 phi1 phi2) 2)) 2) (*.f64 (*.f64 (*.f64 (cos.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (pow.f64 (+.f64 (*.f64 1/2 (*.f64 lambda1 (cos.f64 (*.f64 -1/2 lambda2)))) (*.f64 (sin.f64 (*.f64 -1/2 lambda2)) (+.f64 1 (*.f64 (*.f64 lambda1 lambda1) -1/8)))) 3))) (sin.f64 (/.f64 (-.f64 lambda1 lambda2) 2)))))))))
Compiler

Compiled 3855 to 2421 computations (37.2% saved)

regimes8.0s (23.7%)

Accuracy

Total 0.5b remaining (2%)

Threshold costs 0.5b (2%)

Compiler

Compiled 210627 to 143748 computations (31.8% saved)

simplify8.0ms (0%)

Algorithm
egg-herbie
Rules
20×*-commutative_binary64
18×+-commutative_binary64
16×sub-neg_binary64
12×neg-sub0_binary64
12×neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
034103
154103
271103
391103
4109103
5125103
6135103
7141103
8143103
9142103

end29.0ms (0.1%)

Remove

(sort phi1 phi2)

(sort lambda1 lambda2)

Compiler

Compiled 350 to 235 computations (32.9% saved)

sample13.9s (40.9%)

Algorithm
intervals
Results
9.2s5211×body1024valid
1.4s1242×body512valid
1.2s404×body2048valid
286.0ms400×body256valid
246.0ms743×body128valid
3.0msbody1024invalid
0.0msbody128invalid
Compiler

Compiled 1296 to 889 computations (31.4% saved)

Profiling

Loading profile data...