Details

Time bar (total: 3.4s)

analyze4.0ms (0.1%)

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

Compiled 15 to 11 computations (26.7% saved)

sample1.7s (51.5%)

Results
1.7s8256×body256valid
2.0ms15×body256invalid

preprocess153.0ms (4.5%)

Algorithm
egg-herbie
Rules
600×unsub-neg_binary64
587×distribute-rgt-out--_binary64
492×fma-neg_binary64
438×distribute-neg-in_binary64
411×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
11820
22520
33620
45320
58120
612820
734520
871320
9151820
10289820
11433820
12531220
13562320
14592720
15602820
16610620
17637420
18732020
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
Outputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
Compiler

Compiled 15 to 11 computations (26.7% saved)

simplify147.0ms (4.3%)

Algorithm
egg-herbie
Rules
600×unsub-neg_binary64
587×distribute-rgt-out--_binary64
492×fma-neg_binary64
438×distribute-neg-in_binary64
411×distribute-rgt-in_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01020
11820
22520
33620
45320
58120
612820
734520
871320
9151820
10289820
11433820
12531220
13562320
14592720
15602820
16610620
17637420
18732020
Stop Event
node limit
Counts
1 → 1
Calls
Call 1
Inputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
Outputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))

eval1.0ms (0%)

Compiler

Compiled 14 to 10 computations (28.6% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 14 to 10 computations (28.6% saved)

localize20.0ms (0.6%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (-.f64 1 (*.f64 x x)))
0.0b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
Compiler

Compiled 53 to 29 computations (45.3% saved)

series7.0ms (0.2%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
3.0ms
x
@-inf
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
2.0ms
x
@inf
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
1.0ms
x
@0
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
0.0ms
x
@inf
(sqrt.f64 (-.f64 1 (*.f64 x x)))
0.0ms
x
@-inf
(sqrt.f64 (-.f64 1 (*.f64 x x)))

rewrite72.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
519×log-prod_binary64
399×fma-def_binary64
368×pow-prod-down_binary64
282×pow2_binary64
203×fma-neg_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01029
122529
2329227
Stop Event
node limit
Counts
2 → 88
Calls
Call 1
Inputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
(sqrt.f64 (-.f64 1 (*.f64 x x)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (log.f64 x)) (log.f64 (+.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) 1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (*.f64 1/3 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (*.f64 1/3 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) (log.f64 (pow.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (-.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2)))) (log.f64 (/.f64 1 (/.f64 (-.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/3 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) (*.f64 2 (*.f64 1/3 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (/.f64 (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) x)) (log.f64 (/.f64 (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (fma.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) (pow.f64 x -3) (pow.f64 x -3))) (log.f64 (/.f64 1 (-.f64 (+.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (+.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) 1)) (neg.f64 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (-.f64 (+.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (*.f64 x x))) (fma.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) (pow.f64 x -3) (pow.f64 x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (log.f64 (/.f64 (/.f64 (-.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x) (-.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) (*.f64 2 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (-.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2)))) (log.f64 (/.f64 (-.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) (pow.f64 x -3) (pow.f64 x -3))) (log.f64 (-.f64 (+.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) (pow.f64 x -3) (pow.f64 x -3))) (log.f64 (fma.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2) (-.f64 (pow.f64 x -2) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) (log.f64 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (fma.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) (pow.f64 x -3) (pow.f64 x -3)))) (log.f64 (neg.f64 (-.f64 (+.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (neg.f64 (-.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))))) (log.f64 (neg.f64 (/.f64 (-.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 x (pow.f64 (-.f64 1 (*.f64 x x)) -1/2) x)) (log.f64 (*.f64 x (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 -1 (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))) (*.f64 (neg.f64 x) 1))) (log.f64 (*.f64 (neg.f64 x) (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 -1 x (*.f64 (neg.f64 x) (sqrt.f64 (-.f64 1 (*.f64 x x)))))) (log.f64 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 -1 x (*.f64 x (neg.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (log.f64 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 -1 (neg.f64 x) (*.f64 (neg.f64 x) (neg.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (log.f64 (pow.f64 (neg.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (+.f64 x (*.f64 (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))) 1))) (log.f64 (*.f64 (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 (neg.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x (*.f64 (neg.f64 x) 1))) (log.f64 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 -1 x (*.f64 (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))) -1))) (log.f64 (*.f64 (/.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x)))) (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (neg.f64 x) (*.f64 x -1))) (log.f64 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (fma.f64 (neg.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))) (neg.f64 x) (*.f64 (neg.f64 x) -1))) (log.f64 (pow.f64 (neg.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (-.f64 (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2)) (pow.f64 x -2))) (log.f64 (-.f64 (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x) (/.f64 1 x))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) 1)) (*.f64 2 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) x)) (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (/.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) (*.f64 (cbrt.f64 x) x))) (*.f64 2 (log.f64 (cbrt.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) (pow.f64 (cbrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) 2) (cbrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) (sqrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (log.f64 (/.f64 (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 3 (*.f64 1/3 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/3 (*.f64 3 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (-.f64 (+.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) (*.f64 x x))) (fma.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) (pow.f64 x -3) (pow.f64 x -3)))))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (log.f64 (/.f64 (/.f64 (-.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) x) (-.f64 (pow.f64 x -2) (*.f64 (-.f64 1 (*.f64 x x)) (pow.f64 x -2))))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (fma.f64 (/.f64 1 x) (+.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x)))) -1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (+.f64 (neg.f64 (log.f64 x)) (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 2)) (log.f64 (cbrt.f64 (exp.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))) (log.f64 (sqrt.f64 (exp.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (-.f64 1 (*.f64 x x))) (pow.f64 (-.f64 1 (*.f64 x x)) 1/6))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 1/6) (cbrt.f64 (-.f64 1 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 1/4) (pow.f64 (-.f64 1 (*.f64 x x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 1 (pow.f64 x 6))) (hypot.f64 1 (hypot.f64 x (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (-.f64 1 (pow.f64 x 4))) (hypot.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (-.f64 1 (*.f64 x x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 2) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3) 1/6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (-.f64 1 (*.f64 x x))) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 1/6) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (-.f64 1 (*.f64 x x)) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 1 (sqrt.f64 (*.f64 x (neg.f64 x))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (-.f64 1 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 1/2 (log1p.f64 (*.f64 x (neg.f64 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log1p.f64 (*.f64 x (neg.f64 x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 1/2 (log1p.f64 (*.f64 x (neg.f64 x)))) 1))))))

simplify73.0ms (2.2%)

Algorithm
egg-herbie
Rules
393×associate-*r/_binary64
359×fma-neg_binary64
350×associate-/l/_binary64
344×times-frac_binary64
336×associate-*l/_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
084574
1245546
2729526
32674508
Stop Event
node limit
Counts
112 → 134
Calls
Call 1
Inputs
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/4 (pow.f64 x 2)) (*.f64 -1 (log.f64 x))))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/4 (pow.f64 x 2)) (+.f64 (*.f64 -3/32 (pow.f64 x 4)) (*.f64 -1 (log.f64 x)))))
(+.f64 (*.f64 -5/96 (pow.f64 x 6)) (+.f64 (log.f64 2) (+.f64 (*.f64 -1/4 (pow.f64 x 2)) (+.f64 (*.f64 -3/32 (pow.f64 x 4)) (*.f64 -1 (log.f64 x))))))
(log.f64 (sqrt.f64 -1))
(+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (log.f64 (sqrt.f64 -1)))
(-.f64 (+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (log.f64 (sqrt.f64 -1))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(-.f64 (+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (+.f64 (*.f64 3/40 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (log.f64 (sqrt.f64 -1)))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(log.f64 (*.f64 -1 (sqrt.f64 -1)))
(-.f64 (log.f64 (*.f64 -1 (sqrt.f64 -1))) (/.f64 1 (*.f64 (sqrt.f64 -1) x)))
(-.f64 (+.f64 (log.f64 (*.f64 -1 (sqrt.f64 -1))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))))) (/.f64 1 (*.f64 (sqrt.f64 -1) x)))
(-.f64 (+.f64 (log.f64 (*.f64 -1 (sqrt.f64 -1))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))))) (+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (*.f64 3/40 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))))))
1
(+.f64 1 (*.f64 -1/2 (pow.f64 x 2)))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 -1/8 (pow.f64 x 4))))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/16 (pow.f64 x 6)) (*.f64 -1/8 (pow.f64 x 4)))))
(*.f64 (sqrt.f64 -1) x)
(+.f64 (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))) (*.f64 (sqrt.f64 -1) x))
(-.f64 (+.f64 (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))) (*.f64 (sqrt.f64 -1) x)) (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(-.f64 (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (+.f64 (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))) (*.f64 (sqrt.f64 -1) x))) (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(*.f64 -1 (*.f64 (sqrt.f64 -1) x))
(-.f64 (*.f64 -1 (*.f64 (sqrt.f64 -1) x)) (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))))
(-.f64 (+.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))) (*.f64 -1 (*.f64 (sqrt.f64 -1) x))) (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))))
(-.f64 (+.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))) (*.f64 -1 (*.f64 (sqrt.f64 -1) x))) (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x)))))
Outputs
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/4 (pow.f64 x 2)) (*.f64 -1 (log.f64 x))))
(+.f64 (log.f64 2) (fma.f64 -1/4 (*.f64 x x) (neg.f64 (log.f64 x))))
(+.f64 (log.f64 2) (-.f64 (*.f64 x (*.f64 x -1/4)) (log.f64 x)))
(fma.f64 x (*.f64 x -1/4) (-.f64 (log.f64 2) (log.f64 x)))
(-.f64 (fma.f64 x (*.f64 x -1/4) (log.f64 2)) (log.f64 x))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/4 (pow.f64 x 2)) (+.f64 (*.f64 -3/32 (pow.f64 x 4)) (*.f64 -1 (log.f64 x)))))
(+.f64 (log.f64 2) (fma.f64 -1/4 (*.f64 x x) (fma.f64 -3/32 (pow.f64 x 4) (neg.f64 (log.f64 x)))))
(+.f64 (-.f64 (log.f64 2) (log.f64 x)) (fma.f64 x (*.f64 x -1/4) (*.f64 -3/32 (pow.f64 x 4))))
(fma.f64 x (*.f64 x -1/4) (fma.f64 -3/32 (pow.f64 x 4) (-.f64 (log.f64 2) (log.f64 x))))
(+.f64 (*.f64 -5/96 (pow.f64 x 6)) (+.f64 (log.f64 2) (+.f64 (*.f64 -1/4 (pow.f64 x 2)) (+.f64 (*.f64 -3/32 (pow.f64 x 4)) (*.f64 -1 (log.f64 x))))))
(fma.f64 -5/96 (pow.f64 x 6) (+.f64 (log.f64 2) (fma.f64 -1/4 (*.f64 x x) (fma.f64 -3/32 (pow.f64 x 4) (neg.f64 (log.f64 x))))))
(+.f64 (fma.f64 -1/4 (*.f64 x x) (fma.f64 -3/32 (pow.f64 x 4) (neg.f64 (log.f64 x)))) (fma.f64 -5/96 (pow.f64 x 6) (log.f64 2)))
(-.f64 (fma.f64 x (*.f64 x -1/4) (*.f64 -3/32 (pow.f64 x 4))) (-.f64 (log.f64 x) (fma.f64 -5/96 (pow.f64 x 6) (log.f64 2))))
(fma.f64 -5/96 (pow.f64 x 6) (fma.f64 x (*.f64 x -1/4) (fma.f64 -3/32 (pow.f64 x 4) (-.f64 (log.f64 2) (log.f64 x)))))
(log.f64 (sqrt.f64 -1))
(+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (log.f64 (sqrt.f64 -1)))
(+.f64 (log.f64 (sqrt.f64 -1)) (/.f64 1 (*.f64 x (sqrt.f64 -1))))
(+.f64 (log.f64 (sqrt.f64 -1)) (/.f64 (/.f64 1 x) (sqrt.f64 -1)))
(+.f64 (log.f64 (sqrt.f64 -1)) (/.f64 (/.f64 1 (sqrt.f64 -1)) x))
(-.f64 (+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (log.f64 (sqrt.f64 -1))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(+.f64 (/.f64 1 (*.f64 x (sqrt.f64 -1))) (-.f64 (log.f64 (sqrt.f64 -1)) (/.f64 1/6 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(-.f64 (+.f64 (log.f64 (sqrt.f64 -1)) (/.f64 (/.f64 1 x) (sqrt.f64 -1))) (/.f64 (/.f64 1/6 (neg.f64 (sqrt.f64 -1))) (pow.f64 x 3)))
(+.f64 (log.f64 (sqrt.f64 -1)) (+.f64 (/.f64 (/.f64 1 (sqrt.f64 -1)) x) (/.f64 1/6 (*.f64 (sqrt.f64 -1) (pow.f64 x 3)))))
(-.f64 (log.f64 (sqrt.f64 -1)) (*.f64 (+.f64 (/.f64 1/6 (*.f64 x x)) 1) (/.f64 (/.f64 -1 x) (sqrt.f64 -1))))
(-.f64 (+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (+.f64 (*.f64 3/40 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (log.f64 (sqrt.f64 -1)))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(+.f64 (/.f64 1 (*.f64 x (sqrt.f64 -1))) (-.f64 (+.f64 (log.f64 (sqrt.f64 -1)) (/.f64 3/40 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (/.f64 1/6 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(+.f64 (/.f64 (/.f64 1 x) (sqrt.f64 -1)) (+.f64 (log.f64 (sqrt.f64 -1)) (-.f64 (/.f64 (/.f64 3/40 (pow.f64 x 5)) (pow.f64 (sqrt.f64 -1) 5)) (/.f64 (/.f64 1/6 (neg.f64 (sqrt.f64 -1))) (pow.f64 x 3)))))
(+.f64 (log.f64 (sqrt.f64 -1)) (+.f64 (-.f64 (/.f64 3/40 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))) (/.f64 -1/6 (*.f64 (sqrt.f64 -1) (pow.f64 x 3)))) (/.f64 (/.f64 1 (sqrt.f64 -1)) x)))
(+.f64 (-.f64 (log.f64 (sqrt.f64 -1)) (*.f64 (+.f64 (/.f64 1/6 (*.f64 x x)) 1) (/.f64 (/.f64 -1 x) (sqrt.f64 -1)))) (/.f64 3/40 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))))
(log.f64 (*.f64 -1 (sqrt.f64 -1)))
(log.f64 (neg.f64 (sqrt.f64 -1)))
(-.f64 (log.f64 (*.f64 -1 (sqrt.f64 -1))) (/.f64 1 (*.f64 (sqrt.f64 -1) x)))
(-.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (/.f64 1 (*.f64 x (sqrt.f64 -1))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (/.f64 -1 (*.f64 x (sqrt.f64 -1))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (/.f64 (/.f64 -1 x) (sqrt.f64 -1)))
(fma.f64 3 (log.f64 (sqrt.f64 -1)) (/.f64 (/.f64 -1 x) (sqrt.f64 -1)))
(-.f64 (+.f64 (log.f64 (*.f64 -1 (sqrt.f64 -1))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))))) (/.f64 1 (*.f64 (sqrt.f64 -1) x)))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (-.f64 (/.f64 1/6 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))) (/.f64 1 (*.f64 x (sqrt.f64 -1)))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (fma.f64 1/6 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (pow.f64 x 3)) (/.f64 -1 (*.f64 x (sqrt.f64 -1)))))
(+.f64 (/.f64 -1/6 (*.f64 (sqrt.f64 -1) (pow.f64 x 3))) (+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (/.f64 (/.f64 -1 x) (sqrt.f64 -1))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (*.f64 (+.f64 (/.f64 1/6 (*.f64 x x)) 1) (/.f64 (/.f64 -1 x) (sqrt.f64 -1))))
(-.f64 (+.f64 (log.f64 (*.f64 -1 (sqrt.f64 -1))) (*.f64 1/6 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))))) (+.f64 (/.f64 1 (*.f64 (sqrt.f64 -1) x)) (*.f64 3/40 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (-.f64 (/.f64 1/6 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))) (+.f64 (/.f64 1 (*.f64 x (sqrt.f64 -1))) (/.f64 3/40 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (-.f64 (fma.f64 1/6 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (pow.f64 x 3)) (/.f64 -1 (*.f64 x (sqrt.f64 -1)))) (/.f64 (/.f64 3/40 (pow.f64 x 5)) (pow.f64 (sqrt.f64 -1) 5))))
(+.f64 (log.f64 (neg.f64 (sqrt.f64 -1))) (+.f64 (+.f64 (/.f64 -1/6 (*.f64 (sqrt.f64 -1) (pow.f64 x 3))) (/.f64 (/.f64 -1 x) (sqrt.f64 -1))) (/.f64 -3/40 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))))
(+.f64 (*.f64 (+.f64 (/.f64 1/6 (*.f64 x x)) 1) (/.f64 (/.f64 -1 x) (sqrt.f64 -1))) (fma.f64 3 (log.f64 (sqrt.f64 -1)) (/.f64 -3/40 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))))
1
(+.f64 1 (*.f64 -1/2 (pow.f64 x 2)))
(+.f64 1 (*.f64 (*.f64 x x) -1/2))
(fma.f64 (*.f64 x x) -1/2 1)
(fma.f64 x (*.f64 x -1/2) 1)
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (*.f64 -1/8 (pow.f64 x 4))))
(+.f64 1 (fma.f64 -1/2 (*.f64 x x) (*.f64 (pow.f64 x 4) -1/8)))
(+.f64 1 (fma.f64 (*.f64 x x) -1/2 (*.f64 (pow.f64 x 4) -1/8)))
(fma.f64 x (*.f64 x -1/2) (fma.f64 (pow.f64 x 4) -1/8 1))
(+.f64 1 (+.f64 (*.f64 -1/2 (pow.f64 x 2)) (+.f64 (*.f64 -1/16 (pow.f64 x 6)) (*.f64 -1/8 (pow.f64 x 4)))))
(+.f64 1 (fma.f64 -1/2 (*.f64 x x) (fma.f64 -1/16 (pow.f64 x 6) (*.f64 (pow.f64 x 4) -1/8))))
(+.f64 1 (fma.f64 (*.f64 x x) -1/2 (fma.f64 (pow.f64 x 4) -1/8 (*.f64 (pow.f64 x 6) -1/16))))
(+.f64 1 (fma.f64 (pow.f64 x 6) -1/16 (fma.f64 x (*.f64 x -1/2) (*.f64 (pow.f64 x 4) -1/8))))
(+.f64 (fma.f64 x (*.f64 x -1/2) 1) (fma.f64 (pow.f64 x 6) -1/16 (*.f64 (pow.f64 x 4) -1/8)))
(*.f64 (sqrt.f64 -1) x)
(*.f64 x (sqrt.f64 -1))
(+.f64 (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))) (*.f64 (sqrt.f64 -1) x))
(+.f64 (*.f64 x (sqrt.f64 -1)) (/.f64 1/2 (*.f64 x (sqrt.f64 -1))))
(fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)))
(-.f64 (+.f64 (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))) (*.f64 (sqrt.f64 -1) x)) (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(+.f64 (/.f64 1/2 (*.f64 x (sqrt.f64 -1))) (-.f64 (*.f64 x (sqrt.f64 -1)) (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(+.f64 (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1))) (/.f64 -1/8 (*.f64 (neg.f64 (sqrt.f64 -1)) (pow.f64 x 3))))
(fma.f64 x (sqrt.f64 -1) (+.f64 (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)) (/.f64 1/8 (*.f64 (sqrt.f64 -1) (pow.f64 x 3)))))
(fma.f64 x (sqrt.f64 -1) (+.f64 (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)) (/.f64 (/.f64 1/8 (sqrt.f64 -1)) (pow.f64 x 3))))
(-.f64 (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (+.f64 (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))) (*.f64 (sqrt.f64 -1) x))) (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))))
(+.f64 (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))) (+.f64 (/.f64 1/2 (*.f64 x (sqrt.f64 -1))) (-.f64 (*.f64 x (sqrt.f64 -1)) (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))))))
(+.f64 (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1))) (-.f64 (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))) (/.f64 (/.f64 1/8 (neg.f64 (sqrt.f64 -1))) (pow.f64 x 3))))
(+.f64 (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)) (+.f64 (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))) (fma.f64 x (sqrt.f64 -1) (/.f64 1/8 (*.f64 (sqrt.f64 -1) (pow.f64 x 3))))))
(-.f64 (fma.f64 x (sqrt.f64 -1) (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (*.f64 (/.f64 (/.f64 -1 x) (sqrt.f64 -1)) (+.f64 (/.f64 1/8 (*.f64 x x)) 1/2)))
(*.f64 -1 (*.f64 (sqrt.f64 -1) x))
(neg.f64 (*.f64 x (sqrt.f64 -1)))
(*.f64 x (neg.f64 (sqrt.f64 -1)))
(*.f64 (sqrt.f64 -1) (neg.f64 x))
(-.f64 (*.f64 -1 (*.f64 (sqrt.f64 -1) x)) (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))))
(-.f64 (neg.f64 (*.f64 x (sqrt.f64 -1))) (/.f64 1/2 (*.f64 x (sqrt.f64 -1))))
(neg.f64 (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1))))
(fma.f64 x (neg.f64 (sqrt.f64 -1)) (/.f64 (/.f64 -1/2 x) (sqrt.f64 -1)))
(-.f64 (+.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))) (*.f64 -1 (*.f64 (sqrt.f64 -1) x))) (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x))))
(+.f64 (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))) (-.f64 (neg.f64 (*.f64 x (sqrt.f64 -1))) (/.f64 1/2 (*.f64 x (sqrt.f64 -1)))))
(fma.f64 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (pow.f64 x 3)) 1/8 (neg.f64 (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)))))
(-.f64 (/.f64 -1/8 (*.f64 (sqrt.f64 -1) (pow.f64 x 3))) (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1))))
(-.f64 (/.f64 (/.f64 -1/2 x) (sqrt.f64 -1)) (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/8 (sqrt.f64 -1)) (pow.f64 x 3))))
(-.f64 (+.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3)))) (*.f64 -1 (*.f64 (sqrt.f64 -1) x))) (+.f64 (*.f64 1/16 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))) (*.f64 1/2 (/.f64 1 (*.f64 (sqrt.f64 -1) x)))))
(+.f64 (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 3))) (-.f64 (neg.f64 (*.f64 x (sqrt.f64 -1))) (+.f64 (/.f64 1/2 (*.f64 x (sqrt.f64 -1))) (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))))))
(fma.f64 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (pow.f64 x 3)) 1/8 (-.f64 (neg.f64 (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)))) (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))))
(+.f64 (-.f64 (/.f64 -1/8 (*.f64 (sqrt.f64 -1) (pow.f64 x 3))) (fma.f64 x (sqrt.f64 -1) (/.f64 (/.f64 1/2 x) (sqrt.f64 -1)))) (/.f64 -1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5))))
(-.f64 (*.f64 (/.f64 (/.f64 -1 x) (sqrt.f64 -1)) (+.f64 (/.f64 1/8 (*.f64 x x)) 1/2)) (fma.f64 x (sqrt.f64 -1) (/.f64 1/16 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 5)))))

eval49.0ms (1.4%)

Compiler

Compiled 2665 to 1810 computations (32.1% saved)

prune18.0ms (0.5%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New1322134
Fresh000
Picked011
Done000
Total1323135
Error
0b
Counts
135 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
0.5b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
33.7b
(neg.f64 (log.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))
Compiler

Compiled 39 to 26 computations (33.3% saved)

localize11.0ms (0.3%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
Compiler

Compiled 21 to 15 computations (28.6% saved)

series79.0ms (2.3%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
50.0ms
x
@0
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
22.0ms
x
@-inf
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
7.0ms
x
@inf
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))

rewrite136.0ms (4%)

Algorithm
batch-egg-rewrite
Rules
572×pow1_binary64
539×add-log-exp_binary64
538×log1p-expm1-u_binary64
538×expm1-log1p-u_binary64
529×add-exp-log_binary64
Iterations

Useful iterations: 1 (0.0ms)

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

simplify31.0ms (0.9%)

Algorithm
egg-herbie
Rules
155×fma-neg_binary64
118×fma-def_binary64
56×cancel-sign-sub-inv_binary64
44×sub-neg_binary64
39×distribute-rgt-in_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
017124
127108
240108
360108
4109108
5204108
6336108
7510108
8658108
9779108
10799108
Stop Event
saturated
Counts
33 → 25
Calls
Call 1
Inputs
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
Outputs
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (log.f64 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 2) (log.f64 (/.f64 1 x)))
(+.f64 (log.f64 2) (neg.f64 (log.f64 x)))
(-.f64 (log.f64 2) (log.f64 x))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))
(+.f64 (log.f64 (/.f64 -1 x)) (log.f64 -2))

localize26.0ms (0.8%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(sqrt.f64 (-.f64 1 (*.f64 x x)))
31.5b
(/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))
Compiler

Compiled 68 to 30 computations (55.9% saved)

series3.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))
1.0ms
x
@inf
(/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))
1.0ms
x
@0
(/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))

rewrite186.0ms (5.5%)

Algorithm
batch-egg-rewrite
Rules
917×pow1_binary64
858×add-log-exp_binary64
857×log1p-expm1-u_binary64
857×expm1-log1p-u_binary64
837×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
117419
2234219
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 1 (/.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 x (/.f64 1 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) (/.f64 1 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) (pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) 2) (cbrt.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 x 4)) (*.f64 (pow.f64 (cbrt.f64 x) 2) (/.f64 1 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) (/.f64 x (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (neg.f64 x)) (/.f64 1 (neg.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x 1) (/.f64 x (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) 1) (/.f64 (pow.f64 (cbrt.f64 x) 2) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x (pow.f64 (cbrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 2)) (/.f64 x (cbrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 2)) (/.f64 (*.f64 x x) (cbrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) (pow.f64 (cbrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 2)) (cbrt.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) (/.f64 (*.f64 x x) (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (cbrt.f64 (pow.f64 x 4)) (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 x (sqrt.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) (*.f64 x x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 x x) (neg.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 (pow.f64 x 4) (pow.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 x 6) (pow.f64 (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))))))

simplify74.0ms (2.2%)

Algorithm
egg-herbie
Rules
825×distribute-neg-frac_binary64
698×associate-/r*_binary64
507×associate-*l*_binary64
441×associate-*r*_binary64
364×fma-def_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
053296
1151236
2417232
31405232
46571232
Stop Event
node limit
Counts
45 → 54
Calls
Call 1
Inputs
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 3)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 3)) (*.f64 1/16 (pow.f64 x 5))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 3)) (+.f64 (*.f64 5/128 (pow.f64 x 7)) (*.f64 1/16 (pow.f64 x 5)))))
(/.f64 1 (sqrt.f64 -1))
(-.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)))
(-.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2))))) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)))
(-.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2))))) (+.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4)))) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))))
(/.f64 -1 (sqrt.f64 -1))
(neg.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))))
(neg.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2)))))))
(-.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4)))) (+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2)))))))
Outputs
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 3)))
(fma.f64 1/2 x (*.f64 1/8 (pow.f64 x 3)))
(fma.f64 1/8 (pow.f64 x 3) (*.f64 1/2 x))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 3)) (*.f64 1/16 (pow.f64 x 5))))
(fma.f64 1/2 x (fma.f64 1/8 (pow.f64 x 3) (*.f64 1/16 (pow.f64 x 5))))
(fma.f64 x (fma.f64 x (*.f64 x 1/8) 1/2) (*.f64 1/16 (pow.f64 x 5)))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 3)) (+.f64 (*.f64 5/128 (pow.f64 x 7)) (*.f64 1/16 (pow.f64 x 5)))))
(fma.f64 1/2 x (fma.f64 1/8 (pow.f64 x 3) (fma.f64 5/128 (pow.f64 x 7) (*.f64 1/16 (pow.f64 x 5)))))
(fma.f64 1/2 x (fma.f64 1/8 (pow.f64 x 3) (fma.f64 1/16 (pow.f64 x 5) (*.f64 5/128 (pow.f64 x 7)))))
(fma.f64 1/16 (pow.f64 x 5) (fma.f64 1/2 x (fma.f64 5/128 (pow.f64 x 7) (*.f64 1/8 (pow.f64 x 3)))))
(/.f64 1 (sqrt.f64 -1))
(-.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)))
(-.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 (*.f64 x (pow.f64 (sqrt.f64 -1) 2))))
(+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 x))
(-.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2))))) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)))
(-.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1/2 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (*.f64 x x)))) (/.f64 1 (*.f64 x (pow.f64 (sqrt.f64 -1) 2))))
(+.f64 (/.f64 1 (sqrt.f64 -1)) (fma.f64 1/2 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (*.f64 x x)) (/.f64 1 x)))
(+.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 x)) (/.f64 (/.f64 -1/2 (sqrt.f64 -1)) (*.f64 x x)))
(+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 (/.f64 -1/2 (sqrt.f64 -1)) (*.f64 x x)) (/.f64 1 x)))
(-.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2))))) (+.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4)))) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))))
(-.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1/2 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (*.f64 x x)))) (+.f64 (/.f64 1 (*.f64 x (pow.f64 (sqrt.f64 -1) 2))) (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4)))))
(-.f64 (fma.f64 1/2 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (*.f64 x x)) (/.f64 1 (sqrt.f64 -1))) (+.f64 (/.f64 -1 x) (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4)))))
(+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 (/.f64 -1/2 (sqrt.f64 -1)) (*.f64 x x)) (-.f64 (/.f64 1 x) (/.f64 (/.f64 1/8 (pow.f64 x 4)) (pow.f64 (sqrt.f64 -1) 5)))))
(+.f64 (/.f64 1 x) (+.f64 (-.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1/2 (*.f64 (sqrt.f64 -1) (*.f64 x x)))) (/.f64 (/.f64 -1/8 (pow.f64 (sqrt.f64 -1) 5)) (pow.f64 x 4))))
(+.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 x)) (-.f64 (/.f64 (/.f64 -1/8 (pow.f64 (sqrt.f64 -1) 5)) (pow.f64 x 4)) (/.f64 1/2 (*.f64 (sqrt.f64 -1) (*.f64 x x)))))
(/.f64 -1 (sqrt.f64 -1))
(neg.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x))))
(neg.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 1 (*.f64 x (pow.f64 (sqrt.f64 -1) 2)))))
(-.f64 (/.f64 1 x) (/.f64 1 (sqrt.f64 -1)))
(+.f64 (/.f64 1 x) (/.f64 -1 (sqrt.f64 -1)))
(neg.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2)))))))
(neg.f64 (+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 1 (*.f64 x (pow.f64 (sqrt.f64 -1) 2))) (/.f64 1/2 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (*.f64 x x))))))
(-.f64 (/.f64 -1 (sqrt.f64 -1)) (fma.f64 1/2 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (*.f64 x x)) (/.f64 -1 x)))
(+.f64 (/.f64 1 x) (-.f64 (/.f64 -1 (sqrt.f64 -1)) (/.f64 (/.f64 -1/2 (sqrt.f64 -1)) (*.f64 x x))))
(+.f64 (/.f64 -1 (sqrt.f64 -1)) (+.f64 (/.f64 1 x) (/.f64 1/2 (*.f64 (sqrt.f64 -1) (*.f64 x x)))))
(-.f64 (*.f64 1/8 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4)))) (+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 2) x)) (*.f64 1/2 (/.f64 1 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (pow.f64 x 2)))))))
(-.f64 (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4))) (+.f64 (/.f64 1 (sqrt.f64 -1)) (+.f64 (/.f64 1 (*.f64 x (pow.f64 (sqrt.f64 -1) 2))) (/.f64 1/2 (*.f64 (pow.f64 (sqrt.f64 -1) 3) (*.f64 x x))))))
(-.f64 (/.f64 1/8 (*.f64 (pow.f64 (sqrt.f64 -1) 5) (pow.f64 x 4))) (+.f64 (/.f64 -1 x) (fma.f64 1/2 (/.f64 (/.f64 -1 (sqrt.f64 -1)) (*.f64 x x)) (/.f64 1 (sqrt.f64 -1)))))
(+.f64 (/.f64 (/.f64 1/8 (pow.f64 x 4)) (pow.f64 (sqrt.f64 -1) 5)) (+.f64 (/.f64 1 x) (-.f64 (/.f64 -1 (sqrt.f64 -1)) (/.f64 (/.f64 -1/2 (sqrt.f64 -1)) (*.f64 x x)))))
(+.f64 (/.f64 1 x) (-.f64 (/.f64 1/2 (*.f64 (sqrt.f64 -1) (*.f64 x x))) (+.f64 (/.f64 1 (sqrt.f64 -1)) (/.f64 (/.f64 -1/8 (pow.f64 (sqrt.f64 -1) 5)) (pow.f64 x 4)))))
(+.f64 (/.f64 -1 (sqrt.f64 -1)) (-.f64 (/.f64 1 x) (-.f64 (/.f64 (/.f64 -1/8 (pow.f64 (sqrt.f64 -1) 5)) (pow.f64 x 4)) (/.f64 1/2 (*.f64 (sqrt.f64 -1) (*.f64 x x))))))

eval43.0ms (1.3%)

Compiler

Compiled 2436 to 1637 computations (32.8% saved)

prune49.0ms (1.4%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New1302132
Fresh000
Picked101
Done112
Total1323135
Error
0b
Counts
135 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
0.4b
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 3)))))
0.5b
(neg.f64 (log.f64 (*.f64 1/2 x)))
Compiler

Compiled 32 to 25 computations (21.9% saved)

localize10.0ms (0.3%)

Compiler

Compiled 15 to 11 computations (26.7% saved)

localize23.0ms (0.7%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(pow.f64 x 3)
Compiler

Compiled 46 to 36 computations (21.7% saved)

series2.0ms (0.1%)

Counts
1 → 0
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(pow.f64 x 3)
1.0ms
x
@0
(pow.f64 x 3)
0.0ms
x
@inf
(pow.f64 x 3)

rewrite46.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
335×pow1_binary64
330×add-sqr-sqrt_binary64
318×*-un-lft-identity_binary64
317×add-log-exp_binary64
317×log1p-expm1-u_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044
1884
28954
Stop Event
node limit
Counts
1 → 51
Calls
Call 1
Inputs
(pow.f64 x 3)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (pow.f64 x 3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 3)) 2))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 x 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (*.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (pow.f64 (*.f64 (cbrt.f64 x) x) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x x) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (cbrt.f64 (pow.f64 x 8)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (*.f64 (cbrt.f64 x) (cbrt.f64 (pow.f64 x 7))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 x) (*.f64 (pow.f64 x 1/6) (pow.f64 x 5/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (cbrt.f64 (pow.f64 x 7)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 (pow.f64 x 7)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (*.f64 (cbrt.f64 x) x) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (pow.f64 x 5/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (sqrt.f64 (pow.f64 x 5)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 x) (*.f64 (pow.f64 x 5/2) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3/2) (pow.f64 x 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 x) x) (pow.f64 (cbrt.f64 x) 5))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (cbrt.f64 x) x)) (*.f64 (pow.f64 (cbrt.f64 (cbrt.f64 x)) 2) (cbrt.f64 (pow.f64 x 7))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 1/4) (*.f64 (pow.f64 x 1/4) (pow.f64 x 5/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3/4) (sqrt.f64 (pow.f64 x 9/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3/4) (pow.f64 (pow.f64 x 3/2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 3/4) (*.f64 (pow.f64 x 3/4) (pow.f64 x 3/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 x 7)) (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 5/2) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 x 8)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 x) 5) (*.f64 (cbrt.f64 x) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 x 5)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 x 9/2)) (pow.f64 x 3/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 x 3/2) 3/2) (pow.f64 x 3/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 (cbrt.f64 x) x) 3/2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 x) 5) 3/2) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 x 7) 1/3) (pow.f64 (cbrt.f64 x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 x 8) 1/3) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 x 15/2) 1/3) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (pow.f64 x 3)) 3) 1) (+.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (+.f64 1 (pow.f64 x 3))) (+.f64 1 (*.f64 (+.f64 1 (pow.f64 x 3)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (+.f64 1 (pow.f64 x 3))) 1) (+.f64 (+.f64 1 (pow.f64 x 3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 x 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 3 (log.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 x) 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 x 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 x 3/2)) 2))))))

simplify7.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
000
Stop Event
saturated
Counts
51 → 51
Calls
Call 1
Inputs
Outputs

eval20.0ms (0.6%)

Compiler

Compiled 844 to 657 computations (22.2% saved)

prune7.0ms (0.2%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New50151
Fresh000
Picked101
Done022
Total51354
Error
0b
Counts
54 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
0.4b
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
0.5b
(neg.f64 (log.f64 (*.f64 1/2 x)))
Compiler

Compiled 34 to 25 computations (26.5% saved)

localize26.0ms (0.8%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.1b
(*.f64 (*.f64 x x) x)
Compiler

Compiled 58 to 27 computations (53.4% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(*.f64 (*.f64 x x) x)
0.0ms
x
@-inf
(*.f64 (*.f64 x x) x)
0.0ms
x
@0
(*.f64 (*.f64 x x) x)

rewrite51.0ms (1.5%)

Algorithm
batch-egg-rewrite
Rules
339×associate-*l*_binary64
313×pow1_binary64
302×add-sqr-sqrt_binary64
293×*-un-lft-identity_binary64
293×add-log-exp_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
044
1774
28844
Stop Event
node limit
Counts
1 → 28
Calls
Call 1
Inputs
(*.f64 (*.f64 x x) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 1 (pow.f64 x 3)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (pow.f64 x 3)) 2))) (log.f64 (cbrt.f64 (exp.f64 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (pow.f64 x 3)))) (log.f64 (sqrt.f64 (exp.f64 (pow.f64 x 3)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (pow.f64 x 3)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (+.f64 1 (pow.f64 x 3)) 3) 1) (+.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (+.f64 1 (pow.f64 x 3))) (+.f64 1 (*.f64 (+.f64 1 (pow.f64 x 3)) 1))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (+.f64 1 (pow.f64 x 3)) (+.f64 1 (pow.f64 x 3))) 1) (+.f64 (+.f64 1 (pow.f64 x 3)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 x 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x x) 3/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 6) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 9) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 x) 9)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 x) 6)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 x 3/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 3) (log.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (E.f64) (*.f64 (log.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (*.f64 (log.f64 x) 3)) 2)) (cbrt.f64 (*.f64 (log.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (*.f64 (log.f64 x) 3))) (sqrt.f64 (*.f64 (log.f64 x) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 x 6))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (pow.f64 x 3))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 x 9))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 x 9)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (pow.f64 x 3/2)) 2))))))

simplify168.0ms (4.9%)

Algorithm
egg-herbie
Rules
1274×sqr-pow_binary64
676×cube-prod_binary64
666×pow-sqr_binary64
558×fabs-mul_binary64
374×unpow3_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0448
11248
21748
32648
44748
513448
650648
7116448
8125148
9138448
10154248
11177648
12209848
13252048
14302148
15362148
16434148
17466448
18494848
19517048
20535048
21543248
22637248
23734648
24781248
Stop Event
node limit
Counts
40 → 28
Calls
Call 1
Inputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
Outputs
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)
(pow.f64 x 3)

eval10.0ms (0.3%)

Compiler

Compiled 443 to 371 computations (16.3% saved)

prune6.0ms (0.2%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New28028
Fresh000
Picked011
Done022
Total28331
Error
0b
Counts
31 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
0.4b
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
0.5b
(neg.f64 (log.f64 (*.f64 1/2 x)))
Compiler

Compiled 34 to 25 computations (26.5% saved)

regimes17.0ms (0.5%)

Counts
6 → 1
Calls
Call 1
Inputs
(neg.f64 (log.f64 (*.f64 1/2 x)))
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 3)))))
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
(neg.f64 (log.f64 (/.f64 (*.f64 x x) (fma.f64 x (sqrt.f64 (-.f64 1 (*.f64 x x))) x))))
Outputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
Calls

3 calls:

5.0ms
x
5.0ms
(+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x))
5.0ms
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
0.0b1(+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x))
Compiler

Compiled 95 to 64 computations (32.6% saved)

regimes4.0ms (0.1%)

Counts
4 → 1
Calls
Call 1
Inputs
(neg.f64 (log.f64 (*.f64 1/2 x)))
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 3)))))
Outputs
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.4b1x
Compiler

Compiled 40 to 30 computations (25% saved)

regimes4.0ms (0.1%)

Accuracy

Total -0.0b remaining (-0.7%)

Threshold costs -0.0b (-0.7%)

Counts
2 → 1
Calls
Call 1
Inputs
(neg.f64 (log.f64 (*.f64 1/2 x)))
(log.f64 (+.f64 (/.f64 1 x) (/.f64 1 x)))
Outputs
(neg.f64 (log.f64 (*.f64 1/2 x)))
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.5b1x
Compiler

Compiled 16 to 12 computations (25% saved)

simplify5.0ms (0.1%)

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
02048
13748
24748
35348
45548
Stop Event
done
saturated
Calls
Call 1
Inputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
(neg.f64 (log.f64 (*.f64 1/2 x)))
Outputs
(log.f64 (+.f64 (/.f64 1 x) (/.f64 (sqrt.f64 (-.f64 1 (*.f64 x x))) x)))
(neg.f64 (log.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (*.f64 (*.f64 x x) x)))))
(neg.f64 (log.f64 (+.f64 (*.f64 x 1/2) (*.f64 1/8 (*.f64 x (*.f64 x x))))))
(neg.f64 (log.f64 (*.f64 1/2 x)))
(neg.f64 (log.f64 (*.f64 x 1/2)))
Compiler

Compiled 34 to 25 computations (26.5% saved)

soundness0.0ms (0%)

end54.0ms (1.6%)

Compiler

Compiled 32 to 22 computations (31.3% saved)

Profiling

Loading profile data...