Details

Time bar (total: 20.0s)

analyze3.9s (19.5%)

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)

sample11.6s (57.9%)

Results
9.1s5478×body1024valid
1.2s1337×body512valid
726.0ms193×body2048valid
249.0ms437×body256valid
243.0ms811×body128valid
Compiler

Compiled 86 to 53 computations (38.4% saved)

simplify23.0ms (0.1%)

Algorithm
egg-herbie
Rules
543×fma-def_binary64
194×fma-neg_binary64
85×cancel-sign-sub-inv_binary64
59×distribute-rgt-neg-in_binary64
47×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01839
13239
26739
313239
420939
532239
650139
766639
890339
9136139
10152239
11154839
Stop Event
saturated
Counts
1 → 2

prune4.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
10.7b
Counts
3 → 1
Alt Table
StatusErrorProgram
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
Compiler

Compiled 108 to 55 computations (49.1% saved)

localize19.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))
0.2b
(fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))
2.4b
(cos.f64 (-.f64 lambda1 lambda2))
2.5b
(sin.f64 (-.f64 lambda1 lambda2))

series78.0ms (0.4%)

Counts
4 → 100
Calls

4 calls:

55.0ms
(fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))
16.0ms
(*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))
5.0ms
(sin.f64 (-.f64 lambda1 lambda2))
3.0ms
(cos.f64 (-.f64 lambda1 lambda2))

rewrite70.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
337×log1p-udef_binary64
196×add-sqr-sqrt_binary64
182×log1p-expm1-u_binary64
182×expm1-log1p-u_binary64
181×add-cbrt-cube_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01749
136547
2496147
Stop Event
node limit
Counts
4 → 92
Calls

4 calls:

68.0ms
(*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))
68.0ms
(fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))
68.0ms
(cos.f64 (-.f64 lambda1 lambda2))
68.0ms
(sin.f64 (-.f64 lambda1 lambda2))

simplify56.0ms (0.3%)

Algorithm
egg-herbie
Rules
845×cancel-sign-sub-inv_binary64
348×fma-neg_binary64
312×distribute-rgt-neg-in_binary64
280×distribute-lft-neg-in_binary64
252×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01902419
16382392
221232242
Stop Event
node limit
Counts
192 → 178

prune313.0ms (1.6%)

Pruning

20 alts after pruning (20 fresh and 0 done)

PrunedKeptTotal
New15820178
Fresh000
Picked101
Done000
Total15920179
Error
5.3b
Counts
179 → 20
Alt Table
StatusErrorProgram
5.6b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
31.7b
(atan2.f64 (*.f64 (sin.f64 (neg.f64 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
22.6b
(atan2.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)))) 1) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
38.5b
(atan2.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 (-.f64 lambda1 lambda2)) 3) 1/3) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
25.1b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (-.f64 (cos.f64 lambda2) (*.f64 lambda1 (+.f64 (*.f64 (*.f64 (cos.f64 lambda2) 1/2) lambda1) (sin.f64 (neg.f64 lambda2))))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.4b
(atan2.f64 (*.f64 (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) 3) (pow.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (+.f64 (*.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
31.9b
(atan2.f64 (*.f64 (sin.f64 lambda1) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
23.6b
(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)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
40.0b
(atan2.f64 (pow.f64 (pow.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) 3) 1/3) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (cos.f64 lambda2))) (*.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (-.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
14.8b
(atan2.f64 (cbrt.f64 (pow.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) 3)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
25.0b
(atan2.f64 (+.f64 (*.f64 (cos.f64 phi2) (sin.f64 (neg.f64 lambda2))) (*.f64 (cos.f64 phi2) (*.f64 (cos.f64 (neg.f64 lambda2)) lambda1))) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
14.8b
(atan2.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (-.f64 lambda1 lambda2)) 3)) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.9b
(atan2.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (+.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (-.f64 lambda1 lambda2)))) 1) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (log1p.f64 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
35.4b
(atan2.f64 (*.f64 (sqrt.f64 (pow.f64 (sin.f64 (-.f64 lambda1 lambda2)) 2)) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
7.9b
(atan2.f64 (*.f64 (/.f64 (-.f64 (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (*.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (+.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) 3) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
Compiler

Compiled 7240 to 1984 computations (72.6% saved)

localize27.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
0.1b
(*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2))
0.2b
(fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))
2.4b
(cos.f64 (-.f64 lambda1 lambda2))

series49.0ms (0.2%)

Counts
2 → 84
Calls

2 calls:

36.0ms
(*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2))
13.0ms
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))

rewrite37.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
257×add-sqr-sqrt_binary64
236×log1p-expm1-u_binary64
236×expm1-log1p-u_binary64
235×add-cbrt-cube_binary64
233×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02474
149374
Stop Event
node limit
Counts
2 → 29
Calls

2 calls:

36.0ms
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
36.0ms
(*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2))

simplify88.0ms (0.4%)

Algorithm
egg-herbie
Rules
548×fma-def_binary64
481×associate-*l*_binary64
478×associate-*r*_binary64
329×cancel-sign-sub-inv_binary64
231×*-commutative_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01073513
13243509
210653468
348743468
Stop Event
node limit
Counts
113 → 58

prune349.0ms (1.7%)

Pruning

13 alts after pruning (13 fresh and 0 done)

PrunedKeptTotal
New1487155
Fresh13619
Picked101
Done000
Total16213175
Error
0.0b
Counts
175 → 13
Alt Table
StatusErrorProgram
5.6b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (log1p.f64 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (-.f64 lambda1 lambda2)))) 1) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
17.5b
(atan2.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)))) 1) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.4b
(atan2.f64 (*.f64 (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) 3) (pow.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (+.f64 (*.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
5.8b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2))) 3) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
9.5b
(cbrt.f64 (pow.f64 (atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) 3))
14.8b
(atan2.f64 (*.f64 (cbrt.f64 (pow.f64 (sin.f64 (-.f64 lambda1 lambda2)) 3)) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.9b
(atan2.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
38.5b
(atan2.f64 (*.f64 (pow.f64 (pow.f64 (sin.f64 (-.f64 lambda1 lambda2)) 3) 1/3) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
34.6b
(pow.f64 (sqrt.f64 (atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))) 2)
0.1b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) 3) (pow.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) (*.f64 (cos.f64 lambda1) (cos.f64 lambda2))) (-.f64 (*.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (*.f64 (cos.f64 lambda1) (cos.f64 lambda2)) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
0.1b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) 3) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
Compiler

Compiled 7134 to 1648 computations (76.9% saved)

localize28.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series96.0ms (0.5%)

Counts
3 → 80
Calls

3 calls:

79.0ms
(fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))
9.0ms
(*.f64 (cos.f64 phi1) (sin.f64 phi2))
8.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

rewrite62.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
733×prod-diff_binary64
200×add-sqr-sqrt_binary64
183×log1p-expm1-u_binary64
183×expm1-log1p-u_binary64
181×add-cbrt-cube_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01952
138240
2484640
Stop Event
node limit
Counts
3 → 59
Calls

3 calls:

61.0ms
(*.f64 (cos.f64 phi1) (sin.f64 phi2))
61.0ms
(fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))
60.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

simplify56.0ms (0.3%)

Algorithm
egg-herbie
Rules
866×cancel-sign-sub-inv_binary64
375×fma-neg_binary64
273×associate-*r*_binary64
273×distribute-rgt-neg-in_binary64
237×distribute-lft-neg-in_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01822817
16112764
222412373
Stop Event
node limit
Counts
139 → 120

prune346.0ms (1.7%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New1574161
Fresh4812
Picked101
Done000
Total16212174
Error
0.0b
Counts
174 → 12
Alt Table
StatusErrorProgram
0.1b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
0.4b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2))) 3) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
5.6b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (log1p.f64 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (-.f64 lambda1 lambda2)))) 1) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
17.5b
(atan2.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)))) 1) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.4b
(atan2.f64 (*.f64 (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) 3) (pow.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (+.f64 (*.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
34.2b
(atan2.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) 3) 1/3) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
4.3b
(atan2.f64 (cbrt.f64 (*.f64 (pow.f64 (cos.f64 phi2) 3) (pow.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) 3))) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
9.5b
(cbrt.f64 (pow.f64 (atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) 3))
10.9b
(atan2.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
34.6b
(pow.f64 (sqrt.f64 (atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))) 2)
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) 3) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
Compiler

Compiled 8133 to 1933 computations (76.2% saved)

localize30.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series82.0ms (0.4%)

Counts
1 → 48
Calls

1 calls:

82.0ms
(fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))

rewrite25.0ms (0.1%)

Algorithm
batch-egg-rewrite
Rules
208×add-sqr-sqrt_binary64
193×expm1-log1p-u_binary64
192×log1p-expm1-u_binary64
188×add-cbrt-cube_binary64
188×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02136
140424
Stop Event
node limit
Counts
1 → 23
Calls

1 calls:

25.0ms
(fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2)))

simplify45.0ms (0.2%)

Algorithm
egg-herbie
Rules
827×fma-def_binary64
616×cancel-sign-sub-inv_binary64
469×*-commutative_binary64
243×fma-neg_binary64
217×associate-*r*_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01262289
14252272
215921904
Stop Event
node limit
Counts
71 → 56

prune321.0ms (1.6%)

Pruning

12 alts after pruning (11 fresh and 1 done)

PrunedKeptTotal
New1621163
Fresh11011
Picked011
Done000
Total16312175
Error
0.0b
Counts
175 → 12
Alt Table
StatusErrorProgram
0.1b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (log1p.f64 (expm1.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
0.4b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2))) 3) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
5.6b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (log1p.f64 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2)))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (-.f64 (exp.f64 (log1p.f64 (cos.f64 (-.f64 lambda1 lambda2)))) 1) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
17.5b
(atan2.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)))) 1) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.4b
(atan2.f64 (*.f64 (/.f64 (-.f64 (pow.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) 3) (pow.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (+.f64 (*.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
34.2b
(atan2.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) 3) 1/3) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
4.3b
(atan2.f64 (cbrt.f64 (*.f64 (pow.f64 (cos.f64 phi2) 3) (pow.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) 3))) (fma.f64 (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
10.9b
(atan2.f64 (*.f64 (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
13.1b
(atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (fma.f64 (sin.f64 phi2) (cos.f64 phi1) (*.f64 (sin.f64 phi1) (*.f64 (cos.f64 lambda1) (neg.f64 (cos.f64 phi2))))))
34.6b
(pow.f64 (sqrt.f64 (atan2.f64 (*.f64 (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (*.f64 (neg.f64 (cos.f64 lambda1)) (sin.f64 lambda2))) (cos.f64 phi2)) (fma.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))) 2)
10.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (pow.f64 (cbrt.f64 (cos.f64 (-.f64 lambda1 lambda2))) 3) (*.f64 (cos.f64 phi2) (neg.f64 (sin.f64 phi1))) (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
Compiler

Compiled 7893 to 1695 computations (78.5% saved)

regimes2.0s (9.9%)

Accuracy

Total 0.1b remaining (55.5%)

Threshold costs 0.1b (55.5%)

Counts
210 → 1
Compiler

Compiled 48482 to 29783 computations (38.6% saved)

simplify5.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02665
14365
26065
37165
47665
57765
Stop Event
saturated

end328.0ms (1.6%)

Compiler

Compiled 580 to 349 computations (39.8% saved)

Profiling

Loading profile data...