Details

Time bar (total: 10.7s)

analyze243.0ms (2.3%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
25%25%74.9%0.1%0%0%0%5
31.3%31.2%68.7%0.1%0%0%0%6
45.9%43.7%51.5%0.1%4.7%0%0%7
50.8%48.4%46.8%0.1%4.7%0%0%8
59.7%55.4%37.5%0.1%7%0%0%9
62.6%58.1%34.7%0.1%7%0%0%10
67.4%61.9%29.9%0.1%8.2%0%0%11
69%63.3%28.4%0.1%8.2%0%0%12
Compiler

Compiled 12 to 9 computations (25% saved)

sample6.1s (57.3%)

Results
3.8s2651×body8192exit
2.0s7782×body256valid
116.0ms229×body1024valid
81.0ms245×body512valid
68.0ms145×body256infinite
Bogosity

preprocess3.0ms (0%)

Algorithm
egg-herbie
Rules
rational.json-simplify-17
rational.json-simplify-1
rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01654
12254
022
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
Outputs
0
1
Call 2
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 y x))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 y x))
(-.f64 (log.f64 (+.f64 1 (exp.f64 y))) (*.f64 x y))
Compiler

Compiled 13 to 10 computations (23.1% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Rules
rational.json-simplify-17
rational.json-simplify-2
rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01127
11527
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))

eval0.0ms (0%)

Compiler

Compiled 11 to 8 computations (27.3% 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 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Compiler

Compiled 11 to 8 computations (27.3% saved)

localize12.0ms (0.1%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
0.0b
(+.f64 1 (exp.f64 x))
0.3b
(log.f64 (+.f64 1 (exp.f64 x)))
Compiler

Compiled 28 to 14 computations (50% saved)

series46.0ms (0.4%)

Counts
3 → 32
Calls

12 calls:

TimeVariablePointExpression
23.0ms
x
@inf
(log.f64 (+.f64 1 (exp.f64 x)))
19.0ms
x
@-inf
(log.f64 (+.f64 1 (exp.f64 x)))
3.0ms
y
@0
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
0.0ms
x
@0
(log.f64 (+.f64 1 (exp.f64 x)))
0.0ms
x
@inf
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))

rewrite92.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1538×bool.json-1
1538×bool.json-2
1490×rational.json-1
1490×rational.json-2
1490×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01153
111553
231953
364053
4127353
5280553
6589553
Stop Event
node limit
Counts
3 → 72
Calls
Call 1
Inputs
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 1 (exp.f64 x))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (log.f64 (-.f64 (exp.f64 x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x and (log.f64 (-.f64 (exp.f64 x) -1)) (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f64 (-.f64 (exp.f64 x) -1)) (log.f64 (-.f64 (exp.f64 x) -1)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 (exp.f64 x) -1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (exp.f64 x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (exp.f64 x) -1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 2 (*.f64 (exp.f64 x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (exp.f64 x) -1) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (exp.f64 x) -1) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (exp.f64 x) -1) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (exp.f64 x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (exp.f64 x) -1) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (exp.f64 x) -1) (-.f64 (exp.f64 x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (exp.f64 x) -1) (-.f64 (exp.f64 x) -1))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (log.f64 (-.f64 (exp.f64 x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 x (*.f64 y 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) (*.f64 y (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -1) 4)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))))))

simplify716.0ms (6.7%)

Algorithm
egg-herbie
Rules
2422×rational.json-simplify-2
1548×rational.json-simplify-35
1110×rational.json-simplify-1
1000×rational.json-simplify-52
934×rational.json-simplify-26
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01642440
13222248
28052248
319462248
432462248
538002248
642082248
753872248
865202248
970922248
Stop Event
node limit
Counts
104 → 119
Calls
Call 1
Inputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
2
(+.f64 2 x)
(+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)))
(log.f64 2)
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (log.f64 2)))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(+.f64 0 (log.f64 (-.f64 (exp.f64 x) -1)))
(+.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(*.f64 1 (log.f64 (-.f64 (exp.f64 x) -1)))
(*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 1/2)
(*.f64 4 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 1/4)
(*.f64 1/2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2))
(*.f64 1/4 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) 2)
(*.f64 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 2)
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8))) 32)
(-.f64 (exp.f64 x) -1)
(-.f64 (-.f64 (exp.f64 x) -1) 0)
(*.f64 1 (-.f64 (exp.f64 x) -1))
(*.f64 (-.f64 (exp.f64 x) -1) 1)
(*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 1/2))
(*.f64 4 (/.f64 (-.f64 (exp.f64 x) -1) 4))
(*.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 1/2)
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 1/4)
(*.f64 1/2 (+.f64 2 (*.f64 (exp.f64 x) 2)))
(*.f64 1/4 (*.f64 (-.f64 (exp.f64 x) -1) 4))
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 1/2) 2)
(*.f64 (/.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(/.f64 (-.f64 (exp.f64 x) -1) 1)
(/.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 2)
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 8) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) 16)
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8))) 32)
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (neg.f64 (*.f64 x y)))
(+.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 0)
(+.f64 0 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(+.f64 -1 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 (-.f64 (exp.f64 x) -1)))
(+.f64 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))) -1)
(+.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(*.f64 1 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(*.f64 2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 x (*.f64 y 1/2))))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 1/2)
(*.f64 4 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 1/4)
(*.f64 1/2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2))
(*.f64 1/2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) (*.f64 y (+.f64 x x))))
(*.f64 1/4 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) 2)
(*.f64 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 2)
(/.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -4)
(/.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) 2)
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8))) 32)
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))))) 4)
(/.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -1) 4)
(neg.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
Outputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (+.f64 (log.f64 2) (*.f64 1/2 x)) (*.f64 1/8 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 1/8 (pow.f64 x 2))))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (log.f64 2) (*.f64 -1/192 (pow.f64 x 4)))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (*.f64 1/8 (pow.f64 x 2)))))
(+.f64 (log.f64 2) (+.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 2))) (*.f64 -1/192 (pow.f64 x 4))))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (+.f64 (*.f64 1/2 x) (*.f64 1/8 (pow.f64 x 2)))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 -1/192 (pow.f64 x 4)))))
2
(+.f64 2 x)
(+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x))
(+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 2 x))
(+.f64 2 (+.f64 x (*.f64 1/2 (pow.f64 x 2))))
(+.f64 (+.f64 2 x) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/6 (pow.f64 x 3)) (+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) x)))
(+.f64 2 (+.f64 (+.f64 x (*.f64 1/2 (pow.f64 x 2))) (*.f64 1/6 (pow.f64 x 3))))
(+.f64 (+.f64 2 (+.f64 x (*.f64 1/2 (pow.f64 x 2)))) (*.f64 1/6 (pow.f64 x 3)))
(+.f64 2 (+.f64 (*.f64 1/2 (pow.f64 x 2)) (+.f64 x (*.f64 1/6 (pow.f64 x 3)))))
(log.f64 2)
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (log.f64 2)))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y))))
(+.f64 (log.f64 2) (+.f64 (*.f64 x (-.f64 1/2 y)) (*.f64 1/8 (pow.f64 x 2))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 x (-.f64 1/2 y))))
(+.f64 (*.f64 (-.f64 1/2 y) x) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (log.f64 2))))
(+.f64 (*.f64 1/8 (pow.f64 x 2)) (+.f64 (+.f64 (log.f64 2) (*.f64 -1/192 (pow.f64 x 4))) (*.f64 x (-.f64 1/2 y))))
(+.f64 (*.f64 -1/192 (pow.f64 x 4)) (+.f64 (log.f64 2) (+.f64 (*.f64 x (-.f64 1/2 y)) (*.f64 1/8 (pow.f64 x 2)))))
(+.f64 (log.f64 2) (+.f64 (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 x (-.f64 1/2 y))) (*.f64 -1/192 (pow.f64 x 4))))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/192 (pow.f64 x 4)) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 x (-.f64 1/2 y)))))
(+.f64 (*.f64 -1/192 (pow.f64 x 4)) (+.f64 (log.f64 2) (+.f64 (*.f64 1/8 (pow.f64 x 2)) (*.f64 x (-.f64 1/2 y)))))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 x y))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 0 (log.f64 (-.f64 (exp.f64 x) -1)))
(log.f64 (+.f64 1 (exp.f64 x)))
(+.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(log.f64 (+.f64 1 (exp.f64 x)))
(-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 0)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 1 (log.f64 (-.f64 (exp.f64 x) -1)))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 1/2)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 4 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 1/4)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 1/2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 1/4 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4))
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) 2)
(log.f64 (+.f64 1 (exp.f64 x)))
(*.f64 (/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) 2)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 4) 4)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8) 8)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) 16)
(log.f64 (+.f64 1 (exp.f64 x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8)) (*.f64 2 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 8))) 32)
(log.f64 (+.f64 1 (exp.f64 x)))
(-.f64 (exp.f64 x) -1)
(+.f64 1 (exp.f64 x))
(-.f64 (-.f64 (exp.f64 x) -1) 0)
(+.f64 1 (exp.f64 x))
(*.f64 1 (-.f64 (exp.f64 x) -1))
(+.f64 1 (exp.f64 x))
(*.f64 (-.f64 (exp.f64 x) -1) 1)
(+.f64 1 (exp.f64 x))
(*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 1/2))
(+.f64 1 (exp.f64 x))
(*.f64 4 (/.f64 (-.f64 (exp.f64 x) -1) 4))
(+.f64 1 (exp.f64 x))
(*.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 1/2)
(*.f64 1/2 (+.f64 2 (*.f64 2 (exp.f64 x))))
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 1/4)
(+.f64 1 (exp.f64 x))
(*.f64 1/2 (+.f64 2 (*.f64 (exp.f64 x) 2)))
(*.f64 1/2 (+.f64 2 (*.f64 2 (exp.f64 x))))
(*.f64 1/4 (*.f64 (-.f64 (exp.f64 x) -1) 4))
(+.f64 1 (exp.f64 x))
(*.f64 (*.f64 (-.f64 (exp.f64 x) -1) 1/2) 2)
(+.f64 1 (exp.f64 x))
(*.f64 (/.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(+.f64 1 (exp.f64 x))
(/.f64 (-.f64 (exp.f64 x) -1) 1)
(+.f64 1 (exp.f64 x))
(/.f64 (+.f64 2 (*.f64 (exp.f64 x) 2)) 2)
(/.f64 (+.f64 2 (*.f64 2 (exp.f64 x))) 2)
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 4) 4)
(+.f64 1 (exp.f64 x))
(/.f64 (*.f64 (-.f64 (exp.f64 x) -1) 8) 8)
(+.f64 1 (exp.f64 x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) 16)
(+.f64 1 (exp.f64 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8)) (*.f64 2 (*.f64 (-.f64 (exp.f64 x) -1) 8))) 32)
(+.f64 1 (exp.f64 x))
(+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (neg.f64 (*.f64 x y)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 0)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 0 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 -1 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 (-.f64 (exp.f64 x) -1)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (+.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (-.f64 1 (*.f64 x y))) -1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(+.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 1 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 1/2) (*.f64 x (*.f64 y 1/2))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 1/2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 4 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 1/4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 1/2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 1/2 (-.f64 (*.f64 (log.f64 (-.f64 (exp.f64 x) -1)) 2) (*.f64 y (+.f64 x x))))
(*.f64 1/2 (-.f64 (*.f64 2 (log.f64 (+.f64 1 (exp.f64 x)))) (*.f64 y (+.f64 x x))))
(*.f64 1/2 (-.f64 (*.f64 2 (log.f64 (+.f64 1 (exp.f64 x)))) (*.f64 x (+.f64 y y))))
(*.f64 1/4 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1/2) 2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(*.f64 (/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 2) 2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) -1)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8) 8)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))) -2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) 16)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) 2)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (+.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8)) (*.f64 2 (*.f64 (-.f64 (log.f64 (-.f64 (exp.f64 x) -1)) (*.f64 x y)) 8))) 32)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (+.f64 (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))) (neg.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1)))))) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(/.f64 (/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))) 4) -1) 4)
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(neg.f64 (-.f64 (*.f64 x y) (log.f64 (-.f64 (exp.f64 x) -1))))
(+.f64 (log.f64 (+.f64 1 (exp.f64 x))) (neg.f64 (*.f64 x y)))
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))

eval86.0ms (0.8%)

Compiler

Compiled 1636 to 1049 computations (35.9% saved)

prune17.0ms (0.2%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New1154119
Fresh000
Picked011
Done000
Total1155120
Error
0.2b
Counts
120 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
5.5b
(-.f64 (log.f64 2) (*.f64 x y))
10.4b
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
35.7b
(*.f64 y (neg.f64 x))
27.4b
(log.f64 (+.f64 1 (exp.f64 x)))
Compiler

Compiled 42 to 32 computations (23.8% saved)

localize7.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 15 to 9 computations (40% saved)

localize4.0ms (0%)

Compiler

Compiled 10 to 4 computations (60% saved)

localize79.0ms (0.7%)

Local error

Found 2 expressions with local error:

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

Compiled 24 to 17 computations (29.2% saved)

series5.0ms (0.1%)

Counts
2 → 27
Calls

12 calls:

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

rewrite83.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
1474×rational.json-simplify-35
1338×bool.json-1
1338×bool.json-2
1294×rational.json-1
1294×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01136
110636
226436
352436
4107936
5238536
6501436
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1/2 y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/2 y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1/2 y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 1/2 y) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (*.f64 (-.f64 1/2 y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x and (*.f64 (-.f64 1/2 y) x) (*.f64 (-.f64 1/2 y) x))))) (#(struct:change #<rule egg-rr> (2) ((x or (*.f64 (-.f64 1/2 y) x) (*.f64 (-.f64 1/2 y) x))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) (*.f64 2 (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 1/2 (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))))))

simplify613.0ms (5.7%)

Algorithm
egg-herbie
Rules
3894×rational.json-simplify-41
3126×rational.json-simplify-35
1396×rational.json-simplify-2
584×rational.json-simplify-1
482×rational.json-simplify-51
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0831296
11711252
23901144
310941144
421621144
527511144
630481144
732301144
833621144
934881144
1036051144
1137211144
1239561144
1339741144
1440061144
1540231144
1640411144
1740551144
1841761144
1942931144
2073711144
2175321144
2277091144
2378531144
2479991144
Stop Event
node limit
Counts
60 → 52
Calls
Call 1
Inputs
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(log.f64 2)
(*.f64 (-.f64 1/2 y) x)
(*.f64 (-.f64 1/2 y) x)
(+.f64 (*.f64 (-.f64 1/2 y) x) 0)
(+.f64 0 (*.f64 (-.f64 1/2 y) x))
(+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)))
(-.f64 (*.f64 (-.f64 1/2 y) x) 0)
(/.f64 (*.f64 (-.f64 1/2 y) x) 1)
(/.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 1/2 y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 1/2 y) x) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)))) 64)
(-.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 0)
(*.f64 1/2 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(*.f64 1/2 (+.f64 (*.f64 2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (+.f64 x x))))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) (*.f64 2 (log.f64 2))))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x))))
(*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 1/2 (log.f64 2))))
(*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(*.f64 1 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(*.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 1/4)
(*.f64 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(/.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)))) 64)
Outputs
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 1/2 x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 1/2 x) (*.f64 y (neg.f64 x)))
(*.f64 x (+.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 x y))
(*.f64 x (neg.f64 y))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1 (*.f64 x y)) (log.f64 2)))
(+.f64 (*.f64 y (neg.f64 x)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 x (+.f64 1/2 (neg.f64 y))) (log.f64 2))
(log.f64 2)
(*.f64 (-.f64 1/2 y) x)
(*.f64 x (-.f64 1/2 y))
(*.f64 (-.f64 1/2 y) x)
(*.f64 x (-.f64 1/2 y))
(+.f64 (*.f64 (-.f64 1/2 y) x) 0)
(*.f64 x (-.f64 1/2 y))
(+.f64 0 (*.f64 (-.f64 1/2 y) x))
(*.f64 x (-.f64 1/2 y))
(+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)))
(*.f64 x (-.f64 1/2 y))
(-.f64 (*.f64 (-.f64 1/2 y) x) 0)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (-.f64 1/2 y) x) 1)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) 2)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (-.f64 1/2 y) (*.f64 x 4)) 4)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 (*.f64 (-.f64 1/2 y) x) 8) 8)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)) 16)
(*.f64 x (-.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) 32)
(*.f64 x (-.f64 1/2 y))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8))) (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1/2 y) x) 8)))) 64)
(*.f64 x (-.f64 1/2 y))
(-.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 0)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/2 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/2 (+.f64 (*.f64 2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (+.f64 x x))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) (+.f64 x x)) (*.f64 2 (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 (-.f64 1/2 y) (*.f64 1/2 x))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) (*.f64 1/2 x)) (*.f64 1/2 (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 1/2)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 1/4)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4))
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 2 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2))) 2)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 4) 4)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8) 8)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)) 16)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) 32)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)) 8)))) 64)
(+.f64 (log.f64 2) (*.f64 x (-.f64 1/2 y)))

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(-.f64 (log.f64 2) (*.f64 x y))
Compiler

Compiled 16 to 9 computations (43.8% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite105.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
1928×bool.json-1
1928×bool.json-2
1382×rational.json-simplify-35
1138×rational.json-1
1138×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
18717
222917
346617
495617
5211717
6445017
7750117
Stop Event
node limit
Counts
1 → 41
Calls
Call 1
Inputs
(-.f64 (log.f64 2) (*.f64 x y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 2) (neg.f64 (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 (log.f64 2) (*.f64 x y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (-.f64 (log.f64 2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (neg.f64 (*.f64 x y)) (log.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 x y)) (+.f64 (log.f64 2) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (log.f64 2) 1) (-.f64 (neg.f64 (*.f64 x y)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2) -2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (-.f64 (log.f64 2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (/.f64 (*.f64 x y) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -1 (-.f64 (*.f64 x y) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (-.f64 (*.f64 (log.f64 2) 4) (*.f64 x (*.f64 y 4))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 2))) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4))) 8)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (-.f64 (*.f64 x y) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x not (not (-.f64 (log.f64 2) (*.f64 x y))))))) (#(struct:change #<rule egg-rr> (2) ((x and (-.f64 (log.f64 2) (*.f64 x y)) (-.f64 (log.f64 2) (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x or (-.f64 (log.f64 2) (*.f64 x y)) (-.f64 (log.f64 2) (*.f64 x y)))))))

simplify453.0ms (4.2%)

Algorithm
egg-herbie
Rules
2872×rational.json-simplify-35
2076×rational.json-simplify-2
1222×rational.json-simplify-1
944×rational.json-simplify-51
942×rational.json-simplify-52
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0971325
12091325
25131325
312721097
422511097
534761097
644961097
750641097
860331097
962261097
1064031097
1165741097
1272401097
1372451097
1473291097
1573291097
1674981097
1776671097
1878361097
Stop Event
node limit
Counts
65 → 51
Calls
Call 1
Inputs
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 x y)))
(+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 0)
(+.f64 0 (-.f64 (log.f64 2) (*.f64 x y)))
(+.f64 1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) -1))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 2))
(+.f64 -1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1) -1)
(+.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x y)))
(+.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 (log.f64 2) -1))
(+.f64 -2 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2))
(+.f64 (+.f64 (log.f64 2) 1) (-.f64 (neg.f64 (*.f64 x y)) 1))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2) -2)
(*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(*.f64 1 (-.f64 (log.f64 2) (*.f64 x y)))
(*.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 1/2)
(*.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(*.f64 4 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(*.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (/.f64 (*.f64 x y) 4)))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 1/4)
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 2)))
(*.f64 1/2 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) 2)
(*.f64 1/4 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(*.f64 1/4 (-.f64 (*.f64 (log.f64 2) 4) (*.f64 x (*.f64 y 4))))
(*.f64 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(/.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 2)
(/.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8) 8)
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 2))) -2)
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)) 16)
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4) -4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) -8)
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) 4)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)))) 64)
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4))) 8)
(neg.f64 (-.f64 (*.f64 x y) (log.f64 2)))
Outputs
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(log.f64 2)
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (*.f64 -1 (*.f64 y x)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (log.f64 2) (neg.f64 (*.f64 x y)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 0)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 0 (-.f64 (log.f64 2) (*.f64 x y)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) -1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (neg.f64 (*.f64 x y)) (log.f64 2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 -1 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1) -1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x y)))
(+.f64 (*.f64 (log.f64 2) 1/2) (-.f64 (*.f64 (log.f64 2) 1/2) (*.f64 y x)))
(+.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (-.f64 1 (*.f64 x y)) (+.f64 (log.f64 2) -1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 -2 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (+.f64 (log.f64 2) 1) (-.f64 (neg.f64 (*.f64 x y)) 1))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(+.f64 (+.f64 (-.f64 (log.f64 2) (*.f64 x y)) 2) -2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1 (-.f64 (log.f64 2) (*.f64 x y)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 1/2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 4 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (/.f64 (*.f64 x y) 4)))
(*.f64 4 (-.f64 (/.f64 (log.f64 2) 4) (*.f64 y (/.f64 x 4))))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 1/4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 -1 (-.f64 (*.f64 x y) (log.f64 2)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1/2 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1/2) 2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1/4 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 1/4 (-.f64 (*.f64 (log.f64 2) 4) (*.f64 x (*.f64 y 4))))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(*.f64 (/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (-.f64 (log.f64 2) (*.f64 x y)) 1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (-.f64 (log.f64 2) (*.f64 x y))) 2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (-.f64 (*.f64 x y) (log.f64 2)) -1)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 4) 4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8) 8)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (-.f64 (*.f64 x y) (log.f64 2))) -2)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)) 16)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4) -4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) 32)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) -8)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) 4)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8))) (*.f64 2 (*.f64 2 (*.f64 (-.f64 (log.f64 2) (*.f64 x y)) 8)))) 64)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(/.f64 (+.f64 (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4)) (neg.f64 (*.f64 (-.f64 (*.f64 x y) (log.f64 2)) 4))) 8)
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))
(neg.f64 (-.f64 (*.f64 x y) (log.f64 2)))
(+.f64 (log.f64 2) (neg.f64 (*.f64 y x)))
(+.f64 (log.f64 2) (*.f64 y (neg.f64 x)))
(-.f64 (log.f64 2) (*.f64 y x))

eval35.0ms (0.3%)

Compiler

Compiled 1747 to 1322 computations (24.3% saved)

prune29.0ms (0.3%)

Pruning

8 alts after pruning (4 fresh and 4 done)

PrunedKeptTotal
New1624166
Fresh000
Picked011
Done134
Total1638171
Error
0.2b
Counts
171 → 8
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
5.5b
(-.f64 (log.f64 2) (*.f64 x y))
27.6b
(+.f64 (*.f64 1/2 x) (log.f64 2))
45.1b
(*.f64 (-.f64 1/2 y) x)
35.7b
(*.f64 y (neg.f64 x))
28.2b
(log.f64 (+.f64 2 x))
27.4b
(log.f64 (+.f64 1 (exp.f64 x)))
27.9b
(log.f64 2)
Compiler

Compiled 57 to 45 computations (21.1% saved)

localize3.0ms (0%)

Compiler

Compiled 5 to 5 computations (0% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(log.f64 (+.f64 2 x))
Compiler

Compiled 11 to 8 computations (27.3% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@inf
(log.f64 (+.f64 2 x))
0.0ms
x
@-inf
(log.f64 (+.f64 2 x))
0.0ms
x
@0
(log.f64 (+.f64 2 x))

rewrite97.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1884×bool.json-1
1884×bool.json-2
1146×rational.json-1
1146×rational.json-2
1146×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
16911
219011
338011
477811
5168611
6409411
7726011
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(log.f64 (+.f64 2 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (+.f64 2 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (log.f64 (+.f64 2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) (*.f64 (log.f64 (+.f64 2 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (log.f64 (+.f64 2 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (log.f64 (+.f64 2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (log.f64 (+.f64 2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (log.f64 (+.f64 2 x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (log.f64 (+.f64 2 x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (log.f64 (+.f64 2 x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (log.f64 (+.f64 2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (log.f64 (+.f64 2 x))))))) (#(struct:change #<rule egg-rr> (2) ((x and (log.f64 (+.f64 2 x)) (log.f64 (+.f64 2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f64 (+.f64 2 x)) (log.f64 (+.f64 2 x)))))))

simplify615.0ms (5.7%)

Algorithm
egg-herbie
Rules
1976×rational.json-simplify-2
1798×rational.json-simplify-35
1306×rational.json-simplify-46
1294×rational.json-simplify-1
1006×rational.json-simplify-49
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
085780
1175764
2418740
3951740
41481740
52813740
63559740
73627740
83670740
93711740
103752740
113793740
123860740
133901740
143942740
153983740
164024740
174065740
184106740
194840740
205239740
215292740
225345740
235401740
245470740
255592740
265990740
277267740
Stop Event
node limit
Counts
34 → 62
Calls
Call 1
Inputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 1/24 (pow.f64 x 3)))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (log.f64 (+.f64 2 x)) 0)
(+.f64 0 (log.f64 (+.f64 2 x)))
(+.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(-.f64 (log.f64 (+.f64 2 x)) 0)
(*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(*.f64 (log.f64 (+.f64 2 x)) 1)
(*.f64 1 (log.f64 (+.f64 2 x)))
(*.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 1/2)
(*.f64 4 (*.f64 (log.f64 (+.f64 2 x)) 1/4))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 1/4)
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 1/8)
(*.f64 1/2 (*.f64 2 (log.f64 (+.f64 2 x))))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) 2)
(*.f64 1/4 (*.f64 (log.f64 (+.f64 2 x)) 4))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/4) 4)
(/.f64 (log.f64 (+.f64 2 x)) 1)
(/.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 2)
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 4)
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)))) 64)
Outputs
(log.f64 2)
(+.f64 (*.f64 1/2 x) (log.f64 2))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (+.f64 (log.f64 2) (*.f64 1/2 x)) (*.f64 -1/8 (pow.f64 x 2)))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (*.f64 -1/8 (pow.f64 x 2))))
(+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (+.f64 (log.f64 2) (*.f64 1/24 (pow.f64 x 3)))))
(+.f64 (*.f64 1/2 x) (+.f64 (+.f64 (log.f64 2) (*.f64 1/24 (pow.f64 x 3))) (*.f64 -1/8 (pow.f64 x 2))))
(+.f64 (log.f64 2) (+.f64 (+.f64 (*.f64 1/2 x) (*.f64 1/24 (pow.f64 x 3))) (*.f64 -1/8 (pow.f64 x 2))))
(+.f64 (log.f64 2) (+.f64 (*.f64 -1/8 (pow.f64 x 2)) (+.f64 (*.f64 1/2 x) (*.f64 1/24 (pow.f64 x 3)))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/2 x) (+.f64 (*.f64 -1/8 (pow.f64 x 2)) (*.f64 1/24 (pow.f64 x 3)))))
(+.f64 (log.f64 2) (+.f64 (*.f64 1/24 (pow.f64 x 3)) (+.f64 (*.f64 1/2 x) (*.f64 -1/8 (pow.f64 x 2)))))
(*.f64 -1 (log.f64 (/.f64 1 x)))
(neg.f64 (log.f64 (/.f64 1 x)))
(+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 2 (/.f64 1 x)) (-.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (-.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (*.f64 2 (/.f64 1 x))) (-.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))) (*.f64 8/3 (/.f64 1 (pow.f64 x 3)))))
(+.f64 (neg.f64 (log.f64 (/.f64 1 x))) (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2))))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (log.f64 -1))
(+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (log.f64 -1))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))
(+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)))
(+.f64 (*.f64 2 (/.f64 1 x)) (+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (log.f64 -1)))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)) (*.f64 2 (/.f64 1 (pow.f64 x 2)))))
(+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2))))))
(+.f64 (log.f64 -1) (+.f64 (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))) (neg.f64 (log.f64 (/.f64 -1 x)))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (/.f64 1 x))))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(-.f64 (+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (*.f64 -1 (log.f64 (/.f64 -1 x))) (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)))) (*.f64 2 (/.f64 1 (pow.f64 x 2))))
(+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (-.f64 (+.f64 (*.f64 2 (/.f64 1 x)) (log.f64 -1)) (*.f64 2 (/.f64 1 (pow.f64 x 2))))))
(+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (neg.f64 (log.f64 (/.f64 -1 x))) (+.f64 (log.f64 -1) (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))))))
(+.f64 (*.f64 8/3 (/.f64 1 (pow.f64 x 3))) (+.f64 (log.f64 -1) (+.f64 (*.f64 2 (-.f64 (/.f64 1 x) (/.f64 1 (pow.f64 x 2)))) (neg.f64 (log.f64 (/.f64 -1 x))))))
(+.f64 (log.f64 (+.f64 2 x)) 0)
(log.f64 (+.f64 2 x))
(+.f64 0 (log.f64 (+.f64 2 x)))
(log.f64 (+.f64 2 x))
(+.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(log.f64 (+.f64 2 x))
(-.f64 (log.f64 (+.f64 2 x)) 0)
(log.f64 (+.f64 2 x))
(*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 1/2))
(log.f64 (+.f64 2 x))
(*.f64 (log.f64 (+.f64 2 x)) 1)
(log.f64 (+.f64 2 x))
(*.f64 1 (log.f64 (+.f64 2 x)))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 1/2)
(log.f64 (+.f64 2 x))
(*.f64 4 (*.f64 (log.f64 (+.f64 2 x)) 1/4))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 1/4)
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 1/8)
(log.f64 (+.f64 2 x))
(*.f64 1/2 (*.f64 2 (log.f64 (+.f64 2 x))))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/2) 2)
(log.f64 (+.f64 2 x))
(*.f64 1/4 (*.f64 (log.f64 (+.f64 2 x)) 4))
(log.f64 (+.f64 2 x))
(*.f64 (*.f64 (log.f64 (+.f64 2 x)) 1/4) 4)
(log.f64 (+.f64 2 x))
(/.f64 (log.f64 (+.f64 2 x)) 1)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 2 (log.f64 (+.f64 2 x))) 2)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 4) 4)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 (log.f64 (+.f64 2 x)) 8) 8)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)) 16)
(log.f64 (+.f64 2 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) 32)
(log.f64 (+.f64 2 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8))) (*.f64 2 (*.f64 2 (*.f64 (log.f64 (+.f64 2 x)) 8)))) 64)
(log.f64 (+.f64 2 x))

localize5.0ms (0%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (-.f64 1/2 y) x)
Compiler

Compiled 13 to 8 computations (38.5% saved)

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 16 to 13 computations (18.8% saved)

series0.0ms (0%)

Counts
1 → 3
Calls

3 calls:

TimeVariablePointExpression
0.0ms
x
@0
(+.f64 (*.f64 1/2 x) (log.f64 2))
0.0ms
x
@-inf
(+.f64 (*.f64 1/2 x) (log.f64 2))
0.0ms
x
@inf
(+.f64 (*.f64 1/2 x) (log.f64 2))

rewrite97.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
1782×bool.json-1
1782×bool.json-2
1734×rational.json-1
1114×rational.json-2
1114×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
18817
222517
344017
488217
5192317
6413917
7694317
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 x) (log.f64 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 x 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 1/2 x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 2 (log.f64 2))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (+.f64 (+.f64 x x) (*.f64 (log.f64 2) 4)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 2 (log.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x not (not (+.f64 (*.f64 1/2 x) (log.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x and (+.f64 (*.f64 1/2 x) (log.f64 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f64 (*.f64 1/2 x) (log.f64 2)) (+.f64 (*.f64 1/2 x) (log.f64 2)))))))

simplify740.0ms (6.9%)

Algorithm
egg-herbie
Rules
9292×rational.json-simplify-41
1918×rational.json-simplify-35
1152×rational.json-simplify-2
1044×rational.json-simplify-1
692×rational.json-simplify-51
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
056447
1116447
2206447
3612447
41732447
53056447
63726447
73774447
83810447
93842447
103874447
113904447
123953447
133983447
144013447
154043447
164073447
174103447
184133447
194163447
204193447
214223447
224253447
234283447
244313447
254343447
264373447
274403447
284433447
294463447
304493447
314523447
324553447
334583447
344613447
354643447
364673447
374703447
384703447
Stop Event
node limit
Counts
25 → 26
Calls
Call 1
Inputs
(log.f64 2)
(*.f64 1/2 x)
(*.f64 1/2 x)
(-.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 0)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 x 1/4)))
(*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(*.f64 1 (+.f64 (*.f64 1/2 x) (log.f64 2)))
(*.f64 (+.f64 x (*.f64 2 (log.f64 2))) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4))
(*.f64 4 (*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 1/2))
(*.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 1))
(*.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 1/4)
(*.f64 1/4 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 (log.f64 2) 4)))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 2)
(*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 4)
(/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(/.f64 (+.f64 x (*.f64 2 (log.f64 2))) 2)
(/.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 4)
(/.f64 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) 32)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)))) 64)
Outputs
(log.f64 2)
(*.f64 1/2 x)
(*.f64 1/2 x)
(-.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 0)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 2 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 2 (+.f64 (*.f64 1/2 (log.f64 2)) (*.f64 x 1/4)))
(*.f64 2 (+.f64 (*.f64 (log.f64 2) 1/2) (*.f64 x 1/4)))
(*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 1 (+.f64 (*.f64 1/2 x) (log.f64 2)))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 (+.f64 x (*.f64 2 (log.f64 2))) 1/2)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 4 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 4 (*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 1/2))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 4 (*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 1))
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 1/4)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 1/4 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))))
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 1/4 (+.f64 (+.f64 x x) (*.f64 (log.f64 2) 4)))
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(*.f64 (*.f64 1/2 (+.f64 (*.f64 1/2 x) (log.f64 2))) 2)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(*.f64 (/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 4) 4)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 1)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (+.f64 x (*.f64 2 (log.f64 2))) 2)
(/.f64 (*.f64 2 (+.f64 x (*.f64 2 (log.f64 2)))) 4)
(*.f64 1/2 (+.f64 x (*.f64 2 (log.f64 2))))
(/.f64 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8) 8)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)) 16)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) 32)
(+.f64 (log.f64 2) (*.f64 1/2 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8))) (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 1/2 x) (log.f64 2)) 8)))) 64)
(+.f64 (log.f64 2) (*.f64 1/2 x))

eval27.0ms (0.3%)

Compiler

Compiled 1324 to 1112 computations (16% saved)

prune18.0ms (0.2%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New1081109
Fresh000
Picked011
Done077
Total1089117
Error
0.2b
Counts
117 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
5.5b
(-.f64 (log.f64 2) (*.f64 x y))
27.6b
(+.f64 (*.f64 1/2 x) (log.f64 2))
45.1b
(*.f64 (-.f64 1/2 y) x)
35.7b
(*.f64 y (neg.f64 x))
61.7b
(*.f64 1/2 x)
28.2b
(log.f64 (+.f64 2 x))
27.4b
(log.f64 (+.f64 1 (exp.f64 x)))
27.9b
(log.f64 2)
Compiler

Compiled 62 to 49 computations (21% saved)

localize3.0ms (0%)

Compiler

Compiled 7 to 5 computations (28.6% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune3.0ms (0%)

Pruning

9 alts after pruning (0 fresh and 9 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done088
Total099
Error
0.2b
Counts
9 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.3b
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
5.5b
(-.f64 (log.f64 2) (*.f64 x y))
27.6b
(+.f64 (*.f64 1/2 x) (log.f64 2))
45.1b
(*.f64 (-.f64 1/2 y) x)
35.7b
(*.f64 y (neg.f64 x))
61.7b
(*.f64 1/2 x)
28.2b
(log.f64 (+.f64 2 x))
27.4b
(log.f64 (+.f64 1 (exp.f64 x)))
27.9b
(log.f64 2)
Compiler

Compiled 62 to 49 computations (21% saved)

regimes20.0ms (0.2%)

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

3 calls:

7.0ms
x
6.0ms
y
5.0ms
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Results
ErrorSegmentsBranch
0.3b1x
0.3b1y
0.3b1(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
Compiler

Compiled 71 to 49 computations (31% saved)

regimes22.0ms (0.2%)

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

2 calls:

14.0ms
x
6.0ms
y
Results
ErrorSegmentsBranch
0.7b2x
5.5b1y
Compiler

Compiled 51 to 37 computations (27.5% saved)

bsearch19.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
-23022.54472056601
-0.01646771524822486
Results
17.0ms144×body256valid
Compiler

Compiled 178 to 138 computations (22.5% saved)

regimes17.0ms (0.2%)

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

2 calls:

10.0ms
x
6.0ms
y
Results
ErrorSegmentsBranch
1.1b2x
5.5b1y
Compiler

Compiled 38 to 27 computations (28.9% saved)

bsearch23.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
23.0ms
-23022.54472056601
-0.01646771524822486
Results
19.0ms138×body256valid
1.0msbody512valid
1.0msbody1024valid
1.0msbody2048valid
Compiler

Compiled 160 to 120 computations (25% saved)

regimes32.0ms (0.3%)

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

2 calls:

18.0ms
x
13.0ms
y
Results
ErrorSegmentsBranch
10.3b3x
18.1b3y
Compiler

Compiled 32 to 23 computations (28.1% saved)

bsearch33.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
4.052114501404554e-59
9.99274060820922e-56
16.0ms
-6.866690756618278e-88
-2.323908569332905e-90
Results
30.0ms256×body256valid
Compiler

Compiled 216 to 180 computations (16.7% saved)

regimes8.0ms (0.1%)

Accuracy

Total -26.4b remaining (-74.1%)

Threshold costs -26.4b (-74.1%)

Counts
3 → 1
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 y (neg.f64 x))
(*.f64 (-.f64 1/2 y) x)
Outputs
(*.f64 y (neg.f64 x))
Calls

2 calls:

4.0ms
x
3.0ms
y
Results
ErrorSegmentsBranch
35.7b1x
35.7b1y
Compiler

Compiled 20 to 13 computations (35% saved)

simplify4.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
036172
Stop Event
done
saturated
Calls
Call 1
Inputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(if (<=.f64 x -3152519739159347/2251799813685248) (*.f64 y (neg.f64 x)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(if (<=.f64 x -80) (*.f64 y (neg.f64 x)) (-.f64 (log.f64 2) (*.f64 x y)))
(if (<=.f64 x -6092105698723627/8958978968711216842229769122273777112486581988938598139599956403855167484720643781523509973086428463104) (*.f64 y (neg.f64 x)) (if (<=.f64 x 452754560349461/220855883097298041197912187592864814478435487109452369765200775161577472) (log.f64 2) (*.f64 (-.f64 1/2 y) x)))
(*.f64 y (neg.f64 x))
(*.f64 1/2 x)
Outputs
(-.f64 (log.f64 (+.f64 1 (exp.f64 x))) (*.f64 x y))
(if (<=.f64 x -3152519739159347/2251799813685248) (*.f64 y (neg.f64 x)) (+.f64 (*.f64 (-.f64 1/2 y) x) (log.f64 2)))
(if (<=.f64 x -80) (*.f64 y (neg.f64 x)) (-.f64 (log.f64 2) (*.f64 x y)))
(if (<=.f64 x -6092105698723627/8958978968711216842229769122273777112486581988938598139599956403855167484720643781523509973086428463104) (*.f64 y (neg.f64 x)) (if (<=.f64 x 452754560349461/220855883097298041197912187592864814478435487109452369765200775161577472) (log.f64 2) (*.f64 (-.f64 1/2 y) x)))
(*.f64 y (neg.f64 x))
(*.f64 1/2 x)
Compiler

Compiled 77 to 55 computations (28.6% saved)

soundness0.0ms (0%)

end118.0ms (1.1%)

Compiler

Compiled 67 to 38 computations (43.3% saved)

Profiling

Loading profile data...