Details

Time bar (total: 5.1s)

analyze7.0ms (0.1%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
75%75%25%0%0%0%0%4
87.5%87.5%12.5%0%0%0%0%5
93.8%93.7%6.2%0%0%0%0%6
96.9%96.8%3.1%0%0%0%0%7
98.4%98.4%1.6%0%0%0%0%8
99.2%99.2%0.8%0%0%0%0%9
99.6%99.6%0.4%0%0%0%0%10
99.8%99.8%0.2%0%0%0%0%11
99.9%99.9%0.1%0%0%0%0%12
Compiler

Compiled 10 to 8 computations (20% saved)

sample882.0ms (17.4%)

Results
872.0ms8256×body256valid
Bogosity

preprocess11.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0823
011
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
Outputs
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
Compiler

Compiled 10 to 8 computations (20% saved)

simplify8.0ms (0.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0823
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
Outputs
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))

eval0.0ms (0%)

Compiler

Compiled 9 to 7 computations (22.2% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 9 to 7 computations (22.2% saved)

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
30.8b
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
Compiler

Compiled 21 to 15 computations (28.6% saved)

series4.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

TimeVariablePointExpression
2.0ms
x
@-inf
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
0.0ms
x
@0
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
0.0ms
x
@inf
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
0.0ms
x
@inf
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
0.0ms
x
@0
(+.f64 (pow.f64 x 2) (pow.f64 x 2))

rewrite264.0ms (5.2%)

Algorithm
batch-egg-rewrite
Rules
3334×rational.json-simplify-35
2006×rational.json-simplify-2
1100×exponential.json-3
1100×rational.json-1
1100×rational.json-2
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0842
15030
210630
320030
436630
579730
6190530
7318230
8383130
9458530
10548230
11596130
12596130
13649530
14665330
15715330
Stop Event
node limit
Counts
2 → 57
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) 1024)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))))) 2048)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (pow.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (pow.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 x 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (pow.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 2 (pow.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (pow.f64 x 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 8) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (pow.f64 x 2) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 8 (*.f64 (pow.f64 x 2) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 16) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 1/2) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (pow.f64 x 2) 8))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 x 2) 1/4) 8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (pow.f64 x 2) 16))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 16) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 16)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) 1024)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))))) 2048)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (pow.f64 x 2)) 1)))))

simplify638.0ms (12.6%)

Algorithm
egg-herbie
Rules
3902×rational.json-simplify-1
2808×rational.json-simplify-41
1972×rational.json-simplify-35
1262×rational.json-simplify-2
1100×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01091169
12491161
27011161
317241161
428101161
533521161
634661161
735311161
835891161
936461161
1058631161
1159621161
1260791161
1361471161
1462091161
1562701161
1663281161
1763861161
1864431161
1965001161
2065571161
2165571161
Stop Event
node limit
Counts
81 → 63
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(+.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(+.f64 0 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(+.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(-.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(*.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 1/2)
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 1/4)
(*.f64 1/2 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 1/8)
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) 2)
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4) 4)
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(/.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 2)
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 4)
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))) 512)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) 1024)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))))) 2048)
(pow.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(-.f64 (*.f64 2 (pow.f64 x 2)) 0)
(*.f64 2 (pow.f64 x 2))
(*.f64 (pow.f64 x 2) 2)
(*.f64 (*.f64 2 (pow.f64 x 2)) 1)
(*.f64 1 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (pow.f64 x 2) 4) 1/2)
(*.f64 4 (*.f64 (pow.f64 x 2) 1/2))
(*.f64 (*.f64 (pow.f64 x 2) 8) 1/4)
(*.f64 1/2 (*.f64 (pow.f64 x 2) 4))
(*.f64 8 (*.f64 (pow.f64 x 2) 1/4))
(*.f64 (*.f64 (pow.f64 x 2) 16) 1/8)
(*.f64 (*.f64 (pow.f64 x 2) 1/2) 4)
(*.f64 1/4 (*.f64 (pow.f64 x 2) 8))
(*.f64 (*.f64 (pow.f64 x 2) 1/4) 8)
(*.f64 1/8 (*.f64 (pow.f64 x 2) 16))
(/.f64 (*.f64 2 (pow.f64 x 2)) 1)
(/.f64 (*.f64 (pow.f64 x 2) 4) 2)
(/.f64 (*.f64 (pow.f64 x 2) 8) 4)
(/.f64 (*.f64 (pow.f64 x 2) 16) 8)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 16)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))) 512)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) 1024)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))))) 2048)
(pow.f64 (*.f64 2 (pow.f64 x 2)) 1)
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (*.f64 (sqrt.f64 2) x) -1)
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (*.f64 (sqrt.f64 2) x) -1)
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (*.f64 (sqrt.f64 2) x) -1)
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (*.f64 (sqrt.f64 2) x) -1)
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(+.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(+.f64 0 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(-.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 1/2)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 1/4)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1/2 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 1/8)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) 2)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4) 4)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 2)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 4)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 8)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)) 16)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))) 32)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))) 64)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) 128)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))) 256)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))) 512)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) 1024)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))))) 2048)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(pow.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(-.f64 (*.f64 2 (pow.f64 x 2)) 0)
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 (pow.f64 x 2) 2)
(*.f64 2 (pow.f64 x 2))
(*.f64 (*.f64 2 (pow.f64 x 2)) 1)
(*.f64 2 (pow.f64 x 2))
(*.f64 1 (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(*.f64 (*.f64 (pow.f64 x 2) 4) 1/2)
(*.f64 2 (pow.f64 x 2))
(*.f64 4 (*.f64 (pow.f64 x 2) 1/2))
(*.f64 2 (pow.f64 x 2))
(*.f64 (*.f64 (pow.f64 x 2) 8) 1/4)
(*.f64 2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 (pow.f64 x 2) 4))
(*.f64 2 (pow.f64 x 2))
(*.f64 8 (*.f64 (pow.f64 x 2) 1/4))
(*.f64 2 (pow.f64 x 2))
(*.f64 (*.f64 (pow.f64 x 2) 16) 1/8)
(*.f64 2 (pow.f64 x 2))
(*.f64 (*.f64 (pow.f64 x 2) 1/2) 4)
(*.f64 2 (pow.f64 x 2))
(*.f64 1/4 (*.f64 (pow.f64 x 2) 8))
(*.f64 2 (pow.f64 x 2))
(*.f64 (*.f64 (pow.f64 x 2) 1/4) 8)
(*.f64 2 (pow.f64 x 2))
(*.f64 1/8 (*.f64 (pow.f64 x 2) 16))
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (pow.f64 x 2)) 1)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 4) 2)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 8) 4)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 16) 8)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 16)) 16)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))) 32)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))) 64)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))) 128)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))) 256)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))) 512)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) 1024)
(*.f64 2 (pow.f64 x 2))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))))) 2048)
(*.f64 2 (pow.f64 x 2))
(pow.f64 (*.f64 2 (pow.f64 x 2)) 1)
(*.f64 2 (pow.f64 x 2))

eval142.0ms (2.8%)

Compiler

Compiled 719 to 653 computations (9.2% saved)

prune8.0ms (0.2%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New60363
Fresh000
Picked101
Done000
Total61364
Error
0.2b
Counts
64 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
32.5b
(*.f64 (sqrt.f64 2) (neg.f64 x))
30.5b
(*.f64 (sqrt.f64 2) x)
31.9b
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
Compiler

Compiled 18 to 15 computations (16.7% saved)

localize8.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 (pow.f64 x 2) 2)
30.8b
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
Compiler

Compiled 17 to 13 computations (23.5% saved)

series1.0ms (0%)

Counts
2 → 24
Calls

6 calls:

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

rewrite317.0ms (6.3%)

Algorithm
batch-egg-rewrite
Rules
3126×rational.json-simplify-35
1872×rational.json-simplify-2
1260×rational.json-simplify-1
1138×exponential.json-3
1138×rational.json-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0830
15130
210730
320030
435230
578030
6183030
7306030
8367130
9434530
10514430
11556330
12556330
13603430
14603430
15662430
16749530
17798330
Stop Event
node limit
Counts
2 → 48
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
(*.f64 (pow.f64 x 2) 2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) 1024)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))))) 2048)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (pow.f64 x 2) (pow.f64 x 2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 2 (pow.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 2 (pow.f64 x 2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 2) 1/2) (*.f64 (pow.f64 x 2) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (pow.f64 x 2) 3/2) (*.f64 (pow.f64 x 2) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 2 (pow.f64 x 2)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (pow.f64 x 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 8) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (pow.f64 x 2) 16) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 16)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) 1024)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))))) 2048)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (pow.f64 x 2)) 1)))))

simplify367.0ms (7.3%)

Algorithm
egg-herbie
Rules
4028×rational.json-simplify-51
3042×rational.json-simplify-41
1998×rational.json-simplify-35
1436×rational.json-simplify-2
752×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01021052
12471044
26391044
319501044
433531044
537411044
638141044
738851044
839451044
940041044
1043531044
1144121044
1244711044
1345301044
1445891044
1546481044
1647071044
1747661044
1848251044
1948841044
Stop Event
node limit
Counts
72 → 54
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(+.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(+.f64 0 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(+.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(-.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(*.f64 1 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(*.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 1/2)
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 1/4)
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 1/8)
(*.f64 1/2 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))))
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) 2)
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4) 4)
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(/.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 2)
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 4)
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))) 512)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) 1024)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))))) 2048)
(pow.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) 0)
(+.f64 0 (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (pow.f64 x 2) 1/2) (*.f64 (pow.f64 x 2) 3/2))
(+.f64 (*.f64 (pow.f64 x 2) 3/2) (*.f64 (pow.f64 x 2) 1/2))
(-.f64 (*.f64 2 (pow.f64 x 2)) 0)
(/.f64 (*.f64 2 (pow.f64 x 2)) 1)
(/.f64 (*.f64 (pow.f64 x 2) 4) 2)
(/.f64 (*.f64 (pow.f64 x 2) 8) 4)
(/.f64 (*.f64 (pow.f64 x 2) 16) 8)
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 16)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))) 512)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) 1024)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))))) 2048)
(pow.f64 (*.f64 2 (pow.f64 x 2)) 1)
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (*.f64 x -1))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(+.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(+.f64 0 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(+.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(-.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 0)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1 (sqrt.f64 (*.f64 2 (pow.f64 x 2))))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 1/2)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 1/4)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 1/8)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1/2 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1/4 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/2) 2)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1/4) 4)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(*.f64 1/8 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (sqrt.f64 (*.f64 2 (pow.f64 x 2)))) 2)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 4) 4)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8) 8)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)) 16)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))) 32)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))) 64)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))) 128)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))) 256)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))) 512)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8)))))))) 1024)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 8))))))))) 2048)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(pow.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 2))) 1)
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 2 (pow.f64 x 2)) 0)
(*.f64 2 (pow.f64 x 2))
(+.f64 0 (*.f64 2 (pow.f64 x 2)))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 (pow.f64 x 2) 1/2) (*.f64 (pow.f64 x 2) 3/2))
(*.f64 2 (pow.f64 x 2))
(+.f64 (*.f64 (pow.f64 x 2) 3/2) (*.f64 (pow.f64 x 2) 1/2))
(*.f64 2 (pow.f64 x 2))
(-.f64 (*.f64 2 (pow.f64 x 2)) 0)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (pow.f64 x 2)) 1)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 4) 2)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 8) 4)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 (pow.f64 x 2) 16) 8)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 (pow.f64 x 2) 16)) 16)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))) 32)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))) 64)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))) 128)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))) 256)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))) 512)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16)))))))) 1024)
(*.f64 2 (pow.f64 x 2))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (pow.f64 x 2) 16))))))))) 2048)
(*.f64 2 (pow.f64 x 2))
(pow.f64 (*.f64 2 (pow.f64 x 2)) 1)
(*.f64 2 (pow.f64 x 2))

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 9 to 7 computations (22.2% saved)

series0.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite224.0ms (4.4%)

Algorithm
batch-egg-rewrite
Rules
1740×rational.json-simplify-35
1606×rational.json-1
1606×rational.json-2
1508×rational.json-simplify-53
1262×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
14511
29511
318311
432311
570511
6168011
7291011
8383211
9497511
10612411
11708311
12708311
13771011
Stop Event
node limit
Counts
1 → 15
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) (*.f64 x 1/2)) (*.f64 (sqrt.f64 2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sqrt.f64 2) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 2) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 (sqrt.f64 2) x)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 8 (*.f64 x 4))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))))) 512)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2) x) 1)))))

simplify1.0s (20.6%)

Algorithm
egg-herbie
Rules
3900×rational.json-simplify-35
2832×rational.json-simplify-2
1574×rational.json-simplify-53
960×exponential.json-simplify-26
930×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047165
1136165
2291165
3819165
42034165
53334165
64237165
74530165
84672165
94779165
104886165
115468165
125747165
135965165
146156165
156258165
166405165
176484165
186484165
196591165
206698165
216805165
226921165
237028165
247135165
257466165
267573165
277680165
287787165
297894165
Stop Event
node limit
Counts
15 → 16
Calls
Call 1
Inputs
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(+.f64 0 (*.f64 (sqrt.f64 2) x))
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x 1/2)) (*.f64 (sqrt.f64 2) (*.f64 x 1/2)))
(-.f64 (*.f64 (sqrt.f64 2) x) 0)
(/.f64 (*.f64 (sqrt.f64 2) x) 1)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) x)) 2)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 4)) 4)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))) 128)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) x)) 16)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 8 (*.f64 x 4))) 32)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))))) 256)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))))) 512)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
Outputs
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(+.f64 0 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x 1/2)) (*.f64 (sqrt.f64 2) (*.f64 x 1/2)))
(*.f64 (sqrt.f64 2) x)
(-.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) x) 1)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) x)) 2)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 4)) 4)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x 8)) 8)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))) 128)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) x)) 16)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 8 (*.f64 x 4))) 32)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))) 64)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4))))) 256)
(*.f64 (sqrt.f64 2) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (sqrt.f64 2) (*.f64 x 4)))))) 512)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(*.f64 (sqrt.f64 2) x)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 2) (neg.f64 x))
Compiler

Compiled 12 to 8 computations (33.3% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite126.0ms (2.5%)

Algorithm
batch-egg-rewrite
Rules
1910×rational.json-simplify-35
1610×rational.json-1
1610×rational.json-2
1610×rational.json-4
1610×rational.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0815
15515
212515
326015
451215
5121815
6258615
7447415
8572815
9732015
Stop Event
node limit
Counts
1 → 25
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) (neg.f64 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (sqrt.f64 2) (neg.f64 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (sqrt.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (-.f64 1 (+.f64 (*.f64 (sqrt.f64 2) x) -1)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 2) (*.f64 x -1/2)) (*.f64 (sqrt.f64 2) (*.f64 x -1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (sqrt.f64 2) x))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 -1 (+.f64 (*.f64 (sqrt.f64 2) x) -1))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (*.f64 x -4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) x) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -8 (*.f64 (sqrt.f64 2) x)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 2) (+.f64 x x)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x))) -4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x)))) -8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (sqrt.f64 2) x))))))

simplify277.0ms (5.5%)

Algorithm
egg-herbie
Rules
2282×rational.json-simplify-2
1868×rational.json-simplify-35
1724×rational.json-simplify-1
1168×rational.json-simplify-41
1086×rational.json-simplify-53
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068577
1174577
2373577
3909577
42522577
54652577
65254577
75617577
85876577
96143577
106179577
117445577
127883577
Stop Event
node limit
Counts
37 → 30
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(+.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(+.f64 0 (*.f64 (sqrt.f64 2) (neg.f64 x)))
(+.f64 -1 (-.f64 1 (*.f64 (sqrt.f64 2) x)))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (sqrt.f64 2) x) -1)))
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x -1/2)) (*.f64 (sqrt.f64 2) (*.f64 x -1/2)))
(+.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) -1)
(-.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(-.f64 0 (*.f64 (sqrt.f64 2) x))
(-.f64 -1 (+.f64 (*.f64 (sqrt.f64 2) x) -1))
(-.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(/.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -2)) 2)
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -4)) 4)
(/.f64 (*.f64 (sqrt.f64 2) x) -1)
(/.f64 (*.f64 -8 (*.f64 (sqrt.f64 2) x)) 8)
(/.f64 (*.f64 (sqrt.f64 2) (+.f64 x x)) -2)
(/.f64 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))) 16)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x))) -4)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x)))) -8)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))))) 256)
(pow.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(neg.f64 (*.f64 (sqrt.f64 2) x))
Outputs
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 0 (*.f64 (sqrt.f64 2) (neg.f64 x)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 -1 (-.f64 1 (*.f64 (sqrt.f64 2) x)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 -2 (-.f64 1 (+.f64 (*.f64 (sqrt.f64 2) x) -1)))
(+.f64 -2 (-.f64 1 (+.f64 -1 (*.f64 (sqrt.f64 2) x))))
(+.f64 (*.f64 (sqrt.f64 2) (*.f64 x -1/2)) (*.f64 (sqrt.f64 2) (*.f64 x -1/2)))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(+.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) -1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 0)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 0 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 -1 (+.f64 (*.f64 (sqrt.f64 2) x) -1))
(-.f64 -1 (+.f64 -1 (*.f64 (sqrt.f64 2) x)))
(-.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) -1))
(-.f64 (-.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -2)) 2)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (*.f64 x -4)) 4)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) x) -1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 -8 (*.f64 (sqrt.f64 2) x)) 8)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 (sqrt.f64 2) (+.f64 x x)) -2)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))) 16)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x))) -4)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))) 32)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 2) (+.f64 x x)))) -8)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))) 64)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) 128)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 -8 (*.f64 (sqrt.f64 2) x))))))) 256)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(pow.f64 (*.f64 (sqrt.f64 2) (neg.f64 x)) 1)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))

eval22.0ms (0.4%)

Compiler

Compiled 1043 to 925 computations (11.3% saved)

prune75.0ms (1.5%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New1000100
Fresh000
Picked011
Done022
Total1003103
Error
0.2b
Counts
103 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
32.5b
(*.f64 (sqrt.f64 2) (neg.f64 x))
30.5b
(*.f64 (sqrt.f64 2) x)
31.9b
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
Compiler

Compiled 18 to 15 computations (16.7% saved)

regimes31.0ms (0.6%)

Accuracy

Total -62.2b remaining (-13839.1%)

Threshold costs -62.2b (-13839.1%)

Counts
4 → 2
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) (neg.f64 x))
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
Outputs
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 (sqrt.f64 2) x)
Calls

4 calls:

9.0ms
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
7.0ms
(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
7.0ms
(pow.f64 x 2)
7.0ms
x
Results
ErrorSegmentsBranch
0.4b2x
14.4b3(sqrt.f64 (+.f64 (pow.f64 x 2) (pow.f64 x 2)))
14.4b3(+.f64 (pow.f64 x 2) (pow.f64 x 2))
14.4b3(pow.f64 x 2)
Compiler

Compiled 47 to 36 computations (23.4% saved)

bsearch18.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
18.0ms
-1.0079072536098313e-305
3.603476287487585e-298
Results
16.0ms160×body256valid
Compiler

Compiled 143 to 120 computations (16.1% saved)

simplify2.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01546
Stop Event
done
saturated
Calls
Call 1
Inputs
(if (<=.f64 x -2024022533073/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392) (*.f64 (sqrt.f64 2) (neg.f64 x)) (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
Outputs
(if (<=.f64 x -2024022533073/101201126653655309176247673359458653524778324882071059178450679013715169783997673445980191850718562247593538932158405955694904368692896738433506699970369254960758712138283180682233453871046608170619883839236372534281003741712346349309051677824579778170405028256179384776166707307615251266093163754323003131653853870546747392) (*.f64 (sqrt.f64 2) (neg.f64 x)) (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 19 to 15 computations (21.1% saved)

soundness508.0ms (10%)

Algorithm
egg-herbie
Rules
3902×rational.json-simplify-1
2808×rational.json-simplify-41
1972×rational.json-simplify-35
1262×rational.json-simplify-2
1100×rational.json-simplify-51
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01091169
12491161
27011161
317241161
428101161
533521161
634661161
735311161
835891161
936461161
1058631161
1159621161
1260791161
1361471161
1462091161
1562701161
1663281161
1763861161
1864431161
1965001161
2065571161
2165571161
Stop Event
node limit
Compiler

Compiled 18 to 15 computations (16.7% saved)

end56.0ms (1.1%)

Compiler

Compiled 18 to 14 computations (22.2% saved)

Profiling

Loading profile data...