Details

Time bar (total: 23.3s)

analyze4.1s (17.6%)

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.6s (54%)

Results
9.7s5491×body1024valid
1.3s1357×body512valid
823.0ms203×body2048valid
287.0ms808×body128valid
238.0ms397×body256valid
Compiler

Compiled 86 to 53 computations (38.4% saved)

simplify30.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
15.3b
Counts
3 → 1
Alt Table
StatusErrorProgram
15.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 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))
0.2b
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
3.9b
(sin.f64 (-.f64 lambda1 lambda2))
4.0b
(cos.f64 (-.f64 lambda1 lambda2))

series73.0ms (0.3%)

Counts
4 → 100
Calls

4 calls:

45.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))
19.0ms
(*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))
4.0ms
(cos.f64 (-.f64 lambda1 lambda2))
4.0ms
(sin.f64 (-.f64 lambda1 lambda2))

rewrite77.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
93×egg-rr
Counts
4 → 93
Calls

2 calls:

75.0ms
((cos.f64 (-.f64 lambda1 lambda2)) (sin.f64 (-.f64 lambda1 lambda2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))) (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01339
128939
2391239
3509139
000
100

simplify103.0ms (0.4%)

Algorithm
egg-herbie
Rules
767×sub-neg_binary64
395×distribute-rgt-neg-in_binary64
378×fma-neg_binary64
366×distribute-lft-neg-in_binary64
323×neg-sub0_binary64
Counts
193 → 177
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01952148
15922088
219781885
344261877
449831877
556691877

prune357.0ms (1.5%)

Pruning

22 alts after pruning (22 fresh and 0 done)

PrunedKeptTotal
New15522177
Fresh000
Picked101
Done000
Total15622178
Error
9.0b
Counts
178 → 22
Alt Table
StatusErrorProgram
9.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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)))))
27.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 (fma.f64 lambda2 (sin.f64 lambda1) (cos.f64 lambda1)) (*.f64 (*.f64 lambda2 lambda2) (+.f64 (*.f64 1/2 (cos.f64 lambda1)) (*.f64 (*.f64 1/6 (sin.f64 lambda1)) lambda2)))))))
24.9b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (cos.f64 phi2) (sin.f64 phi1)) (fma.f64 lambda2 (sin.f64 lambda1) (cos.f64 lambda1)))))
15.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (log.f64 (pow.f64 (exp.f64 (cos.f64 (-.f64 lambda1 lambda2))) (*.f64 (sin.f64 phi1) (cos.f64 phi2))))))
11.3b
(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)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
21.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 lambda1))))
15.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)) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2))))))))
27.8b
(atan2.f64 (+.f64 (*.f64 (cos.f64 phi2) (sin.f64 (neg.f64 lambda2))) (*.f64 (cos.f64 phi2) (*.f64 (cos.f64 (neg.f64 lambda2)) lambda1))) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
34.4b
(atan2.f64 (*.f64 (sin.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)))))
9.5b
(atan2.f64 (*.f64 (fma.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (cbrt.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1)))) (cbrt.f64 (*.f64 (cos.f64 lambda2) (sin.f64 lambda1))) (neg.f64 (*.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.3b
(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)))))
15.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (-.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (*.f64 (sin.f64 phi1) (cos.f64 phi2))))) 1)))
39.4b
(atan2.f64 (*.f64 (pow.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 2) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
26.7b
(atan2.f64 (*.f64 (-.f64 (fma.f64 (cos.f64 lambda2) lambda1 (*.f64 (*.f64 lambda1 lambda1) (-.f64 (*.f64 1/2 (sin.f64 lambda2)) (*.f64 (*.f64 (cos.f64 lambda2) 1/6) 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.1b
(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 (*.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)))))))
15.6b
(atan2.f64 (*.f64 (pow.f64 (cbrt.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)))))
22.5b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (sin.f64 phi1) (*.f64 (cos.f64 lambda2) (cos.f64 phi2)))))
15.1b
(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 (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)))))))))
25.5b
(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)))))
25.4b
(atan2.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)))) 1) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
15.5b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) 3) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
26.6b
(atan2.f64 (*.f64 (-.f64 (exp.f64 (log1p.f64 (sin.f64 (-.f64 lambda1 lambda2)))) 1) (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 7526 to 2197 computations (70.8% saved)

localize26.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series51.0ms (0.2%)

Counts
2 → 60
Calls

2 calls:

40.0ms
(*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2))
10.0ms
(*.f64 (cos.f64 phi1) (sin.f64 phi2))

rewrite60.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
33×egg-rr
Counts
2 → 33
Calls

2 calls:

59.0ms
((*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01731
133729
2378429
3517029
000
100

simplify88.0ms (0.4%)

Algorithm
egg-herbie
Rules
698×fma-def_binary64
677×associate-*r*_binary64
648×associate-*l*_binary64
464×cancel-sign-sub-inv_binary64
302×sub-neg_binary64
Counts
93 → 75
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01311389
14021359
213091293
344901293
449391293
550281293

prune393.0ms (1.7%)

Pruning

14 alts after pruning (14 fresh and 0 done)

PrunedKeptTotal
New1608168
Fresh15621
Picked101
Done000
Total17614190
Error
0.1b
Counts
190 → 14
Alt Table
StatusErrorProgram
9.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) 1) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.4b
(atan2.f64 (*.f64 (pow.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 2) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
9.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (log.f64 (pow.f64 (exp.f64 (cos.f64 phi1)) (sin.f64 phi2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
9.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 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)))))
9.5b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))) 3) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
15.7b
(atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (log.f64 (pow.f64 (exp.f64 (cos.f64 (-.f64 lambda1 lambda2))) (*.f64 (sin.f64 phi1) (cos.f64 phi2))))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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 (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)))))))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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 (*.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)))))))
15.5b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) 3) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
15.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)) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2))))))))
15.3b
(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)))))
15.6b
(atan2.f64 (*.f64 (pow.f64 (cbrt.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)))))
9.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) 3)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 7796 to 2003 computations (74.3% saved)

localize28.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2))
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)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))

series92.0ms (0.4%)

Counts
2 → 56
Calls

2 calls:

79.0ms
(*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))
12.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

rewrite60.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
39×egg-rr
Counts
2 → 39
Calls

2 calls:

59.0ms
((*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2)))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01534
130624
2381724
3518024
000
100

simplify59.0ms (0.3%)

Algorithm
egg-herbie
Rules
413×fma-neg_binary64
372×associate-*r*_binary64
320×associate--l+_binary64
315×distribute-rgt-neg-in_binary64
297×distribute-lft-neg-in_binary64
Counts
95 → 88
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01942127
16432042
222681864
350121864

prune399.0ms (1.7%)

Pruning

15 alts after pruning (15 fresh and 0 done)

PrunedKeptTotal
New1576163
Fresh4913
Picked101
Done000
Total16215177
Error
0.0b
Counts
177 → 15
Alt Table
StatusErrorProgram
0.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (pow.f64 (cbrt.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))) 3) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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 (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)))))))))
0.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (log.f64 (pow.f64 (exp.f64 (cos.f64 phi1)) (sin.f64 phi2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) 3)))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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 (*.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)))))))
0.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
15.5b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) 3) (-.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 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
9.7b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (log.f64 (pow.f64 (pow.f64 (exp.f64 (sin.f64 phi1)) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2))))))
9.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) 1) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
39.4b
(atan2.f64 (*.f64 (pow.f64 (sqrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 2) (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.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)) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2))))))))
15.3b
(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)))))
15.6b
(atan2.f64 (*.f64 (pow.f64 (cbrt.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)))))
9.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (cbrt.f64 (pow.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) 3)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 8873 to 2330 computations (73.7% saved)

localize33.0ms (0.1%)

Local error

Found 4 expressions with local error:

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

series542.0ms (2.3%)

Counts
1 → 24
Calls

1 calls:

542.0ms
(log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))

rewrite39.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
21×egg-rr
Counts
1 → 21
Calls

2 calls:

38.0ms
((log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))))
0.0ms
()
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0710
113410
2151610
3502310
000
100

simplify54.0ms (0.2%)

Algorithm
egg-herbie
Rules
453×associate-*r*_binary64
422×associate-*l*_binary64
364×times-frac_binary64
344×sub-neg_binary64
290×fma-def_binary64
Counts
45 → 39
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
094571
1261567
2922554
34809549
45209549

prune474.0ms (2%)

Pruning

15 alts after pruning (14 fresh and 1 done)

PrunedKeptTotal
New1545159
Fresh5914
Picked011
Done000
Total15915174
Error
0.0b
Counts
174 → 15
Alt Table
StatusErrorProgram
0.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (log.f64 (pow.f64 (exp.f64 (cos.f64 phi1)) (sin.f64 phi2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (pow.f64 (cbrt.f64 (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) 3)))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.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 (*.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)))))))
0.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (log.f64 (+.f64 1 (expm1.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2))))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
15.5b
(atan2.f64 (pow.f64 (cbrt.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) 3) (-.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
9.3b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.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)))))))
0.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (*.f64 (cbrt.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (pow.f64 (cbrt.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) 2))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
0.2b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
15.6b
(atan2.f64 (*.f64 (pow.f64 (cbrt.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)))))
0.7b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (+.f64 (log.f64 (*.f64 (cbrt.f64 (fma.f64 (cos.f64 phi1) (sin.f64 phi2) 1)) (cbrt.f64 (fma.f64 (cos.f64 phi1) (sin.f64 phi2) 1)))) (log.f64 (cbrt.f64 (fma.f64 (cos.f64 phi1) (sin.f64 phi2) 1))))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
0.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (-.f64 (log.f64 (-.f64 1 (pow.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)) 2))) (log.f64 (-.f64 1 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
0.5b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (expm1.f64 (+.f64 (log.f64 (sqrt.f64 (fma.f64 (cos.f64 phi1) (sin.f64 phi2) 1))) (log.f64 (sqrt.f64 (fma.f64 (cos.f64 phi1) (sin.f64 phi2) 1))))) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))))))
15.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)) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (-.f64 lambda1 lambda2))))))))
15.3b
(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)))))
9.4b
(atan2.f64 (*.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (cos.f64 phi2)) (-.f64 (-.f64 (exp.f64 (log1p.f64 (*.f64 (cos.f64 phi1) (sin.f64 phi2)))) 1) (*.f64 (*.f64 (sin.f64 phi1) (cos.f64 phi2)) (cos.f64 (-.f64 lambda1 lambda2)))))
Compiler

Compiled 8658 to 2230 computations (74.2% saved)

regimes3.2s (13.6%)

Accuracy

Total 0.1b remaining (63%)

Threshold costs 0.1b (63%)

Counts
273 → 1
Compiler

Compiled 65038 to 40264 computations (38.1% saved)

simplify4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02665
14565
26765
38265
49265
59565
69565

end405.0ms (1.7%)

Compiler

Compiled 755 to 445 computations (41.1% saved)

Profiling

Loading profile data...