Details

Time bar (total: 9.7s)

analyze424.0ms (4.4%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
0%0%99.9%0.1%0%0%0%3
0%0%99.9%0.1%0%0%0%4
0%0%99.9%0.1%0%0%0%5
0%0%99.9%0.1%0%0%0%6
8.3%6.2%68.6%0.1%0%25%0%7
12.5%9.4%65.5%0.1%0%25%0%8
18.8%14%60.8%0.1%0%25%0%9
33.8%21.1%41.3%0.1%0%37.4%0%10
39.4%24.6%37.8%0.1%0%37.4%0%11
45.9%28.7%33.7%0.1%0%37.4%0%12
Compiler

Compiled 14 to 11 computations (21.4% saved)

sample6.0s (62%)

Results
5.0s8256×body256valid
587.0ms2261×body256invalid
420.0ms545×body256infinite
Bogosity

preprocess4.0ms (0%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
02592
13792
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
(*.f64 (/.f64 1 2) (+.f64 y (*.f64 x (sqrt.f64 z))))
(*.f64 (/.f64 1 2) (+.f64 z (*.f64 y (sqrt.f64 x))))
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 z (sqrt.f64 y))))
Outputs
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
(*.f64 (/.f64 1 2) (+.f64 y (*.f64 x (sqrt.f64 z))))
(*.f64 1/2 (+.f64 y (*.f64 x (sqrt.f64 z))))
(*.f64 (/.f64 1 2) (+.f64 z (*.f64 y (sqrt.f64 x))))
(*.f64 1/2 (+.f64 z (*.f64 y (sqrt.f64 x))))
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 z (sqrt.f64 y))))
(*.f64 1/2 (+.f64 x (*.f64 z (sqrt.f64 y))))
Compiler

Compiled 16 to 13 computations (18.8% saved)

simplify13.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01423
11723
Stop Event
saturated
Counts
1 → 2
Calls
Call 1
Inputs
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
Outputs
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))

eval1.0ms (0%)

Compiler

Compiled 21 to 12 computations (42.9% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
0.1b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
Compiler

Compiled 11 to 8 computations (27.3% saved)

localize8.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(+.f64 x (*.f64 y (sqrt.f64 z)))
0.2b
(*.f64 y (sqrt.f64 z))
Compiler

Compiled 27 to 9 computations (66.7% saved)

series4.0ms (0%)

Counts
2 → 25
Calls

15 calls:

TimeVariablePointExpression
1.0ms
z
@0
(*.f64 y (sqrt.f64 z))
1.0ms
y
@0
(*.f64 y (sqrt.f64 z))
1.0ms
z
@-inf
(*.f64 y (sqrt.f64 z))
0.0ms
y
@inf
(*.f64 y (sqrt.f64 z))
0.0ms
z
@inf
(*.f64 y (sqrt.f64 z))

rewrite1.2s (12.3%)

Algorithm
batch-egg-rewrite
Rules
1790×rational.json-simplify-35
1548×rational.json-1
1548×rational.json-2
1548×rational.json-3
1252×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0928
15828
212128
324828
446128
5104828
6269728
7474228
8590628
9756828
Stop Event
node limit
Counts
2 → 37
Calls
Call 1
Inputs
(*.f64 y (sqrt.f64 z))
(+.f64 x (*.f64 y (sqrt.f64 z)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (sqrt.f64 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 z) (*.f64 y 1/2)) (*.f64 (sqrt.f64 z) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (sqrt.f64 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (sqrt.f64 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (sqrt.f64 z) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 z) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 z) (*.f64 y 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (sqrt.f64 z)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 y (sqrt.f64 z)) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)))))

simplify418.0ms (4.3%)

Algorithm
egg-herbie
Rules
3716×rational.json-simplify-41
2174×rational.json-simplify-2
1970×rational.json-simplify-35
810×rational.json-simplify-51
772×rational.json-simplify-53
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
082888
1195888
2601888
31610888
43060888
53931888
64362888
74538888
84656888
94755888
104852888
115210888
125395888
135544888
145599888
155707888
165802888
175816888
185816888
Stop Event
node limit
Counts
62 → 40
Calls
Call 1
Inputs
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) 0)
(+.f64 0 (*.f64 y (sqrt.f64 z)))
(+.f64 (*.f64 (sqrt.f64 z) (*.f64 y 1/2)) (*.f64 (sqrt.f64 z) (*.f64 y 1/2)))
(-.f64 (*.f64 y (sqrt.f64 z)) 0)
(/.f64 (*.f64 y (sqrt.f64 z)) 1)
(/.f64 (*.f64 y (*.f64 (sqrt.f64 z) 2)) 2)
(/.f64 (*.f64 (sqrt.f64 z) (*.f64 y 4)) 4)
(/.f64 (*.f64 (sqrt.f64 z) (*.f64 y 8)) 8)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))))) 256)
(pow.f64 (*.f64 y (sqrt.f64 z)) 1)
(-.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 0)
(*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)
(*.f64 1 (+.f64 (*.f64 y (sqrt.f64 z)) x))
(*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/4))
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4) 1/4)
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2))
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4))
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))
(/.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)
(/.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) 128)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)))))) 256)
(pow.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)
Outputs
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
x
(+.f64 (*.f64 y (sqrt.f64 z)) 0)
(*.f64 y (sqrt.f64 z))
(+.f64 0 (*.f64 y (sqrt.f64 z)))
(*.f64 y (sqrt.f64 z))
(+.f64 (*.f64 (sqrt.f64 z) (*.f64 y 1/2)) (*.f64 (sqrt.f64 z) (*.f64 y 1/2)))
(*.f64 y (sqrt.f64 z))
(-.f64 (*.f64 y (sqrt.f64 z)) 0)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 y (sqrt.f64 z)) 1)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 y (*.f64 (sqrt.f64 z) 2)) 2)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 (sqrt.f64 z) (*.f64 y 4)) 4)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 (sqrt.f64 z) (*.f64 y 8)) 8)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))) 16)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))) 32)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))) 64)
(*.f64 y (sqrt.f64 z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) 128)
(*.f64 y (sqrt.f64 z))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))))) 256)
(*.f64 y (sqrt.f64 z))
(pow.f64 (*.f64 y (sqrt.f64 z)) 1)
(*.f64 y (sqrt.f64 z))
(-.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 0)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 1 (+.f64 (*.f64 y (sqrt.f64 z)) x))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/2))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2) 1/2)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 4 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/4))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4) 1/4)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8) 1/8)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/2) 2)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1/4) 4)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(*.f64 1/8 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 2) 2)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 4) 4)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8) 8)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)) 16)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))) 32)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)))) 64)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) 128)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 8)))))) 256)
(+.f64 (*.f64 y (sqrt.f64 z)) x)
(pow.f64 (+.f64 (*.f64 y (sqrt.f64 z)) x) 1)
(+.f64 (*.f64 y (sqrt.f64 z)) x)

eval10.0ms (0.1%)

Compiler

Compiled 537 to 318 computations (40.8% saved)

prune6.0ms (0.1%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New38240
Fresh000
Picked011
Done000
Total38341
Error
0.1b
Counts
41 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
32.9b
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
30.4b
(*.f64 1/2 x)
Compiler

Compiled 26 to 20 computations (23.1% saved)

localize4.0ms (0%)

Compiler

Compiled 8 to 6 computations (25% saved)

localize9.0ms (0.1%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
0.2b
(*.f64 y (sqrt.f64 z))
Compiler

Compiled 18 to 8 computations (55.6% saved)

series2.0ms (0%)

Counts
1 → 0
Calls

6 calls:

TimeVariablePointExpression
1.0ms
z
@0
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
1.0ms
z
@-inf
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
0.0ms
z
@inf
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
0.0ms
y
@0
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
0.0ms
y
@-inf
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))

rewrite219.0ms (2.2%)

Algorithm
batch-egg-rewrite
Rules
2584×rational.json-simplify-2
1420×rational.json-simplify-35
1362×rational.json-1
1362×rational.json-2
1076×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0917
16017
213317
327417
449717
5108217
6230517
7389817
8472617
9570417
10648917
11648917
12774917
Stop Event
node limit
Counts
1 → 14
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 1/2 (*.f64 y (sqrt.f64 z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (sqrt.f64 z) (*.f64 y 1/4)) (*.f64 (sqrt.f64 z) (*.f64 y 1/4)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (sqrt.f64 z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (sqrt.f64 z) 2)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (sqrt.f64 z) 4)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (sqrt.f64 z) (*.f64 y 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 1)))))

simplify862.0ms (8.9%)

Algorithm
egg-herbie
Rules
3528×rational.json-simplify-35
3390×rational.json-simplify-2
1736×rational.json-simplify-53
908×exponential.json-simplify-26
718×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
046238
1124238
2253238
3583238
41698238
53041238
64056238
74592238
84772238
94893238
105012238
115129238
125613238
136026238
146295238
156501238
166517238
176517238
186517238
196633238
206749238
216865238
226981238
237097238
247213238
257640238
267989238
Stop Event
node limit
Counts
14 → 16
Calls
Call 1
Inputs
(+.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 0)
(+.f64 0 (*.f64 1/2 (*.f64 y (sqrt.f64 z))))
(+.f64 (*.f64 (sqrt.f64 z) (*.f64 y 1/4)) (*.f64 (sqrt.f64 z) (*.f64 y 1/4)))
(-.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 0)
(/.f64 (*.f64 y (sqrt.f64 z)) 2)
(/.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 1)
(/.f64 (*.f64 y (*.f64 (sqrt.f64 z) 2)) 4)
(/.f64 (*.f64 y (*.f64 (sqrt.f64 z) 4)) 8)
(/.f64 (*.f64 (sqrt.f64 z) (*.f64 y 8)) 16)
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) 256)
(pow.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 1)
Outputs
(+.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 0)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(+.f64 0 (*.f64 1/2 (*.f64 y (sqrt.f64 z))))
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(+.f64 (*.f64 (sqrt.f64 z) (*.f64 y 1/4)) (*.f64 (sqrt.f64 z) (*.f64 y 1/4)))
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(-.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 0)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 y (sqrt.f64 z)) 2)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 1)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 y (*.f64 (sqrt.f64 z) 2)) 4)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 y (*.f64 (sqrt.f64 z) 4)) 8)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 (sqrt.f64 z) (*.f64 y 8)) 16)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))) 32)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))) 64)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8))))) 128)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (sqrt.f64 z) (*.f64 y 8)))))) 256)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))
(pow.f64 (*.f64 1/2 (*.f64 y (sqrt.f64 z))) 1)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 (sqrt.f64 z) (*.f64 1/2 y))

eval87.0ms (0.9%)

Compiler

Compiled 328 to 219 computations (33.2% saved)

prune5.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New30030
Fresh000
Picked011
Done022
Total30333
Error
0.1b
Counts
33 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.1b
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
32.9b
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
30.4b
(*.f64 1/2 x)
Compiler

Compiled 26 to 20 computations (23.1% saved)

regimes274.0ms (2.8%)

Counts
4 → 1
Calls
Call 1
Inputs
(*.f64 1/2 x)
(*.f64 1/2 (*.f64 y (sqrt.f64 z)))
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
Outputs
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
Calls

7 calls:

247.0ms
(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
5.0ms
(sqrt.f64 z)
5.0ms
y
4.0ms
(+.f64 x (*.f64 y (sqrt.f64 z)))
4.0ms
z
Results
ErrorSegmentsBranch
0.1b1x
0.1b1y
0.1b1z
0.1b1(*.f64 (/.f64 1 2) (+.f64 x (*.f64 y (sqrt.f64 z))))
0.1b1(+.f64 x (*.f64 y (sqrt.f64 z)))
0.1b1(*.f64 y (sqrt.f64 z))
0.1b1(sqrt.f64 z)
Compiler

Compiled 76 to 50 computations (34.2% saved)

regimes85.0ms (0.9%)

Accuracy

Total -46.9b remaining (-315.7%)

Threshold costs -46.9b (-315.7%)

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

5 calls:

22.0ms
(sqrt.f64 z)
22.0ms
z
16.0ms
y
13.0ms
x
10.0ms
(*.f64 y (sqrt.f64 z))
Results
ErrorSegmentsBranch
15.0b3x
15.9b5y
20.1b8z
14.8b3(*.f64 y (sqrt.f64 z))
20.1b8(sqrt.f64 z)
Compiler

Compiled 36 to 27 computations (25% saved)

bsearch27.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
9.0ms
4.6048100720518086e-61
1.7042544479093976e-60
18.0ms
-9.963444456290724e+132
-1.2808970757807584e+103
Results
23.0ms256×body256valid
Compiler

Compiled 243 to 207 computations (14.8% saved)

simplify3.0ms (0%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022109
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
(if (<=.f64 (*.f64 y (sqrt.f64 z)) -379999999999999988931481193626165194181493966782064033589011867828327315763626385054047628211625657434409795584) (*.f64 1/2 (*.f64 y (sqrt.f64 z))) (if (<=.f64 (*.f64 y (sqrt.f64 z)) 497544133441593/452312848583266388373324160190187140051835877600158453279131187530910662656) (*.f64 1/2 x) (*.f64 1/2 (*.f64 y (sqrt.f64 z)))))
(*.f64 1/2 x)
Outputs
(*.f64 1/2 (+.f64 x (*.f64 y (sqrt.f64 z))))
(if (<=.f64 (*.f64 y (sqrt.f64 z)) -379999999999999988931481193626165194181493966782064033589011867828327315763626385054047628211625657434409795584) (*.f64 1/2 (*.f64 y (sqrt.f64 z))) (if (<=.f64 (*.f64 y (sqrt.f64 z)) 497544133441593/452312848583266388373324160190187140051835877600158453279131187530910662656) (*.f64 1/2 x) (*.f64 1/2 (*.f64 y (sqrt.f64 z)))))
(*.f64 1/2 x)
Compiler

Compiled 49 to 30 computations (38.8% saved)

soundness10.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01423
11723
Stop Event
saturated
Compiler

Compiled 21 to 12 computations (42.9% saved)

end24.0ms (0.2%)

Compiler

Compiled 43 to 22 computations (48.8% saved)

Profiling

Loading profile data...