Details

Time bar (total: 22.1s)

analyze4.2s (19.1%)

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.4s (56.2%)

Results
9.8s5569×body1024valid
1.2s1268×body512valid
802.0ms196×body2048valid
256.0ms821×body128valid
237.0ms402×body256valid
Compiler

Compiled 86 to 53 computations (38.4% saved)

simplify32.0ms (0.1%)

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.4b
Counts
3 → 1
Alt Table
StatusErrorProgram
13.4b
(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.2b
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
3.8b
(sin.f64 (-.f64 lambda1 lambda2))
3.8b
(cos.f64 (-.f64 lambda1 lambda2))

series58.0ms (0.3%)

Counts
4 → 88
Calls

4 calls:

37.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))

rewrite23.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:

7.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))

simplify137.0ms (0.6%)

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

prune499.0ms (2.3%)

Pruning

22 alts after pruning (22 fresh and 0 done)

PrunedKeptTotal
New17122193
Fresh000
Picked101
Done000
Total17222194
Error
6.7b
Counts
194 → 22
Alt Table
StatusErrorProgram
41.7b
(atan2.f64 (*.f64 (+.f64 (*.f64 (sin.f64 lambda1) (cos.f64 (*.f64 (neg.f64 (sqrt.f64 lambda2)) (sqrt.f64 lambda2)))) (*.f64 (cos.f64 lambda1) (sin.f64 (*.f64 (neg.f64 (sqrt.f64 lambda2)) (sqrt.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.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))))))
14.0b
(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.6b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))))
20.8b
(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)))))
13.9b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (cbrt.f64 (pow.f64 (*.f64 (sin.f64 phi1) (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) 3))))
13.4b
(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)))))
18.7b
(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 lambda2))))
13.4b
(atan2.f64 (*.f64 (log1p.f64 (expm1.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)))))
13.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
17.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 (cos.f64 lambda1) (cos.f64 (*.f64 (neg.f64 (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2))) (cbrt.f64 lambda2)))) (*.f64 (sin.f64 lambda1) (sin.f64 (*.f64 (neg.f64 (*.f64 (cbrt.f64 lambda2) (cbrt.f64 lambda2))) (cbrt.f64 lambda2))))))))
19.0b
(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 lambda1))))
18.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)) (-.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))))))))))
25.4b
(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)))))
27.7b
(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 (fma.f64 (*.f64 -1/6 (sin.f64 lambda2)) (pow.f64 lambda1 3) (cos.f64 lambda2)) (*.f64 lambda1 (+.f64 (sin.f64 (neg.f64 lambda2)) (*.f64 (*.f64 (cos.f64 lambda2) 1/2) lambda1)))))))
18.4b
(atan2.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (-.f64 lambda1 lambda2)) 3)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
31.8b
(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)))))
31.6b
(atan2.f64 (*.f64 (+.f64 (*.f64 (sin.f64 (fma.f64 (*.f64 (cbrt.f64 lambda1) (cbrt.f64 lambda1)) (cbrt.f64 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 (cos.f64 (fma.f64 (*.f64 (cbrt.f64 lambda1) (cbrt.f64 lambda1)) (cbrt.f64 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))))))) (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.0b
(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)))))
15.0b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (log.f64 (exp.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.4b
(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)))))
23.7b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) lambda1 (fma.f64 -1 (sin.f64 lambda2) (*.f64 (*.f64 lambda1 lambda1) (-.f64 (*.f64 1/2 (sin.f64 lambda2)) (*.f64 (*.f64 (cos.f64 lambda2) 1/6) 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)))))
Compiler

Compiled 9032 to 2525 computations (72% saved)

localize31.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series9.0ms (0%)

Counts
1 → 8
Calls

1 calls:

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

rewrite4.0ms (0%)

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt_binary64
associate-*r*_binary64
associate-*l*_binary64
*-un-lft-identity_binary64
add-cube-cbrt_binary64
Counts
1 → 21
Calls

1 calls:

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

simplify101.0ms (0.5%)

Algorithm
egg-herbie
Rules
529×fma-neg_binary64
499×distribute-rgt-neg-in_binary64
414×distribute-lft-neg-in_binary64
325×*-commutative_binary64
249×associate-*l*_binary64
Counts
29 → 46
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
081458
1203416
2570396
31526373
42793373
54861373
64978373
74997373
84900373

prune567.0ms (2.6%)

Pruning

13 alts after pruning (13 fresh and 0 done)

PrunedKeptTotal
New1927199
Fresh15621
Picked101
Done000
Total20813221
Error
0.1b
Counts
221 → 13
Alt Table
StatusErrorProgram
14.0b
(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 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
13.6b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))))) (cbrt.f64 (*.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 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (*.f64 (cos.f64 lambda1) (cos.f64 lambda2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
11.4b
(atan2.f64 (*.f64 (-.f64 (log.f64 (exp.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.9b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (cbrt.f64 (pow.f64 (*.f64 (sin.f64 phi1) (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) 3))))
13.4b
(atan2.f64 (*.f64 (log1p.f64 (expm1.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)))))
35.8b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2))) (sqrt.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)))))
7.0b
(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)) (cbrt.f64 (pow.f64 (cos.f64 (-.f64 lambda1 lambda2)) 3)))))
13.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
36.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cos.f64 phi1) (sqrt.f64 (sin.f64 phi2))) (sqrt.f64 (sin.f64 phi2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.4b
(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)))))
7.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 lambda1)) (cbrt.f64 (sin.f64 lambda1))) (*.f64 (cbrt.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)))))
Compiler

Compiled 9350 to 2157 computations (76.9% saved)

localize29.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series93.0ms (0.4%)

Counts
2 → 56
Calls

2 calls:

83.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))
9.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

rewrite15.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
add-cbrt-cube_binary64
add-exp-log_binary64
pow1_binary64
add-sqr-sqrt_binary64
associate-*r*_binary64
Counts
2 → 50
Calls

2 calls:

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

simplify112.0ms (0.5%)

Algorithm
egg-herbie
Rules
618×associate-*r*_binary64
563×associate-*l*_binary64
546×fma-neg_binary64
385×distribute-rgt-neg-in_binary64
300×*-commutative_binary64
Counts
106 → 119
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03013509
19653263
237643255
350523255

prune628.0ms (2.8%)

Pruning

13 alts after pruning (13 fresh and 0 done)

PrunedKeptTotal
New2046210
Fresh5712
Picked101
Done000
Total21013223
Error
0.0b
Counts
223 → 13
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 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (cos.f64 lambda2) (cos.f64 lambda1))) (*.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (-.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
14.0b
(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.4b
(atan2.f64 (*.f64 (log1p.f64 (expm1.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)))))
35.8b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2))) (sqrt.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.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.3b
(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 (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
0.3b
(atan2.f64 (*.f64 (-.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 lambda1)) (cbrt.f64 (sin.f64 lambda1))) (*.f64 (cos.f64 lambda2) (cbrt.f64 (sin.f64 lambda1)))) (*.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))))))
11.4b
(atan2.f64 (*.f64 (-.f64 (log.f64 (exp.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)))))
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 (*.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))))))))
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)) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
36.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cos.f64 phi1) (sqrt.f64 (sin.f64 phi2))) (sqrt.f64 (sin.f64 phi2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.4b
(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)))))
1.0b
(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)) (log.f64 (exp.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
Compiler

Compiled 11682 to 2464 computations (78.9% saved)

localize35.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 lambda1) (cos.f64 lambda2))
0.2b
(*.f64 (cos.f64 phi1) (sin.f64 phi2))
0.2b
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))
0.2b
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))

series75.0ms (0.3%)

Counts
1 → 48
Calls

1 calls:

75.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))

rewrite10.0ms (0%)

Algorithm
rewrite-expression-head
Rules
add-cbrt-cube_binary64
add-exp-log_binary64
pow1_binary64
associate-*r*_binary64
sin-cos-mult_binary64
Counts
1 → 27
Calls

1 calls:

7.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))

simplify101.0ms (0.5%)

Algorithm
egg-herbie
Rules
957×cancel-sign-sub-inv_binary64
499×associate-*r*_binary64
479×fma-neg_binary64
444×associate-*l*_binary64
249×*-commutative_binary64
Counts
75 → 76
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02342982
17692746
230012740
347892740
450192740

prune528.0ms (2.4%)

Pruning

11 alts after pruning (11 fresh and 0 done)

PrunedKeptTotal
New2061207
Fresh21012
Picked101
Done000
Total20911220
Error
0.0b
Counts
220 → 11
Alt Table
StatusErrorProgram
13.4b
(atan2.f64 (*.f64 (log1p.f64 (expm1.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)))))
35.8b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sqrt.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2))) (sqrt.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.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.3b
(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 (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))))) (cbrt.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
0.3b
(atan2.f64 (*.f64 (-.f64 (*.f64 (*.f64 (cbrt.f64 (sin.f64 lambda1)) (cbrt.f64 (sin.f64 lambda1))) (*.f64 (cos.f64 lambda2) (cbrt.f64 (sin.f64 lambda1)))) (*.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))))))
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 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (cos.f64 lambda2) (cos.f64 lambda1))) (*.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (-.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (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 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.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))))))))
0.7b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 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)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
36.1b
(atan2.f64 (*.f64 (-.f64 (*.f64 (sin.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi2)) (-.f64 (*.f64 (*.f64 (cos.f64 phi1) (sqrt.f64 (sin.f64 phi2))) (sqrt.f64 (sin.f64 phi2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.4b
(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)))))
1.0b
(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)) (log.f64 (exp.f64 (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (+.f64 (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))))
Compiler

Compiled 11203 to 2145 computations (80.9% saved)

regimes2.1s (9.3%)

Accuracy

Total 0.1b remaining (57.9%)

Threshold costs 0.1b (57.9%)

Counts
236 → 1
Compiler

Compiled 60963 to 35789 computations (41.3% saved)

simplify20.0ms (0.1%)

Algorithm
egg-herbie
Rules
87×distribute-rgt-neg-in_binary64
60×cancel-sign-sub-inv_binary64
58×distribute-lft-neg-in_binary64
50×neg-sub0_binary64
50×neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
029103
153103
278103
3100103
4124103
5155103
6187103
7206103
8222103
9242103
10265103
11291103
12322103
13349103
14377103
15400103
16416103
17420103
18416103

end269.0ms (1.2%)

Compiler

Compiled 669 to 328 computations (51% saved)

Profiling

Loading profile data...