Details

Time bar (total: 25.4s)

analyze3.0s (12%)

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)

sample5.2s (20.6%)

Symmetry

(sort lambda1 lambda2)

(sort phi1 phi2)

Results
1.6s6205×body128valid
833.0ms807×body1024valid
797.0ms485×body1024invalid
752.0ms809×body512valid
592.0ms2482×body128invalid
270.0ms396×body512invalid
194.0ms429×body256valid
89.0ms203×body256invalid
11.0msbody2048valid
Compiler

Compiled 113 to 65 computations (42.5% saved)

simplify118.0ms (0.5%)

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.3b
Counts
3 → 1
Alt Table
StatusErrorProgram
3.3b
(*.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)

localize12.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.2b
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series3.2s (12.5%)

Counts
4 → 180
Calls

4 calls:

2.0s
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
1.1s
(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)))
6.0ms
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

rewrite17.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
14×add-sqr-sqrt_binary64
10×*-un-lft-identity_binary64
associate-*l*_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
Counts
4 → 63
Calls

4 calls:

7.0ms
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
3.0ms
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))
3.0ms
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
0.0ms
(hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))

simplify430.0ms (1.7%)

Algorithm
egg-herbie
Rules
1141×associate-*r*_binary64
462×fma-def_binary64
151×associate-*l*_binary64
88×sub-neg_binary64
65×associate-/l*_binary64
Counts
243 → 263
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0227546358
1516046358

prune1.3s (5.1%)

Pruning

13 alts after pruning (13 fresh and 0 done)

PrunedKeptTotal
New25013263
Fresh000
Picked101
Done000
Total25113264
Error
3.0b
Counts
264 → 13
Alt Table
StatusErrorProgram
39.2b
(-.f64 (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))
44.3b
(*.f64 R (-.f64 (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) (*.f64 lambda1 lambda1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2)))) (*.f64 2 (*.f64 lambda2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) lambda1)))))) (*.f64 lambda2 (*.f64 phi1 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (*.f64 (sin.f64 (*.f64 1/2 phi2)) lambda1)))) (sqrt.f64 (-.f64 (+.f64 (*.f64 phi2 phi2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) (*.f64 lambda1 lambda1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2)))) (*.f64 2 (*.f64 lambda2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) lambda1)))))) (fma.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) (*.f64 lambda1 lambda1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2)))) (*.f64 2 (*.f64 lambda2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) lambda1)))))) (*.f64 phi1 phi2) (*.f64 1/2 (+.f64 (*.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) (*.f64 lambda1 lambda1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2)))) (*.f64 2 (*.f64 lambda2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) lambda1)))))) (*.f64 phi1 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (*.f64 lambda1 lambda1))))) (*.f64 (sqrt.f64 (/.f64 1 (-.f64 (+.f64 (*.f64 phi2 phi2) (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) (*.f64 lambda1 lambda1) (*.f64 (*.f64 lambda2 lambda2) (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2)))) (*.f64 2 (*.f64 lambda2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) lambda1)))))) (*.f64 (*.f64 lambda2 lambda2) (*.f64 phi1 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (sin.f64 (*.f64 1/2 phi2)))))))))))
3.6b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
15.2b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (-.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 1/2 (*.f64 (sin.f64 (*.f64 1/2 phi1)) phi2)))) (-.f64 phi1 phi2)))
36.3b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
9.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2)))
3.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
33.4b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
8.7b
(*.f64 R (exp.f64 (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
8.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
3.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 R (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) lambda1))) (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))))))))
3.8b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (-.f64 phi1 phi2)))
Compiler

Compiled 60695 to 41524 computations (31.6% saved)

localize15.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
0.2b
(*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
0.4b
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series720.0ms (2.8%)

Counts
3 → 96
Calls

3 calls:

689.0ms
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
25.0ms
(*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
6.0ms
(expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))

rewrite8.0ms (0%)

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt_binary64
*-un-lft-identity_binary64
associate-*l*_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
Counts
3 → 46
Calls

3 calls:

5.0ms
(*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
0.0ms
(log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
0.0ms
(expm1.f64 (log1p.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))

simplify86.0ms (0.3%)

Algorithm
egg-herbie
Rules
936×times-frac_binary64
625×cancel-sign-sub-inv_binary64
254×fma-neg_binary64
224×sub-neg_binary64
204×associate-*r*_binary64
Counts
142 → 133
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
02393127
17073007
225602947
354822947

prune330.0ms (1.3%)

Pruning

13 alts after pruning (13 fresh and 0 done)

PrunedKeptTotal
New1515156
Fresh4812
Picked101
Done000
Total15613169
Error
2.9b
Counts
169 → 13
Alt Table
StatusErrorProgram
12.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (-.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi1))) (fma.f64 1/2 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (*.f64 1/8 (+.f64 (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 phi2 phi2)) (+.f64 1 (cos.f64 (*.f64 1/2 phi1)))) (*.f64 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2)))))))) (-.f64 phi1 phi2)))
39.2b
(-.f64 (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))
3.6b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
8.7b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))))) (-.f64 phi1 phi2)))
3.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
33.4b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
36.3b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
13.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (-.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi2))) (fma.f64 1/2 (/.f64 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))) (*.f64 1/8 (+.f64 (/.f64 (*.f64 (*.f64 phi1 phi1) (pow.f64 (sin.f64 (*.f64 1/2 phi2)) 2)) (pow.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2))) 2)) (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (*.f64 phi1 phi1)) (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))))))))) (-.f64 phi1 phi2)))
8.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
3.8b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (-.f64 phi1 phi2)))
14.7b
(*.f64 R (hypot.f64 (fma.f64 1/2 (*.f64 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) lambda2) (-.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (-.f64 lambda1 lambda2)) (*.f64 1/2 (*.f64 phi1 (*.f64 (sin.f64 (*.f64 1/2 phi2)) lambda1))))) (-.f64 phi1 phi2)))
9.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1)))) (-.f64 phi1 phi2)))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 R (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) lambda1))) (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))))))))
Compiler

Compiled 5979 to 3593 computations (39.9% saved)

localize16.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
0.2b
(log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
0.4b
(expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series52.0ms (0.2%)

Counts
3 → 96
Calls

3 calls:

31.0ms
(*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
16.0ms
(expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
6.0ms
(log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))

rewrite8.0ms (0%)

Algorithm
rewrite-expression-head
Rules
add-sqr-sqrt_binary64
*-un-lft-identity_binary64
associate-*l*_binary64
add-cube-cbrt_binary64
add-cbrt-cube_binary64
Counts
3 → 46
Calls

3 calls:

5.0ms
(*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
0.0ms
(expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
0.0ms
(log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))

simplify105.0ms (0.4%)

Algorithm
egg-herbie
Rules
891×cancel-sign-sub-inv_binary64
691×fma-neg_binary64
330×sub-neg_binary64
306×associate-*r*_binary64
253×neg-sub0_binary64
Counts
142 → 133
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
02463092
17082973
225432812
341502798
450302798

prune344.0ms (1.4%)

Pruning

13 alts after pruning (12 fresh and 1 done)

PrunedKeptTotal
New1551156
Fresh11112
Picked011
Done000
Total15613169
Error
2.9b
Counts
169 → 13
Alt Table
StatusErrorProgram
12.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (-.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi1))) (fma.f64 1/2 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (*.f64 1/8 (+.f64 (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 phi2 phi2)) (+.f64 1 (cos.f64 (*.f64 1/2 phi1)))) (*.f64 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2)))))))) (-.f64 phi1 phi2)))
39.2b
(-.f64 (*.f64 lambda2 (*.f64 R (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 R (*.f64 lambda1 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))))
3.6b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
8.7b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))))) (-.f64 phi1 phi2)))
3.3b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
33.4b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
36.3b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
13.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (-.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi2))) (fma.f64 1/2 (/.f64 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))) (*.f64 1/8 (+.f64 (/.f64 (*.f64 (*.f64 phi1 phi1) (pow.f64 (sin.f64 (*.f64 1/2 phi2)) 2)) (pow.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2))) 2)) (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (*.f64 phi1 phi1)) (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))))))))) (-.f64 phi1 phi2)))
8.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
14.7b
(*.f64 R (hypot.f64 (fma.f64 1/2 (*.f64 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) lambda2) (fma.f64 (cos.f64 (*.f64 1/2 phi2)) (-.f64 lambda1 lambda2) (*.f64 (*.f64 phi1 (*.f64 (sin.f64 (*.f64 1/2 phi2)) lambda1)) -1/2))) (-.f64 phi1 phi2)))
58.6b
(-.f64 (+.f64 (/.f64 (*.f64 phi1 (*.f64 R phi2)) (*.f64 lambda2 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))))) (*.f64 R (*.f64 (cos.f64 (*.f64 1/2 (+.f64 phi1 phi2))) lambda1))) (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))))))))
3.8b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (-.f64 phi1 phi2)))
9.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1)))) (-.f64 phi1 phi2)))
Compiler

Compiled 5814 to 3463 computations (40.4% saved)

localize14.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
0.2b
(*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
0.4b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
3.6b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series5.6s (22.1%)

Counts
2 → 88
Calls

2 calls:

3.6s
(*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
2.1s
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))

rewrite15.0ms (0.1%)

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

2 calls:

6.0ms
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
5.0ms
(*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))

simplify418.0ms (1.6%)

Algorithm
egg-herbie
Rules
981×associate-*r*_binary64
422×fma-def_binary64
372×associate-+r+_binary64
163×associate-*l*_binary64
59×sqr-pow_binary64
Counts
135 → 178
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0197145762
1544345762

prune1.5s (5.8%)

Pruning

14 alts after pruning (14 fresh and 0 done)

PrunedKeptTotal
New3077314
Fresh4711
Picked101
Done101
Total31314327
Error
2.9b
Counts
327 → 14
Alt Table
StatusErrorProgram
12.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (-.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi1))) (fma.f64 1/2 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (*.f64 1/8 (+.f64 (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi1)) (*.f64 phi2 phi2)) (+.f64 1 (cos.f64 (*.f64 1/2 phi1)))) (*.f64 (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2) (*.f64 (tan.f64 (/.f64 (*.f64 1/2 phi1) 2)) phi2)))))))) (-.f64 phi1 phi2)))
3.7b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2))))
33.4b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
53.7b
(*.f64 (cbrt.f64 (*.f64 (*.f64 R (*.f64 R R)) (*.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
13.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (-.f64 (log1p.f64 (cos.f64 (*.f64 1/2 phi2))) (fma.f64 1/2 (/.f64 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))) (*.f64 1/8 (+.f64 (/.f64 (*.f64 (*.f64 phi1 phi1) (pow.f64 (sin.f64 (*.f64 1/2 phi2)) 2)) (pow.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2))) 2)) (/.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (*.f64 phi1 phi1)) (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))))))))) (-.f64 phi1 phi2)))
3.9b
(*.f64 (*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))) (sqrt.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
8.6b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
36.3b
(exp.f64 (+.f64 (+.f64 (log.f64 R) (log.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))) (log.f64 (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))))
8.8b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2))))
9.3b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2))))
9.1b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log.f64 (+.f64 (cos.f64 (*.f64 1/2 phi1)) 1)))) (-.f64 phi1 phi2)))
8.7b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (expm1.f64 (log.f64 (+.f64 1 (cos.f64 (*.f64 1/2 phi2)))))) (-.f64 phi1 phi2)))
3.8b
(*.f64 (*.f64 R (sqrt.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))) (sqrt.f64 (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cbrt.f64 (-.f64 lambda1 lambda2))) (*.f64 (cbrt.f64 (-.f64 lambda1 lambda2)) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (-.f64 phi1 phi2))))
14.7b
(*.f64 R (hypot.f64 (fma.f64 1/2 (*.f64 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))) lambda2) (fma.f64 (cos.f64 (*.f64 1/2 phi2)) (-.f64 lambda1 lambda2) (*.f64 (*.f64 phi1 (*.f64 (sin.f64 (*.f64 1/2 phi2)) lambda1)) -1/2))) (-.f64 phi1 phi2)))
Compiler

Compiled 66991 to 44906 computations (33% saved)

regimes2.5s (9.9%)

Accuracy

Total 0.4b remaining (10.1%)

Threshold costs 0.4b (10.1%)

Counts
190 → 1
Compiler

Compiled 65133 to 43859 computations (32.7% 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
01728
12428
23228
33628
43828
53828

end355.0ms (1.4%)

Remove

(sort phi1 phi2)

(sort lambda1 lambda2)

Compiler

Compiled 740 to 483 computations (34.7% saved)

Profiling

Loading profile data...