Details

Time bar (total: 34.0s)

analyze6.3s (18.4%)

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)

sample234.0ms (0.7%)

Algorithm
intervals
Results
50.0ms192×body128valid
33.0ms25×body1024valid
31.0ms20×body1024invalid
19.0ms24×body512valid
14.0ms58×body128invalid
9.0ms11×body512invalid
8.0ms15×body256valid
3.0msbody256invalid
Compiler

Compiled 80 to 48 computations (40% saved)

simplify142.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

prune9.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
3.4b
Counts
3 → 2
Alt Table
StatusErrorProgram
3.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
41.3b
(*.f64 R (sqrt.f64 (+.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (*.f64 (-.f64 phi1 phi2) (-.f64 phi1 phi2)))))
Compiler

Compiled 169 to 97 computations (42.6% saved)

localize24.0ms (0.1%)

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)))
2.0b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series6.0s (17.5%)

Counts
4 → 180
Calls

4 calls:

3.8s
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))
2.1s
(hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))
47.0ms
(*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
9.0ms
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

rewrite30.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:

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

simplify852.0ms (2.5%)

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

prune2.5s (7.5%)

Pruning

16 alts after pruning (16 fresh and 0 done)

PrunedKeptTotal
New24716263
Fresh101
Picked101
Done000
Total24916265
Error
2.7b
Counts
265 → 16
Alt Table
StatusErrorProgram
47.0b
(*.f64 R (sqrt.f64 (-.f64 (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda2 lambda2) (+.f64 (*.f64 phi1 phi1) (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda1 lambda1)))) (*.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda2 lambda1))))))
28.9b
(*.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)))
3.9b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
49.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))))))))
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 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
44.2b
(*.f64 R (hypot.f64 (exp.f64 (log.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2)))
31.1b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
27.8b
(*.f64 R (hypot.f64 (-.f64 (+.f64 (*.f64 1/2 (*.f64 lambda2 (*.f64 phi1 (sin.f64 (*.f64 1/2 phi2))))) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 phi1 3) (*.f64 (sin.f64 (*.f64 1/2 phi2)) lambda1))) (+.f64 (*.f64 1/8 (*.f64 lambda2 (*.f64 (pow.f64 phi1 2) (cos.f64 (*.f64 1/2 phi2))))) (*.f64 (cos.f64 (*.f64 1/2 phi2)) lambda1)))) (+.f64 (*.f64 1/2 (*.f64 phi1 (*.f64 (sin.f64 (*.f64 1/2 phi2)) lambda1))) (+.f64 (*.f64 1/8 (*.f64 (pow.f64 phi1 2) (*.f64 (cos.f64 (*.f64 1/2 phi2)) lambda1))) (+.f64 (*.f64 lambda2 (cos.f64 (*.f64 1/2 phi2))) (*.f64 1/48 (*.f64 lambda2 (*.f64 (pow.f64 phi1 3) (sin.f64 (*.f64 1/2 phi2))))))))) (-.f64 phi1 phi2)))
8.2b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
55.8b
(-.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))))))
8.6b
(*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
4.6b
(*.f64 (*.f64 (cbrt.f64 R) (cbrt.f64 R)) (*.f64 (cbrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
34.5b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
3.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
3.5b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.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)))
Compiler

Compiled 60869 to 41636 computations (31.6% saved)

localize31.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)))
2.0b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series79.0ms (0.2%)

Counts
3 → 96
Calls

3 calls:

45.0ms
(*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
26.0ms
(expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
8.0ms
(log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))

rewrite15.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:

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

simplify203.0ms (0.6%)

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

prune627.0ms (1.8%)

Pruning

18 alts after pruning (17 fresh and 1 done)

PrunedKeptTotal
New1524156
Fresh21315
Picked011
Done000
Total15418172
Error
2.7b
Counts
172 → 18
Alt Table
StatusErrorProgram
47.0b
(*.f64 R (sqrt.f64 (-.f64 (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda2 lambda2) (+.f64 (*.f64 phi1 phi1) (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda1 lambda1)))) (*.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda2 lambda1))))))
3.9b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
55.8b
(-.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))))))
3.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))))) (-.f64 phi1 phi2)))
49.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))))))))
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 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
44.2b
(*.f64 R (hypot.f64 (exp.f64 (log.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2)))
31.1b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
27.8b
(*.f64 R (hypot.f64 (-.f64 (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (+.f64 lambda1 (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) lambda2)))) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (+.f64 (*.f64 1/2 (*.f64 phi1 lambda2)) (*.f64 (*.f64 1/48 (pow.f64 phi1 3)) lambda1)))) (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (+.f64 lambda2 (*.f64 (*.f64 1/8 (*.f64 phi1 phi1)) lambda1))) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 phi1 3) lambda2)) (*.f64 (*.f64 1/2 phi1) lambda1))))) (-.f64 phi1 phi2)))
4.6b
(*.f64 (*.f64 (cbrt.f64 R) (cbrt.f64 R)) (*.f64 (cbrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
28.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (+.f64 (cos.f64 (*.f64 1/2 phi1)) (fma.f64 (sin.f64 (*.f64 1/2 phi1)) (-.f64 (*.f64 1/48 (pow.f64 phi2 3)) (*.f64 1/2 phi2)) (*.f64 (*.f64 phi2 phi2) (*.f64 (cos.f64 (*.f64 1/2 phi1)) -1/8))))) (-.f64 phi1 phi2)))
34.5b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
8.2b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (*.f64 1/2 phi1))))) (-.f64 phi1 phi2)))
8.6b
(*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
3.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
3.5b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.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)))
Compiler

Compiled 6286 to 3737 computations (40.6% saved)

localize34.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(log1p.f64 (log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))))
0.4b
(expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
0.5b
(log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
2.0b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series37.0ms (0.1%)

Counts
2 → 48
Calls

2 calls:

27.0ms
(log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
10.0ms
(log1p.f64 (log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))))

rewrite6.0ms (0%)

Algorithm
rewrite-expression-head
Rules
*-un-lft-identity_binary64
add-sqr-sqrt_binary64
add-cube-cbrt_binary64
log-pow_binary64
log-prod_binary64
Counts
2 → 29
Calls

2 calls:

3.0ms
(log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))
1.0ms
(log1p.f64 (log.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))))

simplify142.0ms (0.4%)

Algorithm
egg-herbie
Rules
778×fma-def_binary64
672×sub-neg_binary64
475×cancel-sign-sub-inv_binary64
413×*-commutative_binary64
305×associate--r+_binary64
Counts
77 → 85
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01601660
14051545
213471450
343221450
450171450

prune639.0ms (1.9%)

Pruning

18 alts after pruning (17 fresh and 1 done)

PrunedKeptTotal
New1432145
Fresh11516
Picked101
Done011
Total14518163
Error
2.7b
Counts
163 → 18
Alt Table
StatusErrorProgram
47.0b
(*.f64 R (sqrt.f64 (-.f64 (fma.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda2 lambda2) (+.f64 (*.f64 phi1 phi1) (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda1 lambda1)))) (*.f64 2 (*.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) (*.f64 lambda2 lambda1))))))
3.9b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (log.f64 (exp.f64 (expm1.f64 (cos.f64 (*.f64 1/2 phi1))))))) (-.f64 phi1 phi2)))
8.6b
(*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
49.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))))))))
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 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
44.2b
(*.f64 R (hypot.f64 (exp.f64 (log.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi1))) (-.f64 phi1 phi2)))
31.1b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
27.8b
(*.f64 R (hypot.f64 (-.f64 (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (+.f64 lambda1 (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) lambda2)))) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (+.f64 (*.f64 1/2 (*.f64 phi1 lambda2)) (*.f64 (*.f64 1/48 (pow.f64 phi1 3)) lambda1)))) (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (+.f64 lambda2 (*.f64 (*.f64 1/8 (*.f64 phi1 phi1)) lambda1))) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 phi1 3) lambda2)) (*.f64 (*.f64 1/2 phi1) lambda1))))) (-.f64 phi1 phi2)))
4.6b
(*.f64 (*.f64 (cbrt.f64 R) (cbrt.f64 R)) (*.f64 (cbrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
28.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (+.f64 (cos.f64 (*.f64 1/2 phi1)) (fma.f64 (sin.f64 (*.f64 1/2 phi1)) (-.f64 (*.f64 1/48 (pow.f64 phi2 3)) (*.f64 1/2 phi2)) (*.f64 (*.f64 phi2 phi2) (*.f64 (cos.f64 (*.f64 1/2 phi1)) -1/8))))) (-.f64 phi1 phi2)))
34.5b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
3.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (+.f64 (log.f64 (sqrt.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (log.f64 (sqrt.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))))))) (-.f64 phi1 phi2)))
55.8b
(-.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))))))
3.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
3.5b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.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)))
8.2b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (*.f64 1/2 phi2))) (-.f64 phi1 phi2)))
Compiler

Compiled 6360 to 4043 computations (36.4% saved)

localize28.0ms (0.1%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.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))))
0.4b
(*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
0.4b
(cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
2.0b
(cos.f64 (/.f64 (+.f64 phi1 phi2) 2))

series2.1s (6.3%)

Counts
3 → 96
Calls

3 calls:

1.2s
(*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
864.0ms
(cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))
52.0ms
(*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.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))))

rewrite45.0ms (0.1%)

Algorithm
rewrite-expression-head
Rules
22×add-sqr-sqrt_binary64
22×cbrt-prod_binary64
19×pow1_binary64
14×*-un-lft-identity_binary64
14×add-cube-cbrt_binary64
Counts
3 → 83
Calls

3 calls:

21.0ms
(*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.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))))
9.0ms
(*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))
1.0ms
(cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))

simplify205.0ms (0.6%)

Algorithm
egg-herbie
Rules
890×cancel-sign-sub-inv_binary64
483×associate-*r*_binary64
405×associate-*l*_binary64
306×unswap-sqr_binary64
235×*-commutative_binary64
Counts
179 → 185
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
03154768
19274506
234144252
358044252

prune1.7s (5%)

Pruning

17 alts after pruning (16 fresh and 1 done)

PrunedKeptTotal
New3324336
Fresh41216
Picked101
Done011
Total33717354
Error
2.7b
Counts
354 → 17
Alt Table
StatusErrorProgram
3.7b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi2 phi1) 2)))) 4) (pow.f64 (cbrt.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi2 phi1) 2)))) 4))) (cbrt.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
8.4b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (pow.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi1)) 2) 1/3)) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (-.f64 phi1 phi2)))
8.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (log.f64 (exp.f64 (expm1.f64 (cos.f64 (*.f64 1/2 phi1))))))) (-.f64 phi1 phi2)))
8.2b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (pow.f64 (pow.f64 (cos.f64 (*.f64 1/2 phi2)) 2) 1/3)) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (-.f64 phi1 phi2)))
8.6b
(*.f64 R (expm1.f64 (log1p.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.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 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
44.2b
(*.f64 R (hypot.f64 (exp.f64 (log.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
27.8b
(*.f64 R (hypot.f64 (-.f64 (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (+.f64 lambda1 (*.f64 1/8 (*.f64 (*.f64 phi1 phi1) lambda2)))) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (+.f64 (*.f64 1/2 (*.f64 phi1 lambda2)) (*.f64 (*.f64 1/48 (pow.f64 phi1 3)) lambda1)))) (+.f64 (*.f64 (cos.f64 (*.f64 1/2 phi2)) (+.f64 lambda2 (*.f64 (*.f64 1/8 (*.f64 phi1 phi1)) lambda1))) (*.f64 (sin.f64 (*.f64 1/2 phi2)) (+.f64 (*.f64 1/48 (*.f64 (pow.f64 phi1 3) lambda2)) (*.f64 (*.f64 1/2 phi1) lambda1))))) (-.f64 phi1 phi2)))
4.6b
(*.f64 (*.f64 (cbrt.f64 R) (cbrt.f64 R)) (*.f64 (cbrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
28.9b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (+.f64 (cos.f64 (*.f64 1/2 phi1)) (fma.f64 (sin.f64 (*.f64 1/2 phi1)) (-.f64 (*.f64 1/48 (pow.f64 phi2 3)) (*.f64 1/2 phi2)) (*.f64 (*.f64 phi2 phi2) (*.f64 (cos.f64 (*.f64 1/2 phi1)) -1/8))))) (-.f64 phi1 phi2)))
34.5b
(exp.f64 (+.f64 (log.f64 R) (log.f64 (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2)))))
3.5b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (+.f64 (log.f64 (sqrt.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (log.f64 (sqrt.f64 (exp.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))))))) (-.f64 phi1 phi2)))
3.9b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (cbrt.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
55.8b
(-.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))))))
31.1b
(*.f64 (sqrt.f64 R) (*.f64 (sqrt.f64 R) (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (-.f64 phi1 phi2))))
3.5b
(*.f64 R (hypot.f64 (*.f64 (*.f64 (-.f64 lambda1 lambda2) (*.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))) (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (log.f64 (exp.f64 (cbrt.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2)))))) (-.f64 phi1 phi2)))
3.4b
(*.f64 R (hypot.f64 (*.f64 (-.f64 lambda1 lambda2) (log1p.f64 (expm1.f64 (cos.f64 (/.f64 (+.f64 phi1 phi2) 2))))) (-.f64 phi1 phi2)))
Compiler

Compiled 16305 to 10014 computations (38.6% saved)

regimes5.1s (14.9%)

Accuracy

Total 0.4b remaining (9.8%)

Threshold costs 0.4b (9.8%)

Counts
211 → 1
Compiler

Compiled 75475 to 51923 computations (31.2% saved)

simplify12.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
01635
12835
24135
34935
45435
55535
65535

end55.0ms (0.2%)

Remove

(sort phi1 phi2)

(sort lambda1 lambda2)

Compiler

Compiled 140 to 90 computations (35.7% saved)

sample6.8s (20.1%)

Algorithm
intervals
Results
1.6s6080×body128valid
1.1s798×body1024valid
656.0ms2397×body128invalid
652.0ms722×body512valid
637.0ms462×body1024invalid
290.0ms363×body512invalid
224.0ms393×body256valid
103.0ms190×body256invalid
19.0msbody2048valid
Compiler

Compiled 656 to 445 computations (32.2% saved)

Profiling

Loading profile data...