Details

Time bar (total: 9.4s)

analyze385.0ms (4.1%)

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
12.5%12.5%87.4%0.1%0%0%0%7
18.8%18.7%81.1%0.1%0%0%0%8
28.1%28.1%71.8%0.1%0%0%0%9
36.7%34.3%59.3%0.1%6.2%0%0%10
44.2%40.6%51.3%0.1%8%0%0%11
52.6%48%43.2%0.1%8.7%0%0%12
Compiler

Compiled 11 to 7 computations (36.4% saved)

sample3.7s (39%)

Results
3.1s8256×body256valid
616.0ms1258×body256infinite
Bogosity

preprocess11.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01776
12576
033
Stop Event
saturated
saturated
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(+.f64 x (*.f64 (-.f64 y x) z))
(+.f64 y (*.f64 (-.f64 x y) z))
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 x (*.f64 (-.f64 z x) y))
Outputs
(+.f64 x (*.f64 (-.f64 y x) z))
(+.f64 y (*.f64 (-.f64 x y) z))
(+.f64 y (*.f64 z (-.f64 x y)))
(+.f64 z (*.f64 (-.f64 y z) x))
(+.f64 z (*.f64 x (-.f64 y z)))
(+.f64 x (*.f64 (-.f64 z x) y))
(+.f64 x (*.f64 y (-.f64 z x)))
Compiler

Compiled 13 to 9 computations (30.8% saved)

simplify10.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
11019
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(+.f64 x (*.f64 (-.f64 y x) z))
Outputs
(+.f64 x (*.f64 (-.f64 y x) z))

eval0.0ms (0%)

Compiler

Compiled 10 to 6 computations (40% saved)

prune1.0ms (0%)

Pruning

2 alts after pruning (2 fresh and 0 done)

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

Compiled 10 to 6 computations (40% saved)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series4.0ms (0%)

Counts
2 → 60
Calls

18 calls:

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

rewrite119.0ms (1.3%)

Algorithm
batch-egg-rewrite
Rules
1812×rational.json-1
1576×rational.json-simplify-35
1284×rational.json-2
1284×rational.json-3
1276×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0832
15232
211432
324832
447432
5111532
6317732
7588132
8787432
Stop Event
node limit
Counts
2 → 34
Calls
Call 1
Inputs
(*.f64 (-.f64 y x) z)
(+.f64 x (*.f64 (-.f64 y x) z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 y x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 y x) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 y x) (*.f64 z 1/2)) (*.f64 (-.f64 y x) (*.f64 z 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 y x) z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y x) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y x) (+.f64 z z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y x) (*.f64 z 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 y x) (*.f64 z 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 y x) z) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 (-.f64 y x) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)))))

simplify609.0ms (6.5%)

Algorithm
egg-herbie
Rules
3752×rational.json-simplify-41
2478×rational.json-simplify-35
2100×rational.json-simplify-2
764×rational.json-simplify-53
676×exponential.json-simplify-26
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0911912
12101666
25441666
314281622
426851622
533841622
637801622
741561622
843981622
945541622
1046871622
1150961622
1252681622
1353361622
1453931622
1555101622
1656071622
1756751622
1858101622
1959431622
Stop Event
node limit
Counts
94 → 62
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(*.f64 y z)
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 z 1) x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 z 1) x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 z 1) x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(*.f64 y z)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
x
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) x)
(*.f64 (-.f64 y x) z)
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) x)
(*.f64 (-.f64 y x) z)
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 (*.f64 (-.f64 y x) z) 0)
(+.f64 0 (*.f64 (-.f64 y x) z))
(+.f64 (*.f64 (-.f64 y x) (*.f64 z 1/2)) (*.f64 (-.f64 y x) (*.f64 z 1/2)))
(-.f64 (*.f64 (-.f64 y x) z) 0)
(/.f64 (*.f64 (-.f64 y x) z) 1)
(/.f64 (*.f64 (-.f64 y x) (+.f64 z z)) 2)
(/.f64 (*.f64 (-.f64 y x) (*.f64 z 4)) 4)
(/.f64 (*.f64 (-.f64 y x) (*.f64 z 8)) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8)))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8)))))) 128)
(pow.f64 (*.f64 (-.f64 y x) z) 1)
(-.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 0)
(*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)
(*.f64 1 (+.f64 x (*.f64 (-.f64 y x) z)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/4))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/4) 4)
(/.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8))))) 128)
(pow.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)
Outputs
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 z x)))
(+.f64 (*.f64 -1 (*.f64 z x)) (*.f64 z y))
(*.f64 z (+.f64 y (neg.f64 x)))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(*.f64 (+.f64 (*.f64 -1 z) 1) x)
(*.f64 x (+.f64 (*.f64 -1 z) 1))
(*.f64 x (+.f64 (neg.f64 z) 1))
(*.f64 x (-.f64 1 z))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 y z) (*.f64 (+.f64 (*.f64 -1 z) 1) x))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(*.f64 -1 (*.f64 (-.f64 z 1) x))
(*.f64 x (+.f64 (*.f64 -1 z) 1))
(*.f64 x (+.f64 (neg.f64 z) 1))
(*.f64 x (-.f64 1 z))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 z 1) x)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 z 1) x)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 y z) (*.f64 -1 (*.f64 (-.f64 z 1) x)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (*.f64 -1 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (+.f64 (neg.f64 z) 1)))
(+.f64 (*.f64 z y) (*.f64 x (-.f64 1 z)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(*.f64 y z)
(*.f64 z y)
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
(+.f64 (*.f64 y z) (+.f64 (*.f64 -1 (*.f64 z x)) x))
(+.f64 (*.f64 -1 (*.f64 z x)) (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 z (+.f64 y (neg.f64 x))))
x
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (-.f64 y x) z)
(*.f64 z (-.f64 y x))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (-.f64 y x) z)
(*.f64 z (-.f64 y x))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) x)
(+.f64 x (*.f64 z (-.f64 y x)))
(+.f64 (*.f64 (-.f64 y x) z) 0)
(*.f64 z (-.f64 y x))
(+.f64 0 (*.f64 (-.f64 y x) z))
(*.f64 z (-.f64 y x))
(+.f64 (*.f64 (-.f64 y x) (*.f64 z 1/2)) (*.f64 (-.f64 y x) (*.f64 z 1/2)))
(*.f64 z (-.f64 y x))
(-.f64 (*.f64 (-.f64 y x) z) 0)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 (-.f64 y x) z) 1)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 (-.f64 y x) (+.f64 z z)) 2)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 (-.f64 y x) (*.f64 z 4)) 4)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 (-.f64 y x) (*.f64 z 8)) 8)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))) 16)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8)))) 32)
(*.f64 z (-.f64 y x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))))) 64)
(*.f64 z (-.f64 y x))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8))))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 y x) (*.f64 z 8)))))) 128)
(*.f64 z (-.f64 y x))
(pow.f64 (*.f64 (-.f64 y x) z) 1)
(*.f64 z (-.f64 y x))
(-.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 0)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 1 (+.f64 x (*.f64 (-.f64 y x) z)))
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/2))
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2) 1/2)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 4 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/4))
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4) 1/4)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8) 1/8)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2))
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/2) 2)
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4))
(+.f64 x (*.f64 z (-.f64 y x)))
(*.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1/4) 4)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 2) 2)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 4) 4)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8) 8)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)) 16)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8))) 32)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)))) 64)
(+.f64 x (*.f64 z (-.f64 y x)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 8))))) 128)
(+.f64 x (*.f64 z (-.f64 y x)))
(pow.f64 (+.f64 x (*.f64 (-.f64 y x) z)) 1)
(+.f64 x (*.f64 z (-.f64 y x)))

eval10.0ms (0.1%)

Compiler

Compiled 641 to 285 computations (55.5% saved)

prune10.0ms (0.1%)

Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New57562
Fresh000
Picked101
Done000
Total58563
Error
0.0b
Counts
63 → 5
Alt Table
Click to see full alt table
StatusErrorProgram
25.3b
(+.f64 x (*.f64 z (neg.f64 x)))
10.6b
(+.f64 x (*.f64 z y))
27.2b
(*.f64 (-.f64 y x) z)
25.3b
(*.f64 x (-.f64 1 z))
35.5b
x
Compiler

Compiled 37 to 25 computations (32.4% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 x (-.f64 1 z))
Compiler

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite183.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
1616×rational.json-simplify-35
1384×exponential.json-3
1384×rational.json-1
1384×rational.json-2
1384×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
15513
212813
323813
442813
591213
6233713
7422313
8529813
9655813
10765813
11784013
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(*.f64 x (-.f64 1 z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (-.f64 1 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (-.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 x (+.f64 z -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (*.f64 (-.f64 1 z) 1/2)) (*.f64 x (*.f64 (-.f64 1 z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 1 z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 x (+.f64 z -1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 1 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 z) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 z) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 (-.f64 1 z) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 z -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (-.f64 1 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (+.f64 z -1)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)))))))

simplify375.0ms (4%)

Algorithm
egg-herbie
Rules
2116×rational.json-simplify-35
2022×rational.json-simplify-2
1882×rational.json-simplify-53
1064×rational.json-simplify-1
986×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
065640
1170618
2334618
3768618
42586618
54337618
64977618
75181618
85337618
95512618
106382618
117572618
127697618
137748618
147772618
157790618
167929618
Stop Event
node limit
Counts
46 → 29
Calls
Call 1
Inputs
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(*.f64 -1 (*.f64 z x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 (*.f64 x (-.f64 1 z)) 0)
(+.f64 0 (*.f64 x (-.f64 1 z)))
(+.f64 -1 (-.f64 1 (*.f64 x (+.f64 z -1))))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2))))
(+.f64 (*.f64 x (*.f64 (-.f64 1 z) 1/2)) (*.f64 x (*.f64 (-.f64 1 z) 1/2)))
(-.f64 (*.f64 x (-.f64 1 z)) 0)
(-.f64 0 (*.f64 x (+.f64 z -1)))
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)))
(/.f64 (*.f64 x (-.f64 1 z)) 1)
(/.f64 (*.f64 x (*.f64 (-.f64 1 z) 2)) 2)
(/.f64 (*.f64 x (*.f64 (-.f64 1 z) 4)) 4)
(/.f64 (*.f64 x (*.f64 (-.f64 1 z) 8)) 8)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8)))) 32)
(/.f64 (*.f64 x (+.f64 z -1)) -1)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))))))) 256)
(pow.f64 (*.f64 x (-.f64 1 z)) 1)
(neg.f64 (*.f64 x (+.f64 z -1)))
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)))
Outputs
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
(*.f64 (-.f64 1 z) x)
x
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(*.f64 -1 (*.f64 z x))
(*.f64 z (neg.f64 x))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 -1 (*.f64 z x)) x)
(+.f64 x (*.f64 -1 (*.f64 z x)))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 (*.f64 x (-.f64 1 z)) 0)
(*.f64 (-.f64 1 z) x)
(+.f64 0 (*.f64 x (-.f64 1 z)))
(*.f64 (-.f64 1 z) x)
(+.f64 -1 (-.f64 1 (*.f64 x (+.f64 z -1))))
(*.f64 (-.f64 1 z) x)
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2))))
(*.f64 (-.f64 1 z) x)
(+.f64 (*.f64 x (*.f64 (-.f64 1 z) 1/2)) (*.f64 x (*.f64 (-.f64 1 z) 1/2)))
(*.f64 (-.f64 1 z) x)
(-.f64 (*.f64 x (-.f64 1 z)) 0)
(*.f64 (-.f64 1 z) x)
(-.f64 0 (*.f64 x (+.f64 z -1)))
(*.f64 (-.f64 1 z) x)
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)))
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 x (-.f64 1 z)) 1)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 z) 2)) 2)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 z) 4)) 4)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 x (*.f64 (-.f64 1 z) 8)) 8)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))) 16)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8)))) 32)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 x (+.f64 z -1)) -1)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)) -1)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))))) 64)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8)))))) 128)
(*.f64 (-.f64 1 z) x)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 x (*.f64 (-.f64 1 z) 8))))))) 256)
(*.f64 (-.f64 1 z) x)
(pow.f64 (*.f64 x (-.f64 1 z)) 1)
(*.f64 (-.f64 1 z) x)
(neg.f64 (*.f64 x (+.f64 z -1)))
(*.f64 (-.f64 1 z) x)
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (+.f64 z -1) 1/2)))
(*.f64 (-.f64 1 z) x)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series335.0ms (3.5%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
333.0ms
z
@inf
(+.f64 x (*.f64 z y))
0.0ms
z
@-inf
(+.f64 x (*.f64 z y))
0.0ms
y
@0
(+.f64 x (*.f64 z y))
0.0ms
y
@inf
(+.f64 x (*.f64 z y))
0.0ms
x
@0
(+.f64 x (*.f64 z y))

rewrite180.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
1524×rational.json-simplify-35
1424×rational.json-simplify-1
1386×exponential.json-3
1386×rational.json-1
1386×rational.json-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14613
210213
321413
439713
589613
6231213
7417413
8535813
9686913
10768013
11768013
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(+.f64 x (*.f64 z y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 x (*.f64 z y)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x (*.f64 z y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 x (*.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z y)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 x (*.f64 z y)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z y)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z y)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 x (*.f64 z y)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z y)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 x (*.f64 z y)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 x (*.f64 z y)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 x (*.f64 z y)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 x (*.f64 z y)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z y)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z y)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x (*.f64 z y)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 x (*.f64 z y)) 1)))))

simplify863.0ms (9.1%)

Algorithm
egg-herbie
Rules
5556×rational.json-simplify-51
3540×rational.json-simplify-35
1372×rational.json-simplify-49
1150×rational.json-simplify-2
1130×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
055689
1123689
2425689
31171689
41868689
52759689
63249689
73323689
83371689
93403689
103435689
113467689
123499689
133531689
143563689
153595689
163627689
173659689
183691689
194611689
204870689
214963689
225052689
235139689
245225689
255438689
265438689
275524689
285610689
295696689
305782689
315868689
325954689
336040689
346126689
356212689
Stop Event
node limit
Counts
59 → 27
Calls
Call 1
Inputs
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
x
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(+.f64 (*.f64 y z) x)
(-.f64 (+.f64 x (*.f64 z y)) 0)
(*.f64 (+.f64 x (*.f64 z y)) 1)
(*.f64 1 (+.f64 x (*.f64 z y)))
(*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 1/2))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 x (*.f64 z y)) 1/4))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 4) 1/4)
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 z y)) 2))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 z y)) 4))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 z y)) 8))
(/.f64 (+.f64 x (*.f64 z y)) 1)
(/.f64 (*.f64 (+.f64 x (*.f64 z y)) 2) 2)
(/.f64 (*.f64 (+.f64 x (*.f64 z y)) 4) 4)
(/.f64 (*.f64 (+.f64 x (*.f64 z y)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)))))) 256)
(pow.f64 (+.f64 x (*.f64 z y)) 1)
Outputs
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
x
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
x
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
x
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
x
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(*.f64 y z)
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(+.f64 (*.f64 y z) x)
(+.f64 x (*.f64 y z))
(-.f64 (+.f64 x (*.f64 z y)) 0)
(+.f64 x (*.f64 y z))
(*.f64 (+.f64 x (*.f64 z y)) 1)
(+.f64 x (*.f64 y z))
(*.f64 1 (+.f64 x (*.f64 z y)))
(+.f64 x (*.f64 y z))
(*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 1/2))
(+.f64 x (*.f64 y z))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 2) 1/2)
(+.f64 x (*.f64 y z))
(*.f64 4 (*.f64 (+.f64 x (*.f64 z y)) 1/4))
(+.f64 x (*.f64 y z))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 4) 1/4)
(+.f64 x (*.f64 y z))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 8) 1/8)
(+.f64 x (*.f64 y z))
(*.f64 1/2 (*.f64 (+.f64 x (*.f64 z y)) 2))
(+.f64 x (*.f64 y z))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 1/2) 2)
(+.f64 x (*.f64 y z))
(*.f64 1/4 (*.f64 (+.f64 x (*.f64 z y)) 4))
(+.f64 x (*.f64 y z))
(*.f64 (*.f64 (+.f64 x (*.f64 z y)) 1/4) 4)
(+.f64 x (*.f64 y z))
(*.f64 1/8 (*.f64 (+.f64 x (*.f64 z y)) 8))
(+.f64 x (*.f64 y z))
(/.f64 (+.f64 x (*.f64 z y)) 1)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 (+.f64 x (*.f64 z y)) 2) 2)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 (+.f64 x (*.f64 z y)) 4) 4)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 (+.f64 x (*.f64 z y)) 8) 8)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)) 16)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8))) 32)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)))) 64)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8))))) 128)
(+.f64 x (*.f64 y z))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 x (*.f64 z y)) 8)))))) 256)
(+.f64 x (*.f64 y z))
(pow.f64 (+.f64 x (*.f64 z y)) 1)
(+.f64 x (*.f64 y z))

localize6.0ms (0.1%)

Compiler

Compiled 17 to 6 computations (64.7% saved)

eval366.0ms (3.9%)

Compiler

Compiled 689 to 399 computations (42.1% saved)

prune13.0ms (0.1%)

Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New74276
Fresh011
Picked011
Done033
Total74781
Error
0.0b
Counts
81 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
25.3b
(+.f64 x (*.f64 z (neg.f64 x)))
10.6b
(+.f64 x (*.f64 z y))
27.2b
(*.f64 (-.f64 y x) z)
52.5b
(*.f64 z (neg.f64 x))
37.1b
(*.f64 z y)
25.3b
(*.f64 x (-.f64 1 z))
35.5b
x
Compiler

Compiled 50 to 34 computations (32% saved)

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize4.0ms (0%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

eval1.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New000
Fresh011
Picked011
Done055
Total077
Error
0.0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
25.3b
(+.f64 x (*.f64 z (neg.f64 x)))
10.6b
(+.f64 x (*.f64 z y))
27.2b
(*.f64 (-.f64 y x) z)
52.5b
(*.f64 z (neg.f64 x))
37.1b
(*.f64 z y)
25.3b
(*.f64 x (-.f64 1 z))
35.5b
x
Compiler

Compiled 50 to 34 computations (32% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune2.0ms (0%)

Pruning

7 alts after pruning (1 fresh and 6 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done066
Total077
Error
0.0b
Counts
7 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
25.3b
(+.f64 x (*.f64 z (neg.f64 x)))
10.6b
(+.f64 x (*.f64 z y))
27.2b
(*.f64 (-.f64 y x) z)
52.5b
(*.f64 z (neg.f64 x))
37.1b
(*.f64 z y)
25.3b
(*.f64 x (-.f64 1 z))
35.5b
x
Compiler

Compiled 50 to 34 computations (32% saved)

regimes119.0ms (1.3%)

Counts
8 → 1
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (neg.f64 x))
(*.f64 x (-.f64 1 z))
(*.f64 (-.f64 y x) z)
(+.f64 x (*.f64 z y))
(+.f64 x (*.f64 z (neg.f64 x)))
(+.f64 x (*.f64 (-.f64 y x) z))
Outputs
(+.f64 x (*.f64 (-.f64 y x) z))
Calls

4 calls:

100.0ms
y
7.0ms
(+.f64 x (*.f64 (-.f64 y x) z))
5.0ms
x
5.0ms
z
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(+.f64 x (*.f64 (-.f64 y x) z))
Compiler

Compiled 61 to 29 computations (52.5% saved)

regimes187.0ms (2%)

Counts
7 → 3
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (neg.f64 x))
(*.f64 x (-.f64 1 z))
(*.f64 (-.f64 y x) z)
(+.f64 x (*.f64 z y))
(+.f64 x (*.f64 z (neg.f64 x)))
Outputs
(*.f64 (-.f64 y x) z)
(+.f64 x (*.f64 z y))
(*.f64 (-.f64 y x) z)
Calls

3 calls:

145.0ms
y
26.0ms
x
14.0ms
z
Results
ErrorSegmentsBranch
6.5b5x
4.6b3y
1.0b3z
Compiler

Compiled 44 to 22 computations (50% saved)

bsearch27.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
4.429733102887844e-6
4.527834778103447
12.0ms
-21.335249231581013
-0.6331054202938605
Results
24.0ms256×body256valid
Compiler

Compiled 304 to 203 computations (33.2% saved)

regimes137.0ms (1.5%)

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

3 calls:

101.0ms
x
23.0ms
y
12.0ms
z
Results
ErrorSegmentsBranch
12.4b3x
13.0b5y
12.1b3z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch198.0ms (2.1%)

Algorithm
binary-search
Steps
TimeLeftRight
183.0ms
1.2194624197696991e-77
1.2449376476789167e-76
15.0ms
-3711197.3262468176
-21.335249231581013
Results
195.0ms240×body256valid
Compiler

Compiled 286 to 206 computations (28% saved)

regimes49.0ms (0.5%)

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

3 calls:

18.0ms
y
15.0ms
z
14.0ms
x
Results
ErrorSegmentsBranch
14.4b3x
14.6b5y
20.3b4z
Compiler

Compiled 28 to 18 computations (35.7% saved)

bsearch17.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
12.0ms
8.858796778185517e-89
5.469809274605483e-87
5.0ms
-3.062811518279434e-135
-2.3491947660888584e-135
Results
15.0ms160×body256valid
Compiler

Compiled 176 to 131 computations (25.6% saved)

regimes453.0ms (4.8%)

Counts
3 → 5
Calls
Call 1
Inputs
x
(*.f64 z y)
(*.f64 z (neg.f64 x))
Outputs
(*.f64 z y)
x
(*.f64 z y)
(*.f64 z (neg.f64 x))
(*.f64 z y)
Calls

3 calls:

337.0ms
x
98.0ms
z
17.0ms
y
Results
ErrorSegmentsBranch
22.0b6x
22.9b5y
20.4b5z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch400.0ms (4.2%)

Algorithm
binary-search
Steps
TimeLeftRight
274.0ms
1.4508956020301684e+88
2.1526719076621707e+88
14.0ms
192122210.43357474
656647615026327600.0
9.0ms
1.2194624197696991e-77
1.2449376476789167e-76
103.0ms
-1.3834063016310727e-39
-2.99554965541354e-43
Results
393.0ms432×body256valid
2.0ms26×body256infinite
Compiler

Compiled 379 to 280 computations (26.1% saved)

regimes32.0ms (0.3%)

Accuracy

Total -40.2b remaining (-183.7%)

Threshold costs -40.2b (-183.7%)

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

3 calls:

13.0ms
x
11.0ms
y
8.0ms
z
Results
ErrorSegmentsBranch
23.0b3x
24.1b3y
21.9b3z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch23.0ms (0.2%)

Algorithm
binary-search
Steps
TimeLeftRight
9.0ms
1.2194624197696991e-77
1.2449376476789167e-76
13.0ms
-1.3834063016310727e-39
-2.99554965541354e-43
Results
20.0ms224×body256valid
Compiler

Compiled 184 to 137 computations (25.5% saved)

simplify78.0ms (0.8%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054287
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 x (*.f64 (-.f64 y x) z))
(if (<=.f64 z -1) (*.f64 (-.f64 y x) z) (if (<=.f64 z 1) (+.f64 x (*.f64 z y)) (*.f64 (-.f64 y x) z)))
(if (<=.f64 z -25) (*.f64 (-.f64 y x) z) (if (<=.f64 z 8604439964036869/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) (*.f64 x (-.f64 1 z)) (*.f64 (-.f64 y x) z)))
(if (<=.f64 x -4910085911844213/1636695303948070935006594848413799576108321023021532394741645684048066898202337277441635046162952078575443342063780035504608628272942696526664263794688) (*.f64 x (-.f64 1 z)) (if (<=.f64 x 8958978968711217/4479489484355608421114884561136888556243290994469299069799978201927583742360321890761754986543214231552) (*.f64 z y) (*.f64 x (-.f64 1 z))))
(if (<=.f64 z -7846377169233351/98079714615416886934934209737619787751599303819750539264) (*.f64 z y) (if (<=.f64 z 3976294225804917/32592575621351777380295131014550050576823494298654980010178247189670100796213387298934358016) x (if (<=.f64 z 1500000000) (*.f64 z y) (if (<=.f64 z 14599999999999999937538296496230594754772393131742945767423358605863564711565795000320000) (*.f64 z (neg.f64 x)) (*.f64 z y)))))
(if (<=.f64 z -3373942182770341/392318858461667547739736838950479151006397215279002157056) (*.f64 z y) (if (<=.f64 z 7496292392910909/65185151242703554760590262029100101153646988597309960020356494379340201592426774597868716032) x (*.f64 z y)))
x
Outputs
(+.f64 x (*.f64 (-.f64 y x) z))
(if (<=.f64 z -1) (*.f64 (-.f64 y x) z) (if (<=.f64 z 1) (+.f64 x (*.f64 z y)) (*.f64 (-.f64 y x) z)))
(if (<=.f64 z -25) (*.f64 (-.f64 y x) z) (if (<=.f64 z 8604439964036869/130370302485407109521180524058200202307293977194619920040712988758680403184853549195737432064) (*.f64 x (-.f64 1 z)) (*.f64 (-.f64 y x) z)))
(if (<=.f64 x -4910085911844213/1636695303948070935006594848413799576108321023021532394741645684048066898202337277441635046162952078575443342063780035504608628272942696526664263794688) (*.f64 x (-.f64 1 z)) (if (<=.f64 x 8958978968711217/4479489484355608421114884561136888556243290994469299069799978201927583742360321890761754986543214231552) (*.f64 z y) (*.f64 x (-.f64 1 z))))
(if (<=.f64 z -7846377169233351/98079714615416886934934209737619787751599303819750539264) (*.f64 z y) (if (<=.f64 z 3976294225804917/32592575621351777380295131014550050576823494298654980010178247189670100796213387298934358016) x (if (<=.f64 z 1500000000) (*.f64 z y) (if (<=.f64 z 14599999999999999937538296496230594754772393131742945767423358605863564711565795000320000) (*.f64 z (neg.f64 x)) (*.f64 z y)))))
(if (<=.f64 z -3373942182770341/392318858461667547739736838950479151006397215279002157056) (*.f64 z y) (if (<=.f64 z 7496292392910909/65185151242703554760590262029100101153646988597309960020356494379340201592426774597868716032) x (*.f64 z y)))
x
Compiler

Compiled 141 to 80 computations (43.3% saved)

soundness0.0ms (0%)

end520.0ms (5.5%)

Compiler

Compiled 123 to 55 computations (55.3% saved)

Profiling

Loading profile data...