Details

Time bar (total: 1.7s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%25%75%0%0%0%0
100%25%0%75%0%0%0%1
Compiler

Compiled 6 to 4 computations (33.3% saved)

sample909.0ms (52%)

Results
897.0ms8256×body256valid
Bogosity

preprocess5.0ms (0.3%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
045
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(acosh.f32 x)
Outputs
(acosh.f32 x)
Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify6.0ms (0.3%)

Algorithm
egg-herbie
Rules
62×rational.json-simplify-31
36×rational.json-simplify-2
18×rational.json-simplify-27
18×rational.json-simplify-9
12×rational.json-simplify-41
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01027
11727
22127
32927
43927
54927
66327
77527
88827
910527
1011127
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
Outputs
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
(log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))))

eval0.0ms (0%)

Compiler

Compiled 19 to 12 computations (36.8% saved)

prune1.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New112
Fresh011
Picked000
Done000
Total123
Error
15.0b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
15.0b
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
Compiler

Compiled 10 to 7 computations (30% saved)

localize33.0ms (1.9%)

Local error

Found 4 expressions with local error:

NewErrorProgram
0.0b
(-.f32 (*.f32 x x) 1)
0.0b
(+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1)))
0.2b
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
12.8b
(sqrt.f32 (-.f32 (*.f32 x x) 1))
Compiler

Compiled 34 to 17 computations (50% saved)

series4.0ms (0.2%)

Counts
4 → 48
Calls

12 calls:

TimeVariablePointExpression
1.0ms
x
@0
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
1.0ms
x
@-inf
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
0.0ms
x
@inf
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
0.0ms
x
@0
(sqrt.f32 (-.f32 (*.f32 x x) 1))
0.0ms
x
@inf
(sqrt.f32 (-.f32 (*.f32 x x) 1))

rewrite9.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
44×rational.json-simplify-2
42×bool.json-1
36×rational.json-1
36×rational.json-2
34×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01080
15080
28880
311380
413780
515380
616280
716980
Stop Event
saturated
Counts
4 → 19
Calls
Call 1
Inputs
(sqrt.f32 (-.f32 (*.f32 x x) 1))
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
(+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1)))
(-.f32 (*.f32 x x) 1)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (sqrt.f32 (+.f32 (*.f32 x x) -1)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (sqrt.f32 (+.f32 (*.f32 x x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (sqrt.f32 (+.f32 (*.f32 x x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (sqrt.f32 (+.f32 (*.f32 x x) -1)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (sqrt.f32 (+.f32 (*.f32 x x) -1)) (sqrt.f32 (+.f32 (*.f32 x x) -1)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))))))
((#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))) (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (*.f32 x x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 (+.f32 (*.f32 x x) -1) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (+.f32 (*.f32 x x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 -1 (*.f32 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (+.f32 (*.f32 x x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 (*.f32 x x) -1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 -1 (-.f32 1 (*.f32 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (-.f32 1 (*.f32 x x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f32 (-.f32 1 (*.f32 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f32 (*.f32 x x) -1) (+.f32 (*.f32 x x) -1))))))

simplify172.0ms (9.8%)

Algorithm
egg-herbie
Rules
1554×rational.json-simplify-27
1182×rational.json-simplify-1
1146×rational.json-simplify-29
992×rational.json-simplify-33
890×rational.json-simplify-34
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01392159
12702159
25182139
310642139
422192139
542372139
646682139
748342139
849752139
950112139
1051772139
1156602139
1259202139
1360262139
1462782139
1562912139
1662912139
Stop Event
saturated
Counts
67 → 139
Calls
Call 1
Inputs
(sqrt.f32 -1)
(+.f32 (sqrt.f32 -1) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1)))))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (*.f32 1/16 (/.f32 (pow.f32 x 6) (pow.f32 (sqrt.f32 -1) 5))))))
x
(-.f32 x (*.f32 1/2 (/.f32 1 x)))
(-.f32 x (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(-.f32 x (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))))
(*.f32 -1 x)
(+.f32 (*.f32 -1 x) (*.f32 1/2 (/.f32 1 x)))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 -1 x)))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 -1 x))))
(log.f32 (sqrt.f32 -1))
(+.f32 (/.f32 x (sqrt.f32 -1)) (log.f32 (sqrt.f32 -1)))
(+.f32 (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (/.f32 x (sqrt.f32 -1)) (log.f32 (sqrt.f32 -1))))
(+.f32 (*.f32 3/40 (/.f32 (pow.f32 x 5) (pow.f32 (sqrt.f32 -1) 5))) (+.f32 (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (/.f32 x (sqrt.f32 -1)) (log.f32 (sqrt.f32 -1)))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 5/96 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (log.f32 -1/2) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (log.f32 -1/2) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (log.f32 -1/2) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 5/96 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))))
(sqrt.f32 -1)
(+.f32 (sqrt.f32 -1) x)
(+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) x))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) x)))
(*.f32 2 x)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(-.f32 (*.f32 2 x) (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))))
(/.f32 1/2 x)
(+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/2 (/.f32 1 x)))
(+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/2 (/.f32 1 x))))
(+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 5/128 (/.f32 1 (pow.f32 x 7))))))
-1
(-.f32 (pow.f32 x 2) 1)
(-.f32 (pow.f32 x 2) 1)
(-.f32 (pow.f32 x 2) 1)
(pow.f32 x 2)
(-.f32 (pow.f32 x 2) 1)
(-.f32 (pow.f32 x 2) 1)
(-.f32 (pow.f32 x 2) 1)
(pow.f32 x 2)
(-.f32 (pow.f32 x 2) 1)
(-.f32 (pow.f32 x 2) 1)
(-.f32 (pow.f32 x 2) 1)
(+.f32 (sqrt.f32 (+.f32 (*.f32 x x) -1)) 0)
(+.f32 0 (sqrt.f32 (+.f32 (*.f32 x x) -1)))
(*.f32 1 (sqrt.f32 (+.f32 (*.f32 x x) -1)))
(*.f32 (sqrt.f32 (+.f32 (*.f32 x x) -1)) 1)
(+.f32 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) 0)
(+.f32 0 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))
(*.f32 1 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))
(*.f32 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) 1)
(*.f32 1 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))))
(*.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))) 1)
(+.f32 (*.f32 x x) -1)
(+.f32 (+.f32 (*.f32 x x) -1) 0)
(+.f32 0 (+.f32 (*.f32 x x) -1))
(+.f32 -1 (*.f32 x x))
(*.f32 1 (+.f32 (*.f32 x x) -1))
(*.f32 (+.f32 (*.f32 x x) -1) 1)
(*.f32 -1 (-.f32 1 (*.f32 x x)))
(*.f32 (-.f32 1 (*.f32 x x)) -1)
(neg.f32 (-.f32 1 (*.f32 x x)))
Outputs
(sqrt.f32 -1)
(+.f32 (sqrt.f32 -1) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1)))))
(+.f32 (+.f32 (sqrt.f32 -1) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1)))) (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))))
(+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (+.f32 (sqrt.f32 -1) (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3)))))
(+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3)))))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (*.f32 1/16 (/.f32 (pow.f32 x 6) (pow.f32 (sqrt.f32 -1) 5))))))
(+.f32 (+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (sqrt.f32 -1)) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (*.f32 1/16 (/.f32 (pow.f32 x 6) (pow.f32 (sqrt.f32 -1) 5)))))
(+.f32 (sqrt.f32 -1) (+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (*.f32 1/16 (/.f32 (pow.f32 x 6) (pow.f32 (sqrt.f32 -1) 5))))))
x
(-.f32 x (*.f32 1/2 (/.f32 1 x)))
(+.f32 x (*.f32 (/.f32 1 x) -1/2))
(-.f32 x (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(-.f32 (-.f32 x (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))) (*.f32 1/2 (/.f32 1 x)))
(+.f32 x (-.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(+.f32 x (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 (/.f32 1 (pow.f32 x 3)) -1/8)))
(+.f32 x (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 -1/8 (/.f32 1 (pow.f32 x 3)))))
(-.f32 x (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))))
(-.f32 x (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5))))))
(+.f32 x (-.f32 (-.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5)))))
(+.f32 x (+.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 (/.f32 1 (pow.f32 x 3)) -1/8)) (*.f32 (/.f32 1 (pow.f32 x 5)) -1/16)))
(+.f32 x (+.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 -1/8 (/.f32 1 (pow.f32 x 3)))) (*.f32 (/.f32 1 (pow.f32 x 5)) -1/16)))
(*.f32 -1 x)
(neg.f32 x)
(+.f32 (*.f32 -1 x) (*.f32 1/2 (/.f32 1 x)))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 -1 x))
(-.f32 (*.f32 1/2 (/.f32 1 x)) x)
(+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 -1 x)))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (-.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) x))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 -1 x))))
(+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/2 (/.f32 1 x)) (-.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) x)))
(-.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 x (-.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))))
(-.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 x (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 (/.f32 1 (pow.f32 x 3)) -1/8))))
(-.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 x (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 -1/8 (/.f32 1 (pow.f32 x 3))))))
(log.f32 (sqrt.f32 -1))
(+.f32 (/.f32 x (sqrt.f32 -1)) (log.f32 (sqrt.f32 -1)))
(+.f32 (log.f32 (sqrt.f32 -1)) (/.f32 x (sqrt.f32 -1)))
(+.f32 (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (/.f32 x (sqrt.f32 -1)) (log.f32 (sqrt.f32 -1))))
(+.f32 (+.f32 (log.f32 (sqrt.f32 -1)) (/.f32 x (sqrt.f32 -1))) (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))))
(+.f32 (/.f32 x (sqrt.f32 -1)) (+.f32 (log.f32 (sqrt.f32 -1)) (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3)))))
(+.f32 (log.f32 (sqrt.f32 -1)) (+.f32 (/.f32 x (sqrt.f32 -1)) (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3)))))
(+.f32 (*.f32 3/40 (/.f32 (pow.f32 x 5) (pow.f32 (sqrt.f32 -1) 5))) (+.f32 (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (/.f32 x (sqrt.f32 -1)) (log.f32 (sqrt.f32 -1)))))
(+.f32 (+.f32 (+.f32 (log.f32 (sqrt.f32 -1)) (/.f32 x (sqrt.f32 -1))) (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3)))) (*.f32 3/40 (/.f32 (pow.f32 x 5) (pow.f32 (sqrt.f32 -1) 5))))
(+.f32 (+.f32 (log.f32 (sqrt.f32 -1)) (/.f32 x (sqrt.f32 -1))) (+.f32 (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))) (*.f32 3/40 (/.f32 (pow.f32 x 5) (pow.f32 (sqrt.f32 -1) 5)))))
(+.f32 (log.f32 (sqrt.f32 -1)) (+.f32 (/.f32 x (sqrt.f32 -1)) (+.f32 (*.f32 -1/6 (/.f32 (pow.f32 x 3) (pow.f32 (sqrt.f32 -1) 3))) (*.f32 3/40 (/.f32 (pow.f32 x 5) (pow.f32 (sqrt.f32 -1) 5))))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (+.f32 (log.f32 2) (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4)))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 3/32 (/.f32 1 (pow.f32 x 4)))))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 3/32 (/.f32 1 (pow.f32 x 4))))))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -3/32))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 5/96 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 5/96 (/.f32 1 (pow.f32 x 6))))))
(-.f32 (-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (*.f32 5/96 (/.f32 1 (pow.f32 x 6)))))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (-.f32 (-.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 5/96 (/.f32 1 (pow.f32 x 6)))) (*.f32 3/32 (/.f32 1 (pow.f32 x 4))))))
(-.f32 (-.f32 (+.f32 (log.f32 2) (*.f32 (/.f32 1 (pow.f32 x 4)) -3/32)) (*.f32 5/96 (/.f32 1 (pow.f32 x 6)))) (-.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 -1 (log.f32 (/.f32 1 x)))))
(-.f32 (-.f32 (+.f32 (log.f32 2) (*.f32 (/.f32 1 (pow.f32 x 4)) -3/32)) (*.f32 5/96 (/.f32 1 (pow.f32 x 6)))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 (log.f32 (/.f32 1 x)) 1)))
(-.f32 (-.f32 (+.f32 (log.f32 2) (*.f32 (/.f32 1 (pow.f32 x 4)) -3/32)) (*.f32 5/96 (/.f32 1 (pow.f32 x 6)))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1 (log.f32 (/.f32 1 x)))))
(-.f32 (+.f32 (+.f32 (log.f32 2) (*.f32 (/.f32 1 (pow.f32 x 4)) -3/32)) (*.f32 (/.f32 1 (pow.f32 x 6)) -5/96)) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1 (log.f32 (/.f32 1 x)))))
(-.f32 (+.f32 (*.f32 (/.f32 1 (pow.f32 x 6)) -5/96) (+.f32 (log.f32 2) (*.f32 (/.f32 1 (pow.f32 x 4)) -3/32))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1 (log.f32 (/.f32 1 x)))))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (log.f32 -1/2) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (log.f32 -1/2)))
(+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x))))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (log.f32 -1/2) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(+.f32 (+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 3/32 (/.f32 1 (pow.f32 x 4)))))
(+.f32 (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 3/32 (/.f32 1 (pow.f32 x 4)))) (+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x))))
(+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (+.f32 (+.f32 (log.f32 (/.f32 -1 x)) (*.f32 3/32 (/.f32 1 (pow.f32 x 4)))) (log.f32 -1/2)))
(+.f32 (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (log.f32 -1/2)) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (log.f32 (/.f32 -1 x))))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (log.f32 -1/2) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 5/96 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))))
(+.f32 (log.f32 (/.f32 -1 x)) (+.f32 (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 5/96 (/.f32 1 (pow.f32 x 6))))) (log.f32 -1/2)))
(+.f32 (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (*.f32 5/96 (/.f32 1 (pow.f32 x 6))))) (+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x))))
(+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (+.f32 (+.f32 (+.f32 (log.f32 (/.f32 -1 x)) (*.f32 3/32 (/.f32 1 (pow.f32 x 4)))) (log.f32 -1/2)) (*.f32 5/96 (/.f32 1 (pow.f32 x 6)))))
(+.f32 (*.f32 5/96 (/.f32 1 (pow.f32 x 6))) (+.f32 (+.f32 (*.f32 3/32 (/.f32 1 (pow.f32 x 4))) (log.f32 -1/2)) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (log.f32 (/.f32 -1 x)))))
(sqrt.f32 -1)
(+.f32 (sqrt.f32 -1) x)
(+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) x))
(+.f32 (sqrt.f32 -1) (+.f32 x (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1)))))
(+.f32 (+.f32 (sqrt.f32 -1) x) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))))
(+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (+.f32 (sqrt.f32 -1) x))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) x)))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (sqrt.f32 -1) (+.f32 x (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))))))
(+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 (+.f32 (sqrt.f32 -1) x) (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1)))))
(+.f32 (sqrt.f32 -1) (+.f32 (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))) (+.f32 x (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))))))
(+.f32 (sqrt.f32 -1) (+.f32 x (+.f32 (*.f32 1/2 (/.f32 (pow.f32 x 2) (sqrt.f32 -1))) (*.f32 -1/8 (/.f32 (pow.f32 x 4) (pow.f32 (sqrt.f32 -1) 3))))))
(*.f32 2 x)
(*.f32 x 2)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 1/2 (/.f32 1 x)))
(+.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) -1/2))
(-.f32 (*.f32 2 x) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(-.f32 (*.f32 x 2) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(+.f32 (*.f32 x 2) (-.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))))
(+.f32 (*.f32 x 2) (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 (/.f32 1 (pow.f32 x 3)) -1/8)))
(+.f32 (*.f32 x 2) (+.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 -1/8 (/.f32 1 (pow.f32 x 3)))))
(-.f32 (*.f32 2 x) (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))))
(-.f32 (*.f32 x 2) (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5))))))
(-.f32 (-.f32 (*.f32 x 2) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5))))
(+.f32 (*.f32 x 2) (-.f32 (-.f32 (*.f32 (/.f32 1 x) -1/2) (*.f32 1/8 (/.f32 1 (pow.f32 x 3)))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5)))))
(+.f32 (+.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) -1/2)) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 3)) -1/8) (*.f32 1/16 (/.f32 1 (pow.f32 x 5)))))
(+.f32 (+.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) -1/2)) (-.f32 (*.f32 -1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5)))))
(/.f32 1/2 x)
(+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/2 (/.f32 1 x)))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 1/8 (/.f32 1 (pow.f32 x 3))))
(+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/2 (/.f32 1 x))))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5)))))
(+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 5/128 (/.f32 1 (pow.f32 x 7))))))
(+.f32 (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 1/16 (/.f32 1 (pow.f32 x 5)))) (+.f32 (*.f32 1/2 (/.f32 1 x)) (*.f32 5/128 (/.f32 1 (pow.f32 x 7)))))
(+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 5/128 (/.f32 1 (pow.f32 x 7))))))
(+.f32 (*.f32 1/2 (/.f32 1 x)) (+.f32 (*.f32 1/16 (/.f32 1 (pow.f32 x 5))) (+.f32 (*.f32 1/8 (/.f32 1 (pow.f32 x 3))) (*.f32 5/128 (/.f32 1 (pow.f32 x 7))))))
-1
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(pow.f32 x 2)
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(pow.f32 x 2)
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(-.f32 (pow.f32 x 2) 1)
(+.f32 -1 (pow.f32 x 2))
(+.f32 (sqrt.f32 (+.f32 (*.f32 x x) -1)) 0)
(+.f32 (sqrt.f32 (+.f32 -1 (*.f32 x x))) 0)
(+.f32 0 (sqrt.f32 (+.f32 (*.f32 x x) -1)))
(+.f32 (sqrt.f32 (+.f32 -1 (*.f32 x x))) 0)
(*.f32 1 (sqrt.f32 (+.f32 (*.f32 x x) -1)))
(*.f32 1 (sqrt.f32 (+.f32 -1 (*.f32 x x))))
(*.f32 (sqrt.f32 (+.f32 (*.f32 x x) -1)) 1)
(*.f32 1 (sqrt.f32 (+.f32 -1 (*.f32 x x))))
(+.f32 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) 0)
(+.f32 0 (log.f32 (+.f32 x (sqrt.f32 (+.f32 -1 (*.f32 x x))))))
(+.f32 0 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))
(+.f32 0 (log.f32 (+.f32 x (sqrt.f32 (+.f32 -1 (*.f32 x x))))))
(*.f32 1 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))))
(*.f32 1 (log.f32 (+.f32 x (sqrt.f32 (+.f32 -1 (*.f32 x x))))))
(*.f32 (log.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1)))) 1)
(*.f32 1 (log.f32 (+.f32 x (sqrt.f32 (+.f32 -1 (*.f32 x x))))))
(*.f32 1 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))))
(*.f32 1 (+.f32 x (sqrt.f32 (+.f32 -1 (*.f32 x x)))))
(*.f32 (+.f32 x (sqrt.f32 (+.f32 (*.f32 x x) -1))) 1)
(*.f32 1 (+.f32 x (sqrt.f32 (+.f32 -1 (*.f32 x x)))))
(+.f32 (*.f32 x x) -1)
(+.f32 -1 (*.f32 x x))
(+.f32 (+.f32 (*.f32 x x) -1) 0)
(+.f32 -1 (*.f32 x x))
(+.f32 0 (+.f32 (*.f32 x x) -1))
(+.f32 -1 (*.f32 x x))
(+.f32 -1 (*.f32 x x))
(*.f32 1 (+.f32 (*.f32 x x) -1))
(+.f32 -1 (*.f32 x x))
(*.f32 (+.f32 (*.f32 x x) -1) 1)
(+.f32 -1 (*.f32 x x))
(*.f32 -1 (-.f32 1 (*.f32 x x)))
(+.f32 -1 (*.f32 x x))
(*.f32 (-.f32 1 (*.f32 x x)) -1)
(+.f32 -1 (*.f32 x x))
(neg.f32 (-.f32 1 (*.f32 x x)))
(+.f32 -1 (*.f32 x x))

eval67.0ms (3.8%)

Compiler

Compiled 2636 to 2191 computations (16.9% saved)

prune21.0ms (1.2%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New1354139
Fresh000
Picked011
Done000
Total1355140
Error
0.0b
Counts
140 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.0b
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
31.0b
(log.f32 (/.f32 1/2 x))
0.6b
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
15.0b
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
0.9b
(log.f32 (+.f32 x x))
Compiler

Compiled 41 to 31 computations (24.4% saved)

localize12.0ms (0.7%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(log.f32 (+.f32 x x))
Compiler

Compiled 9 to 3 computations (66.7% saved)

series40.0ms (2.3%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
18.0ms
x
@0
(log.f32 (+.f32 x x))
17.0ms
x
@-inf
(log.f32 (+.f32 x x))
5.0ms
x
@inf
(log.f32 (+.f32 x x))

rewrite5.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
22×bool.json-1
18×rational.json-simplify-2
16×rational.json-1
16×rational.json-2
16×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0611
12811
25511
36411
Stop Event
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(log.f32 (+.f32 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (+.f32 x x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (log.f32 (+.f32 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (log.f32 (+.f32 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (log.f32 (+.f32 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f32 (+.f32 x x)) (log.f32 (+.f32 x x)))))))

simplify6.0ms (0.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
027344
132344
Stop Event
saturated
Counts
16 → 7
Calls
Call 1
Inputs
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (log.f32 (+.f32 x x)) 0)
(+.f32 0 (log.f32 (+.f32 x x)))
(*.f32 (log.f32 (+.f32 x x)) 1)
(*.f32 1 (log.f32 (+.f32 x x)))
Outputs
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(+.f32 (log.f32 (+.f32 x x)) 0)
(+.f32 0 (log.f32 (+.f32 x x)))
(+.f32 (log.f32 (+.f32 x x)) 0)
(*.f32 (log.f32 (+.f32 x x)) 1)
(*.f32 1 (log.f32 (+.f32 x x)))
(*.f32 1 (log.f32 (+.f32 x x)))

localize38.0ms (2.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x))))
0.2b
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
Compiler

Compiled 38 to 27 computations (28.9% saved)

series2.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite9.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
66×rational.json-simplify-2
60×bool.json-1
46×rational.json-1
46×rational.json-2
44×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01154
15354
29854
314154
417354
520254
622354
723854
824554
Stop Event
saturated
Counts
2 → 6
Calls
Call 1
Inputs
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
(+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x))))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))))))
((#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)) (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)))))))

simplify126.0ms (7.2%)

Algorithm
egg-herbie
Rules
1804×rational.json-simplify-27
1224×rational.json-simplify-29
1158×rational.json-simplify-1
980×rational.json-simplify-41
968×rational.json-simplify-33
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0781144
11491144
23111144
37281144
418851144
544811144
649221144
750801144
852301144
952721144
1055491144
1163531144
1265421144
1366521144
1468151144
1568231144
1668231144
Stop Event
saturated
Counts
30 → 63
Calls
Call 1
Inputs
(+.f32 (log.f32 -1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (*.f32 -1 (log.f32 x))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (*.f32 -1 (log.f32 x)))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (+.f32 (*.f32 -64/3 (pow.f32 x 6)) (*.f32 -1 (log.f32 x))))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/192 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/192 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(/.f32 -1/2 x)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(*.f32 2 x)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(*.f32 2 x)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(+.f32 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) 0)
(+.f32 0 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))
(*.f32 1 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))
(*.f32 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) 1)
(*.f32 1 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)))
(*.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)) 1)
Outputs
(+.f32 (log.f32 -1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (*.f32 -1 (log.f32 x))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -1 (log.f32 x)) (*.f32 -4 (pow.f32 x 2))))
(+.f32 (*.f32 -1 (log.f32 x)) (+.f32 (log.f32 -1/2) (*.f32 -4 (pow.f32 x 2))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (*.f32 -1 (log.f32 x)))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -1 (log.f32 x)) (*.f32 -8 (pow.f32 x 4)))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -1 (log.f32 x)) (+.f32 (*.f32 -4 (pow.f32 x 2)) (*.f32 -8 (pow.f32 x 4)))))
(+.f32 (*.f32 -1 (log.f32 x)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (+.f32 (log.f32 -1/2) (*.f32 -4 (pow.f32 x 2)))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (+.f32 (*.f32 -64/3 (pow.f32 x 6)) (*.f32 -1 (log.f32 x))))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (+.f32 (*.f32 -1 (log.f32 x)) (*.f32 -64/3 (pow.f32 x 6))))))
(+.f32 (log.f32 -1/2) (+.f32 (+.f32 (*.f32 -1 (log.f32 x)) (+.f32 (*.f32 -4 (pow.f32 x 2)) (*.f32 -8 (pow.f32 x 4)))) (*.f32 -64/3 (pow.f32 x 6))))
(+.f32 (log.f32 -1/2) (+.f32 (*.f32 -1 (log.f32 x)) (+.f32 (*.f32 -4 (pow.f32 x 2)) (+.f32 (*.f32 -8 (pow.f32 x 4)) (*.f32 -64/3 (pow.f32 x 6))))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(-.f32 (log.f32 2) (*.f32 1 (log.f32 (/.f32 1 x))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4)))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1/32 (/.f32 1 (pow.f32 x 4)))))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 1/32 (/.f32 1 (pow.f32 x 4))))))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32))))
(+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (+.f32 (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32) (-.f32 (log.f32 2) (*.f32 (log.f32 (/.f32 1 x)) 1))))
(+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (+.f32 (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32) (-.f32 (log.f32 2) (*.f32 1 (log.f32 (/.f32 1 x))))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (log.f32 2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/192 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6))))))
(-.f32 (-.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6)))))
(+.f32 (log.f32 2) (-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6))))))
(+.f32 (log.f32 2) (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (+.f32 (*.f32 -1 (log.f32 (/.f32 1 x))) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32) (*.f32 1/192 (/.f32 1 (pow.f32 x 6)))))))
(+.f32 (log.f32 2) (+.f32 (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32)) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 6)) -1/192) (*.f32 (log.f32 (/.f32 1 x)) 1))))
(+.f32 (log.f32 2) (+.f32 (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32)) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 6)) -1/192) (*.f32 1 (log.f32 (/.f32 1 x))))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 -2) (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4)))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))))
(-.f32 (-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))) (*.f32 1/32 (/.f32 1 (pow.f32 x 4))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1/32 (/.f32 1 (pow.f32 x 4)))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 -2) (-.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 1/32 (/.f32 1 (pow.f32 x 4))))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 -2) (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/192 (/.f32 1 (pow.f32 x 6))) (*.f32 1/4 (/.f32 1 (pow.f32 x 2))))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6))))))
(-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6))))))
(-.f32 (-.f32 (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -2)) (*.f32 1/4 (/.f32 1 (pow.f32 x 2)))) (+.f32 (*.f32 1/32 (/.f32 1 (pow.f32 x 4))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6)))))
(+.f32 (log.f32 -2) (-.f32 (-.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6)))) (+.f32 (*.f32 1/4 (/.f32 1 (pow.f32 x 2))) (*.f32 1/32 (/.f32 1 (pow.f32 x 4))))))
(+.f32 (log.f32 -2) (+.f32 (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32)) (-.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (*.f32 1/192 (/.f32 1 (pow.f32 x 6))))))
(+.f32 (log.f32 -2) (+.f32 (+.f32 (*.f32 (/.f32 1 (pow.f32 x 2)) -1/4) (*.f32 (/.f32 1 (pow.f32 x 4)) -1/32)) (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (*.f32 (/.f32 1 (pow.f32 x 6)) -1/192))))
(/.f32 -1/2 x)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(*.f32 2 x)
(*.f32 x 2)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(*.f32 2 x)
(*.f32 x 2)
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(-.f32 (*.f32 2 x) (*.f32 1/2 (/.f32 1 x)))
(-.f32 (*.f32 x 2) (*.f32 (/.f32 1 x) 1/2))
(+.f32 (*.f32 x 2) (*.f32 -1/2 (/.f32 1 x)))
(+.f32 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) 0)
(+.f32 (log.f32 (+.f32 (*.f32 -1/2 (/.f32 1 x)) (+.f32 x x))) 0)
(+.f32 (log.f32 (+.f32 x (+.f32 x (*.f32 -1/2 (/.f32 1 x))))) 0)
(+.f32 0 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))
(+.f32 (log.f32 (+.f32 (*.f32 -1/2 (/.f32 1 x)) (+.f32 x x))) 0)
(+.f32 (log.f32 (+.f32 x (+.f32 x (*.f32 -1/2 (/.f32 1 x))))) 0)
(*.f32 1 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))))
(*.f32 1 (log.f32 (+.f32 (*.f32 -1/2 (/.f32 1 x)) (+.f32 x x))))
(*.f32 1 (log.f32 (+.f32 x (+.f32 x (*.f32 -1/2 (/.f32 1 x))))))
(*.f32 (log.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x))) 1)
(*.f32 1 (log.f32 (+.f32 (*.f32 -1/2 (/.f32 1 x)) (+.f32 x x))))
(*.f32 1 (log.f32 (+.f32 x (+.f32 x (*.f32 -1/2 (/.f32 1 x))))))
(*.f32 1 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)))
(*.f32 1 (+.f32 (*.f32 -1/2 (/.f32 1 x)) (+.f32 x x)))
(*.f32 1 (+.f32 x (+.f32 x (*.f32 -1/2 (/.f32 1 x)))))
(*.f32 (+.f32 (*.f32 (/.f32 1 x) -1/2) (+.f32 x x)) 1)
(*.f32 1 (+.f32 (*.f32 -1/2 (/.f32 1 x)) (+.f32 x x)))
(*.f32 1 (+.f32 x (+.f32 x (*.f32 -1/2 (/.f32 1 x)))))

localize13.0ms (0.7%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(log.f32 (/.f32 1/2 x))
Compiler

Compiled 10 to 7 computations (30% saved)

series40.0ms (2.3%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
20.0ms
x
@-inf
(log.f32 (/.f32 1/2 x))
14.0ms
x
@0
(log.f32 (/.f32 1/2 x))
6.0ms
x
@inf
(log.f32 (/.f32 1/2 x))

rewrite5.0ms (0.3%)

Algorithm
batch-egg-rewrite
Rules
22×bool.json-1
16×rational.json-1
16×rational.json-2
16×rational.json-simplify-2
16×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
13211
25611
36011
Stop Event
saturated
Counts
1 → 4
Calls
Call 1
Inputs
(log.f32 (/.f32 1/2 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (/.f32 1/2 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (log.f32 (/.f32 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (log.f32 (/.f32 1/2 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (log.f32 (/.f32 1/2 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f32 (/.f32 1/2 x)) (log.f32 (/.f32 1/2 x)))))))

simplify8.0ms (0.5%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
026320
130320
Stop Event
saturated
Counts
16 → 8
Calls
Call 1
Inputs
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 (/.f32 1/2 x)) 0)
(+.f32 0 (log.f32 (/.f32 1/2 x)))
(*.f32 (log.f32 (/.f32 1/2 x)) 1)
(*.f32 1 (log.f32 (/.f32 1/2 x)))
Outputs
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 1/2) (*.f32 -1 (log.f32 x)))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 1/2) (log.f32 (/.f32 1 x)))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 1/2) (log.f32 (/.f32 1 x)))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 1/2) (log.f32 (/.f32 1 x)))
(+.f32 (log.f32 (/.f32 1 x)) (log.f32 1/2))
(+.f32 (log.f32 1/2) (log.f32 (/.f32 1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 -1/2) (log.f32 (/.f32 -1 x)))
(+.f32 (log.f32 (/.f32 1/2 x)) 0)
(+.f32 0 (log.f32 (/.f32 1/2 x)))
(+.f32 (log.f32 (/.f32 1/2 x)) 0)
(*.f32 (log.f32 (/.f32 1/2 x)) 1)
(*.f32 1 (log.f32 (/.f32 1/2 x)))
(*.f32 1 (log.f32 (/.f32 1/2 x)))

localize33.0ms (1.9%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(log.f32 (/.f32 1 x))
0.3b
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
Compiler

Compiled 29 to 24 computations (17.2% saved)

series32.0ms (1.8%)

Counts
2 → 16
Calls

6 calls:

TimeVariablePointExpression
17.0ms
x
@0
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
9.0ms
x
@-inf
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
5.0ms
x
@inf
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
0.0ms
x
@0
(log.f32 (/.f32 1 x))
0.0ms
x
@inf
(log.f32 (/.f32 1 x))

rewrite9.0ms (0.5%)

Algorithm
batch-egg-rewrite
Rules
30×bool.json-1
24×rational.json-simplify-2
24×rational.json-simplify-1
22×rational.json-1
22×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01238
15338
28038
38538
Stop Event
saturated
Counts
2 → 6
Calls
Call 1
Inputs
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(log.f32 (/.f32 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f32 (log.f32 (/.f32 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f32 0 (log.f32 (/.f32 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (log.f32 (/.f32 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 (log.f32 (/.f32 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x or (log.f32 (/.f32 1 x)) (log.f32 (/.f32 1 x)))))))

simplify6.0ms (0.4%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
028470
135470
Stop Event
saturated
Counts
22 → 11
Calls
Call 1
Inputs
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(*.f32 -1 (log.f32 x))
(*.f32 -1 (log.f32 x))
(*.f32 -1 (log.f32 x))
(*.f32 -1 (log.f32 x))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(*.f32 1 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))))
(*.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) 1)
(+.f32 (log.f32 (/.f32 1 x)) 0)
(+.f32 0 (log.f32 (/.f32 1 x)))
(*.f32 1 (log.f32 (/.f32 1 x)))
(*.f32 (log.f32 (/.f32 1 x)) 1)
Outputs
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (log.f32 x))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(+.f32 (log.f32 2) (*.f32 -1 (+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))))
(*.f32 -1 (log.f32 x))
(*.f32 (log.f32 x) -1)
(*.f32 -1 (log.f32 x))
(*.f32 (log.f32 x) -1)
(*.f32 -1 (log.f32 x))
(*.f32 (log.f32 x) -1)
(*.f32 -1 (log.f32 x))
(*.f32 (log.f32 x) -1)
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(+.f32 (log.f32 (/.f32 -1 x)) (log.f32 -1))
(*.f32 1 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))))
(*.f32 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))) 1)
(*.f32 1 (+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x)))))
(+.f32 (log.f32 (/.f32 1 x)) 0)
(+.f32 0 (log.f32 (/.f32 1 x)))
(+.f32 (log.f32 (/.f32 1 x)) 0)
(*.f32 1 (log.f32 (/.f32 1 x)))
(*.f32 (log.f32 (/.f32 1 x)) 1)
(*.f32 1 (log.f32 (/.f32 1 x)))

eval35.0ms (2%)

Compiler

Compiled 1470 to 1227 computations (16.5% saved)

prune13.0ms (0.7%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New88189
Fresh000
Picked101
Done044
Total89594
Error
0.0b
Counts
94 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.0b
(+.f32 (log.f32 2) (log.f32 x))
31.0b
(log.f32 (/.f32 1/2 x))
0.6b
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
15.0b
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
0.9b
(log.f32 (+.f32 x x))
Compiler

Compiled 37 to 27 computations (27% saved)

localize17.0ms (1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.3b
(+.f32 (log.f32 2) (log.f32 x))
Compiler

Compiled 12 to 8 computations (33.3% saved)

series7.0ms (0.4%)

Counts
1 → 8
Calls

3 calls:

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

rewrite8.0ms (0.4%)

Algorithm
batch-egg-rewrite
Rules
24×bool.json-1
20×rational.json-simplify-1
18×rational.json-1
18×rational.json-2
18×rational.json-simplify-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
13715
26315
36715
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(+.f32 (log.f32 2) (log.f32 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x *.f32 (+.f32 (log.f32 2) (log.f32 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f32 1 (+.f32 (log.f32 2) (log.f32 x)))))) (#(struct:change #<rule egg-rr> (2) ((x or (+.f32 (log.f32 2) (log.f32 x)) (+.f32 (log.f32 2) (log.f32 x)))))))

simplify6.0ms (0.4%)

Algorithm
egg-herbie
Rules
16×rational.json-simplify-1
rational.json-simplify-2
rational.json-simplify-33
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022298
130298
234298
336298
Stop Event
saturated
Counts
10 → 5
Calls
Call 1
Inputs
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(*.f32 (+.f32 (log.f32 2) (log.f32 x)) 1)
(*.f32 1 (+.f32 (log.f32 2) (log.f32 x)))
Outputs
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -1)))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -1)))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -1)))
(+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (+.f32 (log.f32 2) (log.f32 -1)))
(+.f32 (log.f32 2) (+.f32 (*.f32 -1 (log.f32 (/.f32 -1 x))) (log.f32 -1)))
(*.f32 (+.f32 (log.f32 2) (log.f32 x)) 1)
(*.f32 1 (+.f32 (log.f32 2) (log.f32 x)))
(*.f32 1 (+.f32 (log.f32 2) (log.f32 x)))

eval1.0ms (0.1%)

Compiler

Compiled 48 to 42 computations (12.5% saved)

prune2.0ms (0.1%)

Pruning

5 alts after pruning (0 fresh and 5 done)

PrunedKeptTotal
New505
Fresh000
Picked011
Done044
Total5510
Error
0.0b
Counts
10 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
1.0b
(+.f32 (log.f32 2) (log.f32 x))
31.0b
(log.f32 (/.f32 1/2 x))
0.6b
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
15.0b
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
0.9b
(log.f32 (+.f32 x x))
Compiler

Compiled 37 to 27 computations (27% saved)

regimes15.0ms (0.8%)

Counts
6 → 1
Calls
Call 1
Inputs
(log.f32 (+.f32 x x))
(log.f32 (/.f32 1/2 x))
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
(+.f32 (log.f32 2) (log.f32 x))
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
(+.f32 (log.f32 2) (*.f32 -1 (log.f32 (/.f32 1 x))))
Outputs
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
Calls

3 calls:

5.0ms
x
4.0ms
(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
4.0ms
(+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1)))
Results
ErrorSegmentsBranch
0.6b1x
0.6b1(log.f32 (+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1))))
0.6b1(+.f32 x (sqrt.f32 (-.f32 (*.f32 x x) 1)))
Compiler

Compiled 63 to 45 computations (28.6% saved)

regimes3.0ms (0.2%)

Accuracy

Total -30.1b remaining (-3264.9%)

Threshold costs -30.1b (-3264.9%)

Counts
2 → 1
Calls
Call 1
Inputs
(log.f32 (+.f32 x x))
(log.f32 (/.f32 1/2 x))
Outputs
(log.f32 (+.f32 x x))
Calls

1 calls:

3.0ms
x
Results
ErrorSegmentsBranch
0.9b1x
Compiler

Compiled 11 to 7 computations (36.4% saved)

simplify2.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01340
Stop Event
done
saturated
Calls
Call 1
Inputs
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
(log.f32 (+.f32 x x))
Outputs
(log.f32 (+.f32 x (-.f32 x (*.f32 1/2 (/.f32 1 x)))))
(log.f32 (+.f32 x x))
Compiler

Compiled 16 to 11 computations (31.3% saved)

soundness0.0ms (0%)

end28.0ms (1.6%)

Compiler

Compiled 15 to 10 computations (33.3% saved)

Profiling

Loading profile data...