Details

Time bar (total: 21.5s)

analyze3.6s (16.7%)

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
7.8%92%0.2%9
7.8%92%0.2%10
10.1%89.7%0.2%11
10.1%89.7%0.2%12
13.9%85.9%0.2%13
13.9%85.9%0.2%14
Compiler

Compiled 29 to 18 computations (37.9% saved)

sample12.1s (56.3%)

Results
9.3s5500×body1024valid
1.3s1286×body512valid
862.0ms212×body2048valid
309.0ms861×body128valid
233.0ms397×body256valid
Compiler

Compiled 86 to 53 computations (38.4% saved)

simplify35.0ms (0.2%)

Algorithm
egg-herbie
Rules
543×fma-def_binary64
194×fma-neg_binary64
83×cancel-sign-sub-inv_binary64
59×distribute-rgt-neg-in_binary64
47×distribute-rgt-in_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01839
13239
26139
311539
415539
524639
634839
743739
857239
962239
1069439
1172039
1266939

prune3.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
13.3b
Counts
3 → 1
Alt Table
StatusErrorProgram
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 108 to 55 computations (49.1% saved)

localize21.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cos.f64 phi1) (sin.f64 phi2))
0.3b
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
3.1b
(sin.f64 (-.f64 lambda1 lambda2))
3.2b
(cos.f64 (-.f64 lambda1 lambda2))

series57.0ms (0.3%)

Counts
4 → 88
Calls

4 calls:

38.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
12.0ms
(*.f64 (cos.f64 phi1) (sin.f64 phi2))
4.0ms
(cos.f64 (-.f64 lambda1 lambda2))
4.0ms
(sin.f64 (-.f64 lambda1 lambda2))

rewrite24.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
23×add-sqr-sqrt_binary64
21×*-un-lft-identity_binary64
21×add-cube-cbrt_binary64
18×prod-diff_binary64
13×sin-sum_binary64
Counts
4 → 89
Calls

4 calls:

6.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
4.0ms
(cos.f64 (-.f64 lambda1 lambda2))
4.0ms
(sin.f64 (-.f64 lambda1 lambda2))
3.0ms
(*.f64 (cos.f64 phi1) (sin.f64 phi2))

simplify153.0ms (0.7%)

Algorithm
egg-herbie
Rules
446×fma-neg_binary64
437×associate-*r*_binary64
403×associate-*l*_binary64
392×distribute-rgt-neg-in_binary64
354×distribute-lft-neg-in_binary64
Counts
177 → 193
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
03964016
18443282
227803072
347392973
449922973
549182973

prune444.0ms (2.1%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New17617193
Fresh000
Picked101
Done000
Total17717194
Error
7.4b
Counts
194 → 17
Alt Table
StatusErrorProgram
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2)))))))
33.5b
(atan2.f64 (*.f64 (sin.f64 (neg.f64 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
21.9b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (sin.f64 phi1) (cos.f64 (-.f64 lambda1 lambda2)))))
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (log1p.f64 (expm1.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))))
13.2b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
25.8b
(atan2.f64 (*.f64 (-.f64 (sin.f64 lambda1) (*.f64 lambda2 (cos.f64 lambda1))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
20.5b
(atan2.f64 (*.f64 (+.f64 (*.f64 (sin.f64 lambda1) (cos.f64 (*.f64 (neg.f64 (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2))) (cbrt.f64 lambda2)))) (*.f64 (cos.f64 lambda1) (sin.f64 (*.f64 (neg.f64 (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2))) (cbrt.f64 lambda2))))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
27.0b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) lambda1 (*.f64 (+.f64 (*.f64 -1/2 (*.f64 lambda1 lambda1)) 1) (sin.f64 (neg.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
7.6b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
13.4b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 phi2) (cos.f64 phi1)) 3)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
19.2b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 (fma.f64 1 lambda1 (neg.f64 (*.f64 (cbrt.f64 lambda2) (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2)))))) (cos.f64 (fma.f64 (neg.f64 (cbrt.f64 lambda2)) (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2)) (*.f64 (cbrt.f64 lambda2) (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2)))))) (*.f64 (sin.f64 (fma.f64 1 lambda1 (neg.f64 (*.f64 (cbrt.f64 lambda2) (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2)))))) (sin.f64 (fma.f64 (neg.f64 (cbrt.f64 lambda2)) (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2)) (*.f64 (cbrt.f64 lambda2) (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2))))))))))
26.7b
(atan2.f64 (*.f64 (-.f64 (fma.f64 1/6 (*.f64 (cos.f64 lambda1) (pow.f64 lambda2 3)) (sin.f64 lambda1)) (*.f64 lambda2 (+.f64 (cos.f64 lambda1) (*.f64 (*.f64 1/2 (sin.f64 lambda1)) lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
21.9b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 lambda2 (sin.f64 lambda1) (cos.f64 lambda1)))))
45.8b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 (fma.f64 (*.f64 (cbrt.f64 lambda1) (cbrt.f64 lambda1)) (cbrt.f64 lambda1) (neg.f64 (*.f64 (sqrt.f64 lambda2) (sqrt.f64 lambda2))))) (cos.f64 (fma.f64 (neg.f64 (sqrt.f64 lambda2)) (sqrt.f64 lambda2) (*.f64 (sqrt.f64 lambda2) (sqrt.f64 lambda2))))) (*.f64 (sin.f64 (fma.f64 (*.f64 (cbrt.f64 lambda1) (cbrt.f64 lambda1)) (cbrt.f64 lambda1) (neg.f64 (*.f64 (sqrt.f64 lambda2) (sqrt.f64 lambda2))))) (sin.f64 (fma.f64 (neg.f64 (sqrt.f64 lambda2)) (sqrt.f64 lambda2) (*.f64 (sqrt.f64 lambda2) (sqrt.f64 lambda2)))))))))
39.7b
(atan2.f64 (*.f64 (*.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
17.5b
(atan2.f64 (*.f64 (cbrt.f64 (*.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (sin.f64 (-.f64 lambda1 lambda2))) (sin.f64 (-.f64 lambda1 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 8576 to 2291 computations (73.3% saved)

localize28.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cos.f64 lambda1) (sin.f64 lambda2))
0.2b
(-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))
0.3b
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
3.2b
(cos.f64 (-.f64 lambda1 lambda2))

series27.0ms (0.1%)

Counts
2 → 48
Calls

2 calls:

18.0ms
(-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))
9.0ms
(*.f64 (cos.f64 lambda1) (sin.f64 lambda2))

rewrite14.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt_binary64
*-un-lft-identity_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
add-exp-log_binary64
Counts
2 → 36
Calls

2 calls:

9.0ms
(-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))
3.0ms
(*.f64 (cos.f64 lambda1) (sin.f64 lambda2))

simplify87.0ms (0.4%)

Algorithm
egg-herbie
Rules
598×fma-neg_binary64
443×fma-def_binary64
315×distribute-rgt-neg-in_binary64
300×cancel-sign-sub-inv_binary64
278×distribute-lft-neg-in_binary64
Counts
84 → 87
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01281418
13401354
210711317
324101304
447611304
548931304

prune511.0ms (2.4%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New1905195
Fresh12416
Picked101
Done000
Total2039212
Error
0.1b
Counts
212 → 9
Alt Table
StatusErrorProgram
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
13.4b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 phi2) (cos.f64 phi1)) 3)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
7.7b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 phi1) (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)))))))
10.8b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (cbrt.f64 (*.f64 (*.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda1)) (cos.f64 lambda1)) (*.f64 (*.f64 (sin.f64 lambda2) (sin.f64 lambda2)) (sin.f64 lambda2))))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2)))))))
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
7.6b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (*.f64 (cbrt.f64 (cos.f64 lambda1)) (cbrt.f64 (cos.f64 lambda1))) (*.f64 (cbrt.f64 (cos.f64 lambda1)) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.7b
(atan2.f64 (*.f64 (*.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 8877 to 1902 computations (78.6% saved)

localize31.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))
0.2b
(*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1))))
0.2b
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))
0.2b
(*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))

series155.0ms (0.7%)

Counts
4 → 140
Calls

4 calls:

58.0ms
(*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1))))
54.0ms
(*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))
27.0ms
(*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))
15.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

rewrite27.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
32×add-cbrt-cube_binary64
32×add-exp-log_binary64
32×pow1_binary64
18×cbrt-unprod_binary64
18×prod-exp_binary64
Counts
4 → 89
Calls

4 calls:

9.0ms
(*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1))))
6.0ms
(*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))
4.0ms
(*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))
3.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

simplify131.0ms (0.6%)

Algorithm
egg-herbie
Rules
747×cancel-sign-sub-inv_binary64
721×associate-*l*_binary64
470×fma-neg_binary64
421×distribute-rgt-neg-in_binary64
403×*-commutative_binary64
Counts
229 → 217
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03845571
111674987
230954977
350194977

prune621.0ms (2.9%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New2116217
Fresh268
Picked101
Done000
Total21412226
Error
0.0b
Counts
226 → 12
Alt Table
StatusErrorProgram
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2)))))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (sin.f64 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (*.f64 (cbrt.f64 (sin.f64 lambda1)) (cbrt.f64 (sin.f64 lambda1))) (*.f64 (cbrt.f64 (sin.f64 lambda1)) (sin.f64 lambda2)))))))
13.4b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 phi2) (cos.f64 phi1)) 3)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (log1p.f64 (expm1.f64 (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
7.6b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (*.f64 (cbrt.f64 (cos.f64 lambda1)) (cbrt.f64 (cos.f64 lambda1))) (*.f64 (cbrt.f64 (cos.f64 lambda1)) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
10.8b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (cbrt.f64 (*.f64 (*.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda1)) (cos.f64 lambda1)) (*.f64 (*.f64 (sin.f64 lambda2) (sin.f64 lambda2)) (sin.f64 lambda2))))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (cbrt.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (cbrt.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (cbrt.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
0.2b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (*.f64 (cbrt.f64 (cos.f64 lambda2)) (cbrt.f64 (cos.f64 lambda2))) (*.f64 (cbrt.f64 (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1))))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
39.7b
(atan2.f64 (*.f64 (*.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 13311 to 2705 computations (79.7% saved)

localize30.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))
0.2b
(*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1))))
0.2b
(*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (sin.f64 lambda2))
0.3b
(*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1))

series78.0ms (0.4%)

Counts
2 → 84
Calls

2 calls:

52.0ms
(*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (sin.f64 lambda2))
26.0ms
(*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1))

rewrite17.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
16×add-cbrt-cube_binary64
16×add-exp-log_binary64
16×pow1_binary64
cbrt-unprod_binary64
prod-exp_binary64
Counts
2 → 43
Calls

2 calls:

8.0ms
(*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1))
6.0ms
(*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (sin.f64 lambda2))

simplify111.0ms (0.5%)

Algorithm
egg-herbie
Rules
994×fma-neg_binary64
775×cancel-sign-sub-inv_binary64
489×associate-*r*_binary64
471×associate-*l*_binary64
358×distribute-rgt-neg-in_binary64
Counts
127 → 114
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02423099
16712842
224862738
342712728
450862728

prune813.0ms (3.8%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New2253228
Fresh3811
Picked101
Done000
Total22911240
Error
0.0b
Counts
240 → 11
Alt Table
StatusErrorProgram
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (cbrt.f64 (*.f64 (*.f64 (*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1))) (*.f64 (*.f64 (sin.f64 lambda2) (sin.f64 lambda2)) (sin.f64 lambda2)))))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (*.f64 (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
13.4b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 phi2) (cos.f64 phi1)) 3)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
13.3b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
7.6b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (*.f64 (cbrt.f64 (cos.f64 lambda1)) (cbrt.f64 (cos.f64 lambda1))) (*.f64 (cbrt.f64 (cos.f64 lambda1)) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
10.8b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (cbrt.f64 (*.f64 (*.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda1)) (cos.f64 lambda1)) (*.f64 (*.f64 (sin.f64 lambda2) (sin.f64 lambda2)) (sin.f64 lambda2))))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 lambda1)))))) (*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (sin.f64 lambda2)))))
0.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1)))) (*.f64 (*.f64 (cbrt.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (cbrt.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (cbrt.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
0.2b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (*.f64 (cbrt.f64 (cos.f64 lambda2)) (cbrt.f64 (cos.f64 lambda2))) (*.f64 (cbrt.f64 (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (*.f64 (cos.f64 phi2) (sin.f64 phi1))))) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
39.7b
(atan2.f64 (*.f64 (*.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.2b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (*.f64 (*.f64 (cbrt.f64 (cos.f64 lambda1)) (cbrt.f64 (cos.f64 lambda1))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cbrt.f64 (cos.f64 lambda1))))) (*.f64 (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (sin.f64 lambda1)) (sin.f64 lambda2)))))
Compiler

Compiled 13367 to 2547 computations (80.9% saved)

regimes2.0s (9.4%)

Accuracy

Total 0.1b remaining (42.2%)

Threshold costs 0.1b (42.2%)

Counts
221 → 1
Compiler

Compiled 60475 to 33997 computations (43.8% saved)

simplify8.0ms (0%)

Algorithm
egg-herbie
Rules
24×*-commutative_binary64
17×+-commutative_binary64
16×sub-neg_binary64
14×distribute-rgt-neg-in_binary64
14×neg-sub0_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02773
14573
26273
38773
411473
514073
615373
715973
816073
916073

end355.0ms (1.6%)

Compiler

Compiled 659 to 335 computations (49.2% saved)

Profiling

Loading profile data...