Details

Time bar (total: 15.6s)

analyze2.8s (18.2%)

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
9.4%90.4%0.2%9
9.4%90.4%0.2%10
10.9%88.9%0.2%11
10.9%88.9%0.2%12
10.9%88.9%0.2%13
10.9%88.9%0.2%14
Compiler

Compiled 25 to 15 computations (40% saved)

sample8.3s (53.2%)

Results
5.9s4638×body1024valid
1.3s1730×body512valid
372.0ms773×body256valid
325.0ms125×body2048valid
256.0ms990×body128valid
Compiler

Compiled 74 to 44 computations (40.5% saved)

simplify32.0ms (0.2%)

Algorithm
egg-herbie
Rules
284×fma-def_binary64
141×fma-neg_binary64
44×distribute-rgt-in_binary64
38×cancel-sign-sub-inv_binary64
37×sub-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01532
12130
22830
33530
44230
56830
69830
713230
817630
922030
1028830
1131030
1234630
1339330
1440330
1542130
1644230
1744930
1847030
1947830
2048030
2145330

prune4.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.9b
Counts
3 → 2
Alt Table
StatusErrorProgram
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))))))
Compiler

Compiled 137 to 71 computations (48.2% saved)

localize17.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))
0.6b
(fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))
3.8b
(cos.f64 (-.f64 lambda1 lambda2))
4.1b
(sin.f64 (-.f64 lambda1 lambda2))

series45.0ms (0.3%)

Counts
4 → 64
Calls

4 calls:

29.0ms
(fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))
8.0ms
(atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))
4.0ms
(sin.f64 (-.f64 lambda1 lambda2))
4.0ms
(cos.f64 (-.f64 lambda1 lambda2))

rewrite72.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
671×prod-diff_binary64
268×log1p-udef_binary64
147×add-sqr-sqrt_binary64
137×log1p-expm1-u_binary64
137×expm1-log1p-u_binary64
Counts
4 → 121
Calls

4 calls:

69.0ms
(atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))
69.0ms
(fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))
69.0ms
(cos.f64 (-.f64 lambda1 lambda2))
69.0ms
(sin.f64 (-.f64 lambda1 lambda2))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01353
127453
2345153
3518253

simplify67.0ms (0.4%)

Algorithm
egg-herbie
Rules
594×cancel-sign-sub-inv_binary64
483×fma-def_binary64
479×associate-*r*_binary64
462×associate-*l*_binary64
430×sub-neg_binary64
Counts
185 → 181
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01211354
13891249
212451165
343261161
449741161

prune304.0ms (2%)

Pruning

13 alts after pruning (13 fresh and 0 done)

PrunedKeptTotal
New16813181
Fresh101
Picked101
Done000
Total17013183
Error
0.6b
Counts
183 → 13
Alt Table
StatusErrorProgram
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (/.f64 (+.f64 (pow.f64 (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) 3) (pow.f64 (cos.f64 phi1) 3)) (+.f64 (*.f64 (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2))) (-.f64 (pow.f64 (cos.f64 phi1) 2) (*.f64 (*.f64 (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (cos.f64 phi1)))))))
1.8b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 1/2 (*.f64 lambda1 (*.f64 lambda1 (sin.f64 lambda2))) (fma.f64 (cos.f64 lambda2) lambda1 (sin.f64 (neg.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (exp.f64 (log.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.1b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
4.5b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (expm1.f64 (log1p.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (log.f64 (exp.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
1.0b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3))))
15.6b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (pow.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3) 1/3)))
1.4b
(+.f64 lambda1 (pow.f64 (cbrt.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))) 3))
23.3b
(+.f64 lambda1 (-.f64 (exp.f64 (log1p.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))) 1))
1.7b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (fma.f64 lambda1 (sin.f64 lambda2) (cos.f64 lambda2)) (cos.f64 phi1))))
Compiler

Compiled 6476 to 1663 computations (74.3% saved)

localize23.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1)))
0.2b
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))
0.6b
(fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))
4.1b
(sin.f64 (-.f64 lambda1 lambda2))

series81.0ms (0.5%)

Counts
3 → 56
Calls

3 calls:

61.0ms
(fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))
10.0ms
(atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1)))
9.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))

rewrite76.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
986×prod-diff_binary64
195×add-sqr-sqrt_binary64
181×log1p-expm1-u_binary64
181×expm1-log1p-u_binary64
178×add-log-exp_binary64
Counts
3 → 64
Calls

3 calls:

74.0ms
(atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1)))
74.0ms
(*.f64 (sin.f64 lambda1) (sin.f64 lambda2))
74.0ms
(fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01869
137049
2459549
3646149

simplify76.0ms (0.5%)

Algorithm
egg-herbie
Rules
910×fma-def_binary64
731×cancel-sign-sub-inv_binary64
728×fma-neg_binary64
637×associate-*r*_binary64
614×associate-*l*_binary64
Counts
120 → 113
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01421917
14701823
215591624
348611620
453901620

prune359.0ms (2.3%)

Pruning

12 alts after pruning (12 fresh and 0 done)

PrunedKeptTotal
New1743177
Fresh3912
Picked101
Done000
Total17812190
Error
0.0b
Counts
190 → 12
Alt Table
StatusErrorProgram
1.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (sqrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (exp.f64 (log.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.1b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
4.5b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (expm1.f64 (log1p.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (log.f64 (exp.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.0b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3))))
0.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
15.6b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (pow.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3) 1/3)))
1.4b
(+.f64 lambda1 (pow.f64 (cbrt.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))) 3))
23.3b
(+.f64 lambda1 (-.f64 (exp.f64 (log1p.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))) 1))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (+.f64 (cos.f64 phi1) (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (sin.f64 lambda2) (*.f64 (cos.f64 lambda2) (cos.f64 lambda1)))))))
Compiler

Compiled 7125 to 1790 computations (74.9% saved)

localize24.0ms (0.2%)

Local error

Found 4 expressions with local error:

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

series51.0ms (0.3%)

Counts
2 → 84
Calls

2 calls:

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

rewrite69.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
926×prod-diff_binary64
202×add-sqr-sqrt_binary64
185×log1p-expm1-u_binary64
185×expm1-log1p-u_binary64
183×add-cbrt-cube_binary64
Counts
2 → 37
Calls

2 calls:

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

Useful iterations: 1 (0.0ms)

IterNodesCost
01972
138658
2450658
3624258

simplify102.0ms (0.7%)

Algorithm
egg-herbie
Rules
561×fma-def_binary64
537×distribute-rgt-neg-in_binary64
503×distribute-lft-neg-in_binary64
484×associate-*l*_binary64
474×associate-*r*_binary64
Counts
121 → 63
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01023417
13003413
29733372
337303372
451383372

prune330.0ms (2.1%)

Pruning

12 alts after pruning (11 fresh and 1 done)

PrunedKeptTotal
New1552157
Fresh2911
Picked011
Done000
Total15712169
Error
0.0b
Counts
169 → 12
Alt Table
StatusErrorProgram
1.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (sqrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (exp.f64 (log.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.1b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
15.6b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (pow.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3) 1/3)))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (+.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1))))
4.5b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (expm1.f64 (log1p.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.0b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3))))
0.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
1.4b
(+.f64 lambda1 (pow.f64 (cbrt.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))) 3))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (log.f64 (exp.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
23.3b
(+.f64 lambda1 (-.f64 (exp.f64 (log1p.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))) 1))
Compiler

Compiled 6866 to 1757 computations (74.4% saved)

localize24.0ms (0.2%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))
0.2b
(atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (+.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1)))
0.7b
(+.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1))
3.8b
(cos.f64 (-.f64 lambda1 lambda2))

series41.0ms (0.3%)

Counts
2 → 96
Calls

2 calls:

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

rewrite67.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
262×prod-diff_binary64
227×add-sqr-sqrt_binary64
212×log1p-expm1-u_binary64
212×expm1-log1p-u_binary64
207×add-cbrt-cube_binary64
Counts
2 → 49
Calls

2 calls:

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

Useful iterations: 1 (0.0ms)

IterNodesCost
02053
142951
2469551
3516751

simplify117.0ms (0.8%)

Algorithm
egg-herbie
Rules
871×fma-neg_binary64
495×distribute-rgt-neg-in_binary64
364×associate-*r*_binary64
359×cancel-sign-sub-inv_binary64
328×associate-*l*_binary64
Counts
145 → 83
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0933010
12782830
28552776
330392762
449722762
549672762

prune378.0ms (2.4%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New1643167
Fresh1910
Picked101
Done011
Total16613179
Error
0.0b
Counts
179 → 13
Alt Table
StatusErrorProgram
1.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (pow.f64 (cbrt.f64 (sin.f64 (-.f64 lambda1 lambda2))) 3)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (fma.f64 (neg.f64 (sqrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (sqrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
1.0b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (cbrt.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3))))
1.8b
(+.f64 lambda1 (atan2.f64 (-.f64 (*.f64 (cos.f64 phi2) (*.f64 (cos.f64 lambda2) lambda1)) (*.f64 (cos.f64 phi2) (sin.f64 lambda2))) (+.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1))))
32.3b
(+.f64 lambda1 (exp.f64 (log.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
1.1b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (+.f64 (fma.f64 (cos.f64 lambda2) (sin.f64 lambda1) (neg.f64 (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))))) (fma.f64 (neg.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (*.f64 (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))) (cbrt.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2)))))))) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))
4.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (-.f64 (/.f64 (pow.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) 2) (-.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1))) (/.f64 (pow.f64 (cos.f64 phi1) 2) (-.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1))))))
0.2b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (fma.f64 (cos.f64 phi2) (fma.f64 (cos.f64 lambda1) (cos.f64 lambda2) (*.f64 (sin.f64 lambda1) (sin.f64 lambda2))) (cos.f64 phi1))))
15.6b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (pow.f64 (pow.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)) 3) 1/3)))
1.4b
(+.f64 lambda1 (pow.f64 (cbrt.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1)))) 3))
0.9b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (sin.f64 (-.f64 lambda1 lambda2))) (log.f64 (exp.f64 (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))))
23.3b
(+.f64 lambda1 (-.f64 (exp.f64 (log1p.f64 (atan2.f64 (*.f64 (sin.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi2)) (fma.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2)) (cos.f64 phi1))))) 1))
4.8b
(+.f64 lambda1 (atan2.f64 (*.f64 (cos.f64 phi2) (fma.f64 (sin.f64 lambda1) (cos.f64 lambda2) (neg.f64 (*.f64 (cos.f64 lambda1) (sin.f64 lambda2))))) (/.f64 1 (/.f64 (-.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) (cos.f64 phi1)) (-.f64 (pow.f64 (*.f64 (cos.f64 phi2) (cos.f64 (-.f64 lambda1 lambda2))) 2) (pow.f64 (cos.f64 phi1) 2))))))
Compiler

Compiled 6382 to 1558 computations (75.6% saved)

regimes1.7s (11.1%)

Accuracy

Total 0.1b remaining (51.8%)

Threshold costs 0.1b (51.8%)

Counts
160 → 1
Compiler

Compiled 37408 to 21346 computations (42.9% saved)

simplify3.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02052
13252
24052
34552
44752
54752

end375.0ms (2.4%)

Compiler

Compiled 568 to 290 computations (48.9% saved)

Profiling

Loading profile data...