Details

Time bar (total: 29.4s)

analyze3.0s (10.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
0%99.8%0.2%9
0%99.8%0.2%10
0.8%99%0.2%11
4.7%95.1%0.2%12
5.9%93.2%0.8%13
8.5%90.2%1.3%14
Compiler

Compiled 38 to 22 computations (42.1% saved)

sample4.1s (13.8%)

Symmetry

(sort lambda1 lambda2)

(sort phi1 phi2)

Results
1.3s6228×body128valid
806.0ms824×body1024valid
532.0ms2462×body128invalid
478.0ms780×body512valid
418.0ms443×body1024invalid
213.0ms370×body512invalid
173.0ms417×body256valid
67.0ms172×body256invalid
11.0msbody2048valid
Compiler

Compiled 113 to 65 computations (42.5% saved)

simplify127.0ms (0.4%)

Algorithm
egg-herbie
Rules
1413×unsub-neg_binary64
897×distribute-neg-out_binary64
703×fma-def_binary64
583×neg-sub0_binary64
478×sub-neg_binary64
Counts
1 → 2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01824
13524
28324
322424
465824
5203824
6312824
7359324
8439924
9436424
10443024
11446824
12503524

prune4.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
3.8b
Counts
3 → 1
Alt Table
StatusErrorProgram
3.8b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
Compiler

Compiled 95 to 55 computations (42.1% saved)

localize13.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))
0.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
0.1b
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series1.9s (6.4%)

Counts
4 → 180
Calls

4 calls:

1.3s
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
583.0ms
(hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))
23.0ms
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
5.0ms
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

rewrite72.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
307×expm1-udef_binary64
307×log1p-udef_binary64
170×add-sqr-sqrt_binary64
162×log1p-expm1-u_binary64
162×expm1-log1p-u_binary64
Counts
4 → 77
Calls

4 calls:

70.0ms
(hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))
70.0ms
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
70.0ms
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
70.0ms
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01569
133169
2424769
3510269
000
100

simplify430.0ms (1.5%)

Algorithm
egg-herbie
Rules
1133×associate-*r*_binary64
461×fma-def_binary64
141×associate-*l*_binary64
85×sub-neg_binary64
65×associate-/l*_binary64
Counts
257 → 273
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0219644761
1503544761

prune1.3s (4.4%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New25716273
Fresh000
Picked101
Done000
Total25816274
Error
3.7b
Counts
274 → 16
Alt Table
StatusErrorProgram
3.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1)) (-.f64 phi1 phi2)))
54.0b
(-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))
9.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2)))
4.0b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log.f64 (+.f64 1 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (-.f64 phi1 phi2)))
36.4b
(cbrt.f64 (pow.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) 3))
27.8b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 1/48 (*.f64 (sin.f64 (*.f64 1/2 phi1)) (pow.f64 phi2 3)))) (fma.f64 1/2 (*.f64 (sin.f64 (*.f64 1/2 phi1)) phi2) (*.f64 1/8 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 phi2 phi2)))))) (-.f64 phi1 phi2)))
5.0b
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
45.3b
(-.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 R (*.f64 (*.f64 lambda1 lambda1) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2)))) R)) (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (*.f64 lambda1 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))) 3))) (*.f64 (*.f64 lambda2 lambda2) (*.f64 R (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 4) (*.f64 lambda1 lambda1))))))))
25.0b
(*.f64 R (hypot.f64 (/.f64 (*.f64 (-.f64 (*.f64 lambda1 lambda1) (*.f64 lambda2 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (+.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))
8.9b
(*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))))
46.3b
(-.f64 (fma.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))))
51.1b
(*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))
61.2b
(log.f64 (+.f64 1 (expm1.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))))
34.3b
(pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 2)
58.7b
(-.f64 (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (*.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))))) (+.f64 (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) lambda1)) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))))
Compiler

Compiled 60498 to 41488 computations (31.4% saved)

localize15.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
0.4b
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
0.5b
(-.f64 (exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1)
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series1.1s (3.9%)

Counts
3 → 72
Calls

3 calls:

386.0ms
(-.f64 (exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1)
379.0ms
(exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
372.0ms
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))

rewrite111.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
706×prod-diff_binary64
471×fma-udef_binary64
283×fma-def_binary64
231×fma-neg_binary64
184×log1p-udef_binary64
Counts
3 → 98
Calls

3 calls:

109.0ms
(exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
109.0ms
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
109.0ms
(-.f64 (exp.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01133
121832
2259332
3469932
4472732
5493532
000
100

simplify51.0ms (0.2%)

Algorithm
egg-herbie
Rules
936×times-frac_binary64
660×associate-/l*_binary64
404×fma-def_binary64
348×cancel-sign-sub-inv_binary64
134×associate-/r/_binary64
Counts
170 → 150
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01201633
13941613
214301478
352311478

prune471.0ms (1.6%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New1748182
Fresh6915
Picked101
Done000
Total18117198
Error
3.6b
Counts
198 → 17
Alt Table
StatusErrorProgram
10.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (sqrt.f64 (pow.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2))) 1)) (-.f64 phi1 phi2)))
9.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi1)))) 1)) (-.f64 phi1 phi2)))
4.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 1))))) (-.f64 phi1 phi2)))
26.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (-.f64 (fma.f64 1/48 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) (pow.f64 phi2 3)) (log1p.f64 (cos.f64 (*.f64 1/2 phi1)))) (fma.f64 1/2 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (+.f64 (fma.f64 1/16 (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 (sin.f64 (*.f64 1/2 phi1)) (pow.f64 phi2 3))) (pow.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1) 2)) (*.f64 1/24 (/.f64 (pow.f64 (sin.f64 (*.f64 1/2 phi1)) 3) (pow.f64 (/.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1) phi2) 3)))) (*.f64 1/8 (*.f64 (*.f64 phi2 phi2) (+.f64 (/.f64 (cos.f64 (*.f64 1/2 phi1)) (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1)) (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)))))))))) 1)) (-.f64 phi1 phi2)))
54.0b
(-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))
29.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (fma.f64 (cos.f64 (exp.f64 (log1p.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cos.f64 1) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (sin.f64 1)))) (-.f64 phi1 phi2)))
45.3b
(-.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 R (*.f64 (*.f64 lambda1 lambda1) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2)))) R)) (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (*.f64 lambda1 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))) 3))) (*.f64 (*.f64 lambda2 lambda2) (*.f64 R (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 4) (*.f64 lambda1 lambda1))))))))
4.8b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (fma.f64 (cbrt.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1)) (pow.f64 (cbrt.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1)) 2) -1)) (-.f64 phi1 phi2)))
8.9b
(*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))))
8.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (+.f64 (fma.f64 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi2) 2)) phi1) -1/2 (log1p.f64 (cos.f64 (*.f64 1/2 phi2)))) (*.f64 (*.f64 (/.f64 (*.f64 phi1 phi1) (+.f64 (cos.f64 (*.f64 1/2 phi2)) 1)) (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/2 phi2)) 2) (+.f64 (cos.f64 (*.f64 1/2 phi2)) 1)) (cos.f64 (*.f64 1/2 phi2)))) -1/8))) 1)) (-.f64 phi1 phi2)))
51.1b
(*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))
36.4b
(cbrt.f64 (pow.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) 3))
61.2b
(log.f64 (+.f64 1 (expm1.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))))
34.3b
(pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 2)
5.0b
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
26.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (+.f64 (hypot.f64 1 (sqrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1) (+.f64 (hypot.f64 1 (sqrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) -1))) (-.f64 phi1 phi2)))
58.7b
(-.f64 (fma.f64 1/2 (/.f64 (*.f64 R (*.f64 phi2 phi2)) (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (fma.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))) (*.f64 1/2 (/.f64 (*.f64 (*.f64 phi1 phi1) R) (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))))) (+.f64 (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) lambda1)) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))))
Compiler

Compiled 7200 to 4569 computations (36.5% saved)

localize22.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.4b
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
0.6b
(expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3))
0.6b
(+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1)
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series519.0ms (1.8%)

Counts
2 → 48
Calls

2 calls:

514.0ms
(expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3))
5.0ms
(+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1)

rewrite57.0ms (0.2%)

Algorithm
batch-egg-rewrite
Rules
636×prod-diff_binary64
227×log1p-udef_binary64
226×expm1-udef_binary64
129×add-sqr-sqrt_binary64
127×expm1-log1p-u_binary64
Counts
2 → 56
Calls

2 calls:

56.0ms
(expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3))
56.0ms
(+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01328
127128
2312528
3493828
000
100

simplify95.0ms (0.3%)

Algorithm
egg-herbie
Rules
391×fma-def_binary64
365×associate-*r*_binary64
356×associate-+r+_binary64
245×associate-/l*_binary64
243×+-commutative_binary64
Counts
104 → 89
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03003675
110683609
248543601
349843601

prune785.0ms (2.7%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New2694273
Fresh41216
Picked101
Done000
Total27416290
Error
3.6b
Counts
290 → 16
Alt Table
StatusErrorProgram
10.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (sqrt.f64 (pow.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2)) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 1))))) (-.f64 phi1 phi2)))
54.0b
(-.f64 (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))
45.3b
(-.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 R (*.f64 (*.f64 lambda1 lambda1) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2)))) R)) (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (*.f64 lambda1 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))) 3))) (*.f64 (*.f64 lambda2 lambda2) (*.f64 R (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 4) (*.f64 lambda1 lambda1))))))))
8.8b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2))) 1))))) (-.f64 phi1 phi2)))
10.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi1))) 2) (+.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 1))))) (-.f64 phi1 phi2)))
26.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (-.f64 (fma.f64 1/48 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) (pow.f64 phi2 3)) (log1p.f64 (cos.f64 (*.f64 1/2 phi1)))) (fma.f64 1/2 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (+.f64 (fma.f64 1/16 (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 (sin.f64 (*.f64 1/2 phi1)) (pow.f64 phi2 3))) (pow.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1) 2)) (*.f64 1/24 (/.f64 (pow.f64 (sin.f64 (*.f64 1/2 phi1)) 3) (pow.f64 (/.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1) phi2) 3)))) (*.f64 1/8 (*.f64 (*.f64 phi2 phi2) (+.f64 (/.f64 (cos.f64 (*.f64 1/2 phi1)) (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1)) (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)))))))))) 1)) (-.f64 phi1 phi2)))
29.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (fma.f64 (cos.f64 (exp.f64 (log1p.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cos.f64 1) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (sin.f64 1)))) (-.f64 phi1 phi2)))
9.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi1)))) 1)) (-.f64 phi1 phi2)))
10.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 (sqrt.f64 (pow.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 2)) 1) 1))))) (-.f64 phi1 phi2)))
8.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (+.f64 (fma.f64 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi2) 2)) phi1) -1/2 (log1p.f64 (cos.f64 (*.f64 1/2 phi2)))) (*.f64 (*.f64 (/.f64 (*.f64 phi1 phi1) (+.f64 (cos.f64 (*.f64 1/2 phi2)) 1)) (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/2 phi2)) 2) (+.f64 (cos.f64 (*.f64 1/2 phi2)) 1)) (cos.f64 (*.f64 1/2 phi2)))) -1/8))) 1)) (-.f64 phi1 phi2)))
51.1b
(*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2)))))
36.4b
(cbrt.f64 (pow.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) 3))
61.2b
(log.f64 (+.f64 1 (expm1.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))))
34.3b
(pow.f64 (sqrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 2)
5.0b
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
26.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (+.f64 (hypot.f64 1 (sqrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1) (+.f64 (hypot.f64 1 (sqrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) -1))) (-.f64 phi1 phi2)))
Compiler

Compiled 19623 to 13794 computations (29.7% saved)

localize15.0ms (0%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2))
0.7b
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
1.3b
(cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series9.6s (32.6%)

Counts
3 → 168
Calls

3 calls:

5.7s
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
3.8s
(cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))
22.0ms
(*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2))

rewrite81.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
333×log1p-udef_binary64
186×add-sqr-sqrt_binary64
181×log1p-expm1-u_binary64
181×expm1-log1p-u_binary64
175×add-log-exp_binary64
Counts
3 → 82
Calls

3 calls:

78.0ms
(*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2))
78.0ms
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
78.0ms
(cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01865
137865
2464765
3507565
000
100

simplify538.0ms (1.8%)

Algorithm
egg-herbie
Rules
586×fma-def_binary64
159×associate-/l*_binary64
145×associate-*r/_binary64
99×sub-neg_binary64
69×sqr-pow_binary64
Counts
250 → 291
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0309761449
1501861449

prune1.6s (5.3%)

Pruning

17 alts after pruning (17 fresh and 0 done)

PrunedKeptTotal
New3185323
Fresh31215
Picked101
Done000
Total32217339
Error
3.5b
Counts
339 → 17
Alt Table
StatusErrorProgram
45.3b
(-.f64 (fma.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 R (*.f64 (*.f64 lambda1 lambda1) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 (sqrt.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2)))) R)) (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))))) (*.f64 lambda2 (*.f64 R (*.f64 lambda1 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 1/2 (*.f64 (sqrt.f64 (/.f64 1 (pow.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (+.f64 (*.f64 phi1 phi1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 2)))) (*.f64 2 (*.f64 phi1 phi2))) 3))) (*.f64 (*.f64 lambda2 lambda2) (*.f64 R (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) 4) (*.f64 lambda1 lambda1))))))))
4.3b
(*.f64 (sqrt.f64 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) (*.f64 (sqrt.f64 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) R))
8.8b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2))) 1))))) (-.f64 phi1 phi2)))
16.6b
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (neg.f64 (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (-.f64 phi1 phi2)))) 3)
9.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi1)))) 1)) (-.f64 phi1 phi2)))
5.3b
(*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))) 2) (*.f64 (cbrt.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))) (pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 2)))
10.5b
(pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 3)
4.9b
(*.f64 (cbrt.f64 R) (*.f64 (cbrt.f64 (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) (pow.f64 (cbrt.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2)))) 2)))
8.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (+.f64 (fma.f64 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi2) 2)) phi1) -1/2 (log1p.f64 (cos.f64 (*.f64 1/2 phi2)))) (*.f64 (*.f64 (/.f64 (*.f64 phi1 phi1) (+.f64 (cos.f64 (*.f64 1/2 phi2)) 1)) (+.f64 (/.f64 (pow.f64 (sin.f64 (*.f64 1/2 phi2)) 2) (+.f64 (cos.f64 (*.f64 1/2 phi2)) 1)) (cos.f64 (*.f64 1/2 phi2)))) -1/8))) 1)) (-.f64 phi1 phi2)))
10.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi1))) 2) (+.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 1))))) (-.f64 phi1 phi2)))
26.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (exp.f64 (-.f64 (fma.f64 1/48 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) (pow.f64 phi2 3)) (log1p.f64 (cos.f64 (*.f64 1/2 phi1)))) (fma.f64 1/2 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (+.f64 (fma.f64 1/16 (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 (sin.f64 (*.f64 1/2 phi1)) (pow.f64 phi2 3))) (pow.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1) 2)) (*.f64 1/24 (/.f64 (pow.f64 (sin.f64 (*.f64 1/2 phi1)) 3) (pow.f64 (/.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1) phi2) 3)))) (*.f64 1/8 (*.f64 (*.f64 phi2 phi2) (+.f64 (/.f64 (cos.f64 (*.f64 1/2 phi1)) (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1)) (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)))))))))) 1)) (-.f64 phi1 phi2)))
10.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (sqrt.f64 (pow.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 2)) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 1))))) (-.f64 phi1 phi2)))
29.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (fma.f64 (cos.f64 (exp.f64 (log1p.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cos.f64 1) (*.f64 (sin.f64 (exp.f64 (log1p.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (sin.f64 1)))) (-.f64 phi1 phi2)))
10.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (expm1.f64 (*.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) 3)) (/.f64 1 (+.f64 (pow.f64 (+.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 1) 2) (+.f64 (+.f64 (sqrt.f64 (pow.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) 2)) 1) 1))))) (-.f64 phi1 phi2)))
36.4b
(cbrt.f64 (pow.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))) 3))
61.2b
(log.f64 (+.f64 1 (expm1.f64 (*.f64 R (hypot.f64 (*.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)) (-.f64 lambda1 lambda2)) (-.f64 phi1 phi2))))))
26.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (+.f64 (hypot.f64 1 (sqrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) 1) (+.f64 (hypot.f64 1 (sqrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) -1))) (-.f64 phi1 phi2)))
Compiler

Compiled 81273 to 56554 computations (30.4% saved)

regimes3.0s (10.3%)

Accuracy

Total 0.4b remaining (10%)

Threshold costs 0.4b (10%)

Counts
258 → 1
Compiler

Compiled 80379 to 56963 computations (29.1% 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
01724
12724
23424
33824
44024
53924

end481.0ms (1.6%)

Remove

(sort phi1 phi2)

(sort lambda1 lambda2)

Compiler

Compiled 1024 to 707 computations (31% saved)

Profiling

Loading profile data...