Details

Time bar (total: 2.4s)

analyze2.0ms (0.1%)

Algorithm
search
Search
TrueOtherFalseIter
0%100%0%0
0%100%0%1
0%50%50%2
25%25%50%3
25%12.5%62.5%4
25%6.2%68.8%5
25%3.1%71.9%6
25%1.6%73.5%7
25%0.8%74.2%8
25%0.4%74.6%9
25%0.2%74.8%10
25%0.1%74.9%11
25%0%75%12
Compiler

Compiled 8 to 5 computations (37.5% saved)

sample1.2s (52.1%)

Results
1.2s8256×body256valid
1.0msbody256invalid

preprocess191.0ms (8%)

Algorithm
egg-herbie
Rules
1883×fma-neg_binary64
922×unsub-neg_binary64
680×fma-def_binary64
602×associate-+l+_binary64
369×associate-+r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1710
21210
31910
42810
54510
68310
712510
820110
939510
1083010
11219810
12426810
13475810
14493210
15498710
16499710
17499710
18610910
19611710
20616910
21616910
22738210
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Outputs
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Compiler

Compiled 8 to 5 computations (37.5% saved)

simplify172.0ms (7.2%)

Algorithm
egg-herbie
Rules
1883×fma-neg_binary64
922×unsub-neg_binary64
680×fma-def_binary64
602×associate-+l+_binary64
369×associate-+r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1710
21210
31910
42810
54510
68310
712510
820110
939510
1083010
11219810
12426810
13475810
14493210
15498710
16499710
17499710
18610910
19611710
20616910
21616910
22738210
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Outputs
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))

eval0.0ms (0%)

Compiler

Compiled 7 to 4 computations (42.9% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Error
0.3b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Compiler

Compiled 7 to 4 computations (42.9% saved)

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.1b
(log.f64 (log.f64 x))
0.3b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Compiler

Compiled 13 to 4 computations (69.2% saved)

series148.0ms (6.2%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
71.0ms
x
@0
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
50.0ms
x
@-inf
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
26.0ms
x
@inf
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
0.0ms
x
@0
(log.f64 (log.f64 x))
0.0ms
x
@-inf
(log.f64 (log.f64 x))

rewrite62.0ms (2.6%)

Algorithm
batch-egg-rewrite
Rules
600×pow1_binary64
560×add-log-exp_binary64
560×log1p-expm1-u_binary64
560×expm1-log1p-u_binary64
549×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0513
110713
2149013
Stop Event
node limit
Counts
2 → 53
Calls
Call 1
Inputs
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(log.f64 (log.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 x) (*.f64 (neg.f64 (log.f64 (log.f64 x))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (neg.f64 (log.f64 (log.f64 x))) 1 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (neg.f64 (cbrt.f64 (log.f64 (log.f64 x)))) (pow.f64 (cbrt.f64 (log.f64 (log.f64 x))) 2) (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 x (log.f64 x))) (fma.f64 (neg.f64 (sqrt.f64 (log.f64 (log.f64 x)))) (sqrt.f64 (log.f64 (log.f64 x))) (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (log.f64 (log.f64 x))) (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x (log.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) (pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2) (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))) (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 (log.f64 x)) 3)) (/.f64 1 (+.f64 (pow.f64 (log.f64 x) 2) (*.f64 (log.f64 (log.f64 x)) (log.f64 (*.f64 x (log.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 (log.f64 x)) 2)) (/.f64 1 (log.f64 (*.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (log.f64 x)) (sqrt.f64 (log.f64 (log.f64 x)))) (-.f64 (sqrt.f64 (log.f64 x)) (sqrt.f64 (log.f64 (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (pow.f64 (log.f64 x) 2) (*.f64 (log.f64 (log.f64 x)) (log.f64 (*.f64 x (log.f64 x))))) (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 (log.f64 x)) 3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (log.f64 (*.f64 x (log.f64 x))) (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 (log.f64 x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 (log.f64 x)) 3)) (+.f64 (pow.f64 (log.f64 x) 2) (*.f64 (log.f64 (log.f64 x)) (log.f64 (*.f64 x (log.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 (log.f64 x)) 2)) (log.f64 (*.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 (log.f64 x)) 3))) (neg.f64 (+.f64 (pow.f64 (log.f64 x) 2) (*.f64 (log.f64 (log.f64 x)) (log.f64 (*.f64 x (log.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (log.f64 x) 2) (pow.f64 (log.f64 (log.f64 x)) 2))) (neg.f64 (log.f64 (*.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (neg.f64 (log.f64 (log.f64 x))) 3)) (+.f64 (pow.f64 (log.f64 x) 2) (-.f64 (*.f64 (neg.f64 (log.f64 (log.f64 x))) (neg.f64 (log.f64 (log.f64 x)))) (*.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 2) (*.f64 (neg.f64 (log.f64 (log.f64 x))) (neg.f64 (log.f64 (log.f64 x))))) (-.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 x (log.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x (log.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 x (log.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 x (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x (log.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 x (log.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (cbrt.f64 (log.f64 x)) (neg.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (sqrt.f64 (log.f64 x)) (neg.f64 (log.f64 (log.f64 x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (log.f64 (cbrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (log.f64 x))) (log.f64 (sqrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (log.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (log.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (log.f64 x))) (pow.f64 (cbrt.f64 (log.f64 (log.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (log.f64 x))) 2) (cbrt.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (log.f64 x))) (sqrt.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (log.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (log.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (log.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (log.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (log.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (log.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (log.f64 x) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (log.f64 x))))))))

simplify206.0ms (8.6%)

Algorithm
egg-herbie
Rules
2842×fma-neg_binary64
987×fma-def_binary64
843×distribute-rgt-in_binary64
686×unsub-neg_binary64
584×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
016216
138120
273120
3189120
4618120
51534120
62765120
74473120
85079120
95231120
105269120
115273120
125273120
135457120
147048120
157426120
167526120
177574120
187606120
197606120
Stop Event
node limit
Counts
69 → 59
Calls
Call 1
Inputs
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
Outputs
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (*.f64 -1 (log.f64 (/.f64 1 x)))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)) (log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))))
(-.f64 (neg.f64 (neg.f64 (log.f64 x))) (log.f64 (neg.f64 (neg.f64 (log.f64 x)))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (*.f64 -1 (log.f64 (/.f64 1 x))))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))
(log.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(log.f64 (neg.f64 (neg.f64 (log.f64 x))))
(log.f64 (log.f64 x))

eval15.0ms (0.6%)

Compiler

Compiled 738 to 276 computations (62.6% saved)

prune8.0ms (0.3%)

Pruning

2 alts after pruning (1 fresh and 1 done)

PrunedKeptTotal
New58159
Fresh000
Picked011
Done000
Total58260
Error
0b
Counts
60 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
0.0b
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 13 to 8 computations (38.5% saved)

localize7.0ms (0.3%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(log.f64 (/.f64 x (log.f64 x)))
0.3b
(/.f64 x (log.f64 x))
Compiler

Compiled 13 to 4 computations (69.2% saved)

series100.0ms (4.2%)

Counts
2 → 20
Calls

6 calls:

TimeVariablePointExpression
41.0ms
x
@-inf
(log.f64 (/.f64 x (log.f64 x)))
29.0ms
x
@inf
(log.f64 (/.f64 x (log.f64 x)))
14.0ms
x
@0
(log.f64 (/.f64 x (log.f64 x)))
8.0ms
x
@-inf
(/.f64 x (log.f64 x))
7.0ms
x
@inf
(/.f64 x (log.f64 x))

rewrite52.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
515×pow1_binary64
492×add-sqr-sqrt_binary64
476×add-log-exp_binary64
476×log1p-expm1-u_binary64
476×expm1-log1p-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0514
110014
2128314
Stop Event
node limit
Counts
2 → 62
Calls
Call 1
Inputs
(/.f64 x (log.f64 x))
(log.f64 (/.f64 x (log.f64 x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (-.f64 (/.f64 x (log.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 x (log.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 1 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (log.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 x (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (/.f64 1 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 x (log.f64 x))) (pow.f64 (cbrt.f64 (/.f64 x (log.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 x (log.f64 x))) 2) (cbrt.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (/.f64 1 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 x (log.f64 x))) (sqrt.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 x) (/.f64 1 (neg.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (log.f64 x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) 1) (/.f64 (cbrt.f64 x) (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) 1) (/.f64 (sqrt.f64 x) (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (/.f64 x (cbrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (cbrt.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 x) (pow.f64 (cbrt.f64 (log.f64 x)) 2)) (/.f64 (sqrt.f64 x) (cbrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (log.f64 x))) (/.f64 x (sqrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 (log.f64 x))) (/.f64 (cbrt.f64 x) (sqrt.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x (log.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 x (log.f64 x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 x (log.f64 x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 x (log.f64 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (log.f64 x) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 x (log.f64 x))))) (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2)) (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 x (neg.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 x (log.f64 x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 x (log.f64 x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 x (log.f64 x))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (/.f64 x (log.f64 x))) 2)) (log.f64 (cbrt.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (/.f64 x (log.f64 x)))) (log.f64 (sqrt.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 x) (log.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (log.f64 (/.f64 x (log.f64 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (log.f64 x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 x)) (log.f64 (neg.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (/.f64 x (log.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (/.f64 x (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) (pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2) (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))) (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 3) (pow.f64 (log.f64 (log.f64 x)) 3)) (+.f64 (pow.f64 (log.f64 x) 2) (+.f64 (*.f64 (log.f64 (log.f64 x)) (log.f64 (log.f64 x))) (*.f64 (log.f64 x) (log.f64 (log.f64 x))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (log.f64 x) 2) (*.f64 (log.f64 (log.f64 x)) (log.f64 (log.f64 x)))) (+.f64 (log.f64 x) (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (log.f64 (/.f64 x (log.f64 x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (log.f64 (/.f64 x (log.f64 x))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (log.f64 (/.f64 x (log.f64 x)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (log.f64 x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (log.f64 (/.f64 x (log.f64 x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (log.f64 (/.f64 x (log.f64 x))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (-.f64 (/.f64 x (log.f64 x)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (log.f64 (/.f64 x (log.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (log.f64 x)) 2) (cbrt.f64 (log.f64 x)) (neg.f64 (log.f64 (log.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (log.f64 x)) (sqrt.f64 (log.f64 x)) (neg.f64 (log.f64 (log.f64 x))))))))

simplify117.0ms (4.9%)

Algorithm
egg-herbie
Rules
892×div-sub_binary64
472×distribute-rgt-in_binary64
441×sub-neg_binary64
362×distribute-lft-in_binary64
351×times-frac_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
025224
153200
292192
3243168
4632168
51489168
63751168
75397168
86565168
97368168
107796168
Stop Event
node limit
Counts
82 → 68
Calls
Call 1
Inputs
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
Outputs
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(*.f64 -1 (/.f64 x (log.f64 (/.f64 1 x))))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(/.f64 x (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(neg.f64 (/.f64 x (neg.f64 (log.f64 x))))
(/.f64 (neg.f64 x) (neg.f64 (log.f64 x)))
(*.f64 1 (/.f64 x (log.f64 x)))
(/.f64 x (log.f64 x))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (log.f64 (/.f64 1 (log.f64 x))) (log.f64 x))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (log.f64 (/.f64 -1 (log.f64 (/.f64 1 x)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 (/.f64 -1 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1)))))
(+.f64 (log.f64 x) (neg.f64 (log.f64 (log.f64 x))))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))

eval16.0ms (0.7%)

Compiler

Compiled 702 to 290 computations (58.7% saved)

prune8.0ms (0.3%)

Pruning

2 alts after pruning (0 fresh and 2 done)

PrunedKeptTotal
New68068
Fresh000
Picked011
Done011
Total68270
Error
0b
Counts
70 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
0.0b
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 13 to 8 computations (38.5% saved)

regimes15.0ms (0.6%)

Accuracy

Total -0.3b remaining (-3450%)

Threshold costs -0.3b (-3450%)

Counts
2 → 1
Calls
Call 1
Inputs
(log.f64 (/.f64 x (log.f64 x)))
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Outputs
(log.f64 (/.f64 x (log.f64 x)))
Calls

3 calls:

3.0ms
x
3.0ms
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
3.0ms
(log.f64 x)
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
0.0b1(log.f64 x)
Compiler

Compiled 24 to 13 computations (45.8% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
058
Stop Event
done
saturated
Calls
Call 1
Inputs
(log.f64 (/.f64 x (log.f64 x)))
Outputs
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 6 to 4 computations (33.3% saved)

soundness0.0ms (0%)

end15.0ms (0.6%)

Compiler

Compiled 6 to 4 computations (33.3% saved)

Profiling

Loading profile data...