Details

Time bar (total: 1.9s)

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.1s (57.3%)

Results
1.1s8256×body256valid
4.0ms15×body256invalid

preprocess113.0ms (5.9%)

Algorithm
egg-herbie
Rules
1883×fma-neg_binary64
921×unsub-neg_binary64
684×fma-def_binary64
590×associate-+l+_binary64
364×associate-+r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1710
21210
31910
42810
54510
68310
712410
820110
939510
1083310
11218910
12424710
13473710
14491110
15496610
16497610
17497610
18608810
19609610
20614810
21614810
22727810
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)

simplify99.0ms (5.2%)

Algorithm
egg-herbie
Rules
1883×fma-neg_binary64
921×unsub-neg_binary64
684×fma-def_binary64
590×associate-+l+_binary64
364×associate-+r+_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0510
1710
21210
31910
42810
54510
68310
712410
820110
939510
1083310
11218910
12424710
13473710
14491110
15496610
16497610
17497610
18608810
19609610
20614810
21614810
22727810
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.2b
Counts
2 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
Compiler

Compiled 7 to 4 computations (42.9% saved)

localize5.0ms (0.3%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.2b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
0.1b
(log.f64 (log.f64 x))
0.1b
(log.f64 (log.f64 x))
0.2b
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))

series136.0ms (7.1%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
62.0ms
x
@-inf
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
49.0ms
x
@0
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
25.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))

rewrite47.0ms (2.5%)

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
2148513
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))))))))

simplify134.0ms (7%)

Algorithm
egg-herbie
Rules
2842×fma-neg_binary64
987×fma-def_binary64
859×distribute-rgt-in_binary64
684×unsub-neg_binary64
580×distribute-lft-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
016216
138120
273120
3189120
4612120
51448120
62659120
74352120
84941120
95093120
105131120
115135120
125135120
135319120
146926120
157304120
167404120
177452120
187484120
197484120
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))

eval16.0ms (0.8%)

Compiler

Compiled 738 to 276 computations (62.6% saved)

prune7.0ms (0.3%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New58159
Fresh000
Picked101
Done000
Total59160
Error
0b
Counts
60 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 6 to 4 computations (33.3% saved)

localize7.0ms (0.4%)

Local error

Found 4 expressions with local error:

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

series67.0ms (3.5%)

Counts
2 → 20
Calls

6 calls:

TimeVariablePointExpression
23.0ms
x
@-inf
(log.f64 (/.f64 x (log.f64 x)))
18.0ms
x
@0
(log.f64 (/.f64 x (log.f64 x)))
14.0ms
x
@inf
(log.f64 (/.f64 x (log.f64 x)))
7.0ms
x
@inf
(/.f64 x (log.f64 x))
5.0ms
x
@-inf
(/.f64 x (log.f64 x))

rewrite50.0ms (2.6%)

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))))))))

simplify87.0ms (4.5%)

Algorithm
egg-herbie
Rules
840×div-sub_binary64
521×associate-/l/_binary64
449×sub-neg_binary64
402×distribute-rgt-in_binary64
345×fma-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
025224
153200
292192
3243168
4628168
51406168
63592168
74724168
85899168
96708168
107136168
117382168
127570168
137650168
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)))

eval14.0ms (0.7%)

Compiler

Compiled 702 to 290 computations (58.7% saved)

prune7.0ms (0.4%)

Pruning

1 alts after pruning (0 fresh and 1 done)

PrunedKeptTotal
New68068
Fresh000
Picked011
Done000
Total68169
Error
0b
Counts
69 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0b
(log.f64 (/.f64 x (log.f64 x)))
Compiler

Compiled 6 to 4 computations (33.3% saved)

regimes10.0ms (0.5%)

Accuracy

Total -0.2b remaining (-∞%)

Threshold costs -0.2b (-∞%)

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:

4.0ms
(log.f64 x)
3.0ms
(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
3.0ms
x
Results
ErrorSegmentsBranch
0b1x
0b1(-.f64 (log.f64 x) (log.f64 (log.f64 x)))
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
saturated
Calls
Call 1
Inputs
(log.f64 (/.f64 x (log.f64 x)))
Outputs
(log.f64 (/.f64 x (log.f64 x)))

end15.0ms (0.8%)

Stop Event
done
Compiler

Compiled 12 to 8 computations (33.3% saved)

Profiling

Loading profile data...