Details

Time bar (total: 8.3s)

analyze266.0ms (3.2%)

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
25.8%25%71.8%0.1%3.1%0%0%9
36.4%34.3%60.1%0.1%5.5%0%0%10
44.5%41.3%51.5%0.1%7%0%0%11
51.5%46.8%44.1%0.1%9%0%0%12
Compiler

Compiled 13 to 9 computations (30.8% saved)

sample916.0ms (11.1%)

Results
787.0ms8256×body256valid
117.0ms1254×body256infinite
Bogosity

preprocess5.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

Compiled 15 to 11 computations (26.7% saved)

simplify9.0ms (0.1%)

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

Useful iterations: 0 (0.0ms)

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

eval0.0ms (0%)

Compiler

Compiled 12 to 8 computations (33.3% 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 (*.f64 (-.f64 1 x) y) (*.f64 x z))
Compiler

Compiled 12 to 8 computations (33.3% saved)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 27 to 14 computations (48.1% saved)

series4.0ms (0%)

Counts
2 → 60
Calls

15 calls:

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

rewrite248.0ms (3%)

Algorithm
batch-egg-rewrite
Rules
1900×rational.json-simplify-1
1382×exponential.json-3
1382×rational.json-1
1382×rational.json-2
1382×rational.json-4
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01038
17538
216038
330638
457338
5128538
6293038
7508238
8631738
9742138
10750138
11759338
12768238
Stop Event
node limit
Counts
2 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
(*.f64 (-.f64 1 x) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 x) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 1 x) y))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 1 x) y) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) y) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 (-.f64 1 x) y) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 1 x) y) 1)))))

simplify438.0ms (5.3%)

Algorithm
egg-herbie
Rules
3198×rational.json-simplify-41
2708×rational.json-simplify-35
1678×rational.json-simplify-2
676×rational.json-simplify-51
506×rational.json-simplify-1
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0891821
12071769
25111769
314021769
427871769
535711769
638591769
741201769
843141769
944691769
1046021769
1149051769
1249381769
1349851769
1450061769
1550301769
1650501769
1751861769
1853161769
1954461769
Stop Event
node limit
Counts
93 → 60
Calls
Call 1
Inputs
y
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(-.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 0)
(*.f64 1 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)))
(*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 2)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))))) 128)
(pow.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(+.f64 (*.f64 (-.f64 1 x) y) 0)
(+.f64 0 (*.f64 (-.f64 1 x) y))
(+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2)))
(-.f64 (*.f64 (-.f64 1 x) y) 0)
(/.f64 (*.f64 (-.f64 1 x) y) 1)
(/.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) 2)
(/.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)
(/.f64 (*.f64 (*.f64 (-.f64 1 x) y) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))))) 128)
(pow.f64 (*.f64 (-.f64 1 x) y) 1)
Outputs
y
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 (+.f64 z (*.f64 y -1)) x))
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 (+.f64 z (*.f64 y -1)) x))
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 (+.f64 z (*.f64 y -1)) x))
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 y -1)) x)
(*.f64 (+.f64 z (neg.f64 y)) x)
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 (+.f64 z (*.f64 y -1)) x))
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 (+.f64 z (*.f64 y -1)) x))
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
(+.f64 (*.f64 (+.f64 z (*.f64 -1 y)) x) y)
(+.f64 y (*.f64 (+.f64 z (*.f64 y -1)) x))
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1)))))
(+.f64 y (*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1)))))
(+.f64 y (*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x)))
(+.f64 y (*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x)))
(+.f64 y (*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1)))))
(+.f64 y (*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 z x) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 y x))
(*.f64 (neg.f64 y) x)
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(neg.f64 (*.f64 y x))
(*.f64 (neg.f64 y) x)
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 (neg.f64 y) x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(*.f64 y (-.f64 1 x))
(-.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 0)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 1 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 1/2)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 4 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 1/4)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 1/2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1/2) 2)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 1/4 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4))
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(*.f64 (/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 2) 2)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 4) 4)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8) 8)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)) 16)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))) 32)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8)))) 64)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 8))))) 128)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(pow.f64 (+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z)) 1)
(+.f64 (*.f64 y (-.f64 1 x)) (*.f64 z x))
(+.f64 (*.f64 (-.f64 1 x) y) 0)
(*.f64 y (-.f64 1 x))
(+.f64 0 (*.f64 (-.f64 1 x) y))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 (-.f64 1 x) (*.f64 y 1/2)) (*.f64 (-.f64 1 x) (*.f64 y 1/2)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 (-.f64 1 x) y) 0)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) y) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (+.f64 y y)) 2)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (-.f64 1 x) (*.f64 y 4)) 4)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (*.f64 (-.f64 1 x) y) 8) 8)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)) 16)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))) 32)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8)))) 64)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 (-.f64 1 x) y) 8))))) 128)
(*.f64 y (-.f64 1 x))
(pow.f64 (*.f64 (-.f64 1 x) y) 1)
(*.f64 y (-.f64 1 x))

eval11.0ms (0.1%)

Compiler

Compiled 681 to 385 computations (43.5% saved)

prune13.0ms (0.2%)

Pruning

7 alts after pruning (6 fresh and 1 done)

PrunedKeptTotal
New54660
Fresh000
Picked011
Done000
Total54761
Error
0.0b
Counts
61 → 7
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
28.9b
(+.f64 (*.f64 (neg.f64 y) x) (*.f64 x z))
0.0b
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
28.9b
(*.f64 (+.f64 z (neg.f64 y)) x)
39.8b
(*.f64 z x)
23.9b
(*.f64 y (-.f64 1 x))
34.7b
y
Compiler

Compiled 106 to 71 computations (33% saved)

localize10.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 26 to 7 computations (73.1% saved)

series4.0ms (0%)

Counts
2 → 72
Calls

18 calls:

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

rewrite144.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
1472×rational.json-simplify-35
1406×rational.json-1
1406×rational.json-2
1406×rational.json-3
1390×exponential.json-3
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01040
16940
215040
331740
465040
5158240
6318840
7489540
8632440
9750540
Stop Event
node limit
Counts
2 → 37
Calls
Call 1
Inputs
(*.f64 (+.f64 z (neg.f64 y)) x)
(+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (+.f64 z (neg.f64 y)) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 1/2)) (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 (+.f64 z (neg.f64 y)) 4) (+.f64 x x)) (*.f64 (/.f64 (+.f64 z (neg.f64 y)) 4) (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (/.f64 x 4) (*.f64 (+.f64 z (neg.f64 y)) 2)) (*.f64 (/.f64 x 4) (*.f64 (+.f64 z (neg.f64 y)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 1)))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)))))

simplify1.1s (13.7%)

Algorithm
egg-herbie
Rules
4484×rational.json-simplify-35
2198×rational.json-simplify-2
926×rational.json-simplify-53
864×rational.json-simplify-1
832×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01042557
12492399
25812015
315371971
431601971
539331971
643561971
747231971
849601971
951291971
1057451971
1158421971
1259631971
1360301971
1460781971
1560781971
1662581971
1764011971
1866191971
1968141971
2069671971
2171101971
2272531971
2373961971
2475391971
2575391971
2676171971
2776221971
2876301971
2976321971
3076321971
3177751971
3279181971
Stop Event
node limit
Counts
109 → 69
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
y
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(*.f64 (-.f64 z y) x)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 0)
(+.f64 0 (*.f64 (+.f64 z (neg.f64 y)) x))
(+.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 1/2)) (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 1/2)))
(+.f64 (*.f64 (/.f64 (+.f64 z (neg.f64 y)) 4) (+.f64 x x)) (*.f64 (/.f64 (+.f64 z (neg.f64 y)) 4) (+.f64 x x)))
(+.f64 (*.f64 (/.f64 x 4) (*.f64 (+.f64 z (neg.f64 y)) 2)) (*.f64 (/.f64 x 4) (*.f64 (+.f64 z (neg.f64 y)) 2)))
(-.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 0)
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 1)
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) 2)
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 4)) 4)
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 8)) 8)
(/.f64 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x)) 16)
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x))))) 128)
(pow.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 1)
(-.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 0)
(*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)
(*.f64 1 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1/2))
(*.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2) 1/2)
(*.f64 4 (/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 1/4)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))))
(*.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4))
(*.f64 (/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 4)
(*.f64 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))) 1/2)
(/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2) 2)
(/.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8))))) 128)
(pow.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)
Outputs
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(neg.f64 (*.f64 y x))
(*.f64 x (neg.f64 y))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (neg.f64 (*.f64 y x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
y
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (-.f64 z y) x) y)
(+.f64 y (*.f64 x (-.f64 z y)))
(+.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 0)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 0 (*.f64 (+.f64 z (neg.f64 y)) x))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 1/2)) (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 1/2)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 (/.f64 (+.f64 z (neg.f64 y)) 4) (+.f64 x x)) (*.f64 (/.f64 (+.f64 z (neg.f64 y)) 4) (+.f64 x x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 (/.f64 x 4) (*.f64 (+.f64 z (neg.f64 y)) 2)) (*.f64 (/.f64 x 4) (*.f64 (+.f64 z (neg.f64 y)) 2)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(-.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 0)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 1)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x)) 2)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 4)) 4)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (+.f64 z (neg.f64 y)) (*.f64 x 8)) 8)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x)) 16)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x))) 32)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x)))) 64)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 16 (*.f64 (+.f64 z (neg.f64 y)) x))))) 128)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(pow.f64 (*.f64 (+.f64 z (neg.f64 y)) x) 1)
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (neg.f64 (*.f64 y x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(-.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 0)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1/2))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2) 1/2)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 4 (/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 1/4)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/2 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1/2) 2)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4))
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 4)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 (+.f64 (+.f64 y y) (*.f64 (+.f64 z (neg.f64 y)) (+.f64 x x))) 1/2)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 2) 2)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 4) 4)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8) 8)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8)) 16)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8))) 32)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8)))) 64)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 8))))) 128)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(pow.f64 (+.f64 y (*.f64 (+.f64 z (neg.f64 y)) x)) 1)
(+.f64 y (+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z)))
(+.f64 (neg.f64 (*.f64 y x)) (+.f64 (*.f64 x z) y))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))

localize3.0ms (0%)

Compiler

Compiled 8 to 4 computations (50% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 9 computations (35.7% saved)

series0.0ms (0%)

Counts
1 → 12
Calls

6 calls:

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

rewrite186.0ms (2.3%)

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 y (-.f64 1 x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 y (-.f64 1 x)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 y (+.f64 x -1))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 y (-.f64 1 x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 y (+.f64 x -1)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (*.f64 (-.f64 1 x) 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y (+.f64 x -1)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 y (-.f64 1 x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 y (+.f64 x -1)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))))))

simplify371.0ms (4.5%)

Algorithm
egg-herbie
Rules
2110×rational.json-simplify-35
1960×rational.json-simplify-2
1876×rational.json-simplify-53
1046×rational.json-simplify-1
984×rational.json-simplify-43
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
064484
1170462
2332462
3766462
42588462
54347462
64973462
75177462
85333462
95508462
106348462
117533462
127658462
137709462
147733462
157751462
167890462
Stop Event
node limit
Counts
34 → 32
Calls
Call 1
Inputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(+.f64 0 (*.f64 y (-.f64 1 x)))
(+.f64 -1 (-.f64 1 (*.f64 y (+.f64 x -1))))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2))))
(+.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(-.f64 0 (*.f64 y (+.f64 x -1)))
(-.f64 0 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 2)) 2)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 8)) 8)
(/.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))) 32)
(/.f64 (*.f64 y (+.f64 x -1)) -1)
(/.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))))) 256)
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(neg.f64 (*.f64 y (+.f64 x -1)))
(neg.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
Outputs
y
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (*.f64 x -1))
(*.f64 y (neg.f64 x))
(*.f64 x (neg.f64 y))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 x -1)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 y (*.f64 x (neg.f64 y)))
(+.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(+.f64 0 (*.f64 y (-.f64 1 x)))
(*.f64 y (-.f64 1 x))
(+.f64 -1 (-.f64 1 (*.f64 y (+.f64 x -1))))
(*.f64 y (-.f64 1 x))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2))))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 y (*.f64 (-.f64 1 x) 1/2)) (*.f64 y (*.f64 (-.f64 1 x) 1/2)))
(*.f64 y (-.f64 1 x))
(-.f64 (*.f64 y (-.f64 1 x)) 0)
(*.f64 y (-.f64 1 x))
(-.f64 0 (*.f64 y (+.f64 x -1)))
(*.f64 y (-.f64 1 x))
(-.f64 0 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 2)) 2)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 4)) 4)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (*.f64 (-.f64 1 x) 8)) 8)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))) 16)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))) 32)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 y (+.f64 x -1)) -1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)) -1)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))) 64)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8)))))) 128)
(*.f64 y (-.f64 1 x))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 y (*.f64 (-.f64 1 x) 8))))))) 256)
(*.f64 y (-.f64 1 x))
(pow.f64 (*.f64 y (-.f64 1 x)) 1)
(*.f64 y (-.f64 1 x))
(neg.f64 (*.f64 y (+.f64 x -1)))
(*.f64 y (-.f64 1 x))
(neg.f64 (*.f64 (+.f64 y y) (*.f64 (+.f64 x -1) 1/2)))
(*.f64 y (-.f64 1 x))

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 18 to 6 computations (66.7% saved)

localize8.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 23 to 7 computations (69.6% saved)

series5.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite116.0ms (1.4%)

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

Useful iterations: 1 (0.0ms)

IterNodesCost
01023
16917
215617
334817
470417
5172417
6352517
7552417
8739217
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 (neg.f64 y) x) (*.f64 x z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (+.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (+.f64 (neg.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (*.f64 (+.f64 (neg.f64 y) z) 1/2) x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (*.f64 (+.f64 (neg.f64 y) z) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 x x) (/.f64 (+.f64 (neg.f64 y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (neg.f64 y) z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (/.f64 (+.f64 (neg.f64 y) z) 2) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (+.f64 (neg.f64 y) z)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 y (*.f64 x -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 (neg.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x 1/2) (+.f64 (+.f64 z z) (*.f64 y -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 (neg.f64 y) z) 1/2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (+.f64 (neg.f64 y) z) 2) (+.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (+.f64 z z) (*.f64 y -2)) (*.f64 x 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)))))

simplify865.0ms (10.5%)

Algorithm
egg-herbie
Rules
3362×rational.json-simplify-35
2270×rational.json-simplify-2
1346×rational.json-simplify-1
860×rational.json-simplify-41
774×exponential.json-simplify-26
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0891635
12021495
24681141
315271141
432581141
547241141
655391141
758231141
859811141
960961141
1061991141
1165901141
1267111141
1368301141
1469281141
1570261141
1670261141
1770691141
1871271141
1971371141
2072371141
2173351141
2274331141
2375311141
2476291141
2577271141
2678251141
2779231141
Stop Event
node limit
Counts
69 → 47
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(-.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 0)
(*.f64 x (+.f64 (neg.f64 y) z))
(*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)
(*.f64 1 (*.f64 x (+.f64 (neg.f64 y) z)))
(*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1/2))
(*.f64 2 (*.f64 (*.f64 (+.f64 (neg.f64 y) z) 1/2) x))
(*.f64 (+.f64 x x) (*.f64 (+.f64 (neg.f64 y) z) 1/2))
(*.f64 (+.f64 x x) (/.f64 (+.f64 (neg.f64 y) z) 2))
(*.f64 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))) 1/2)
(*.f64 (+.f64 (neg.f64 y) z) x)
(*.f64 4 (/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 4))
(*.f64 4 (*.f64 (/.f64 (+.f64 (neg.f64 y) z) 2) (*.f64 x 1/2)))
(*.f64 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))) 1/4)
(*.f64 (*.f64 2 (+.f64 (neg.f64 y) z)) (*.f64 x 1/2))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 y (*.f64 x -2))))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 (neg.f64 y) z)))
(*.f64 (*.f64 x 1/2) (+.f64 (+.f64 z z) (*.f64 y -2)))
(*.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1/2) 2)
(*.f64 (*.f64 (+.f64 (neg.f64 y) z) 1/2) (+.f64 x x))
(*.f64 1/4 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))))
(*.f64 (/.f64 (+.f64 (neg.f64 y) z) 2) (+.f64 x x))
(*.f64 (/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 4) 4)
(*.f64 (+.f64 (+.f64 z z) (*.f64 y -2)) (*.f64 x 1/2))
(/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)
(/.f64 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))) 2)
(/.f64 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))) 4)
(/.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8))))) 128)
(pow.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)
Outputs
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 x (neg.f64 y))
(neg.f64 (*.f64 x y))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 x (neg.f64 y))
(neg.f64 (*.f64 x y))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 z (*.f64 -1 y)) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 (+.f64 (*.f64 -1 z) y) x))
(*.f64 -1 (*.f64 x (+.f64 y (*.f64 z -1))))
(*.f64 (+.f64 y (neg.f64 z)) (neg.f64 x))
(*.f64 x (neg.f64 (+.f64 y (neg.f64 z))))
(*.f64 -1 (*.f64 y x))
(*.f64 -1 (*.f64 x y))
(*.f64 x (neg.f64 y))
(neg.f64 (*.f64 x y))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(-.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 0)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 x (+.f64 (neg.f64 y) z))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1 (*.f64 x (+.f64 (neg.f64 y) z)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1/2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 2 (*.f64 (*.f64 (+.f64 (neg.f64 y) z) 1/2) x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 x x) (*.f64 (+.f64 (neg.f64 y) z) 1/2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 x x) (/.f64 (+.f64 (neg.f64 y) z) 2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))) 1/2)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 (neg.f64 y) z) x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 4 (/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 4))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 4 (*.f64 (/.f64 (+.f64 (neg.f64 y) z) 2) (*.f64 x 1/2)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))) 1/4)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 2 (+.f64 (neg.f64 y) z)) (*.f64 x 1/2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/2 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/2 (+.f64 (*.f64 x (+.f64 z z)) (*.f64 y (*.f64 x -2))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x 1/2) (*.f64 2 (+.f64 (neg.f64 y) z)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 x 1/2) (+.f64 (+.f64 z z) (*.f64 y -2)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1/2) 2)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (*.f64 (+.f64 (neg.f64 y) z) 1/2) (+.f64 x x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 1/4 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (/.f64 (+.f64 (neg.f64 y) z) 2) (+.f64 x x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 4) 4)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 (+.f64 (+.f64 z z) (*.f64 y -2)) (*.f64 x 1/2))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 x (*.f64 2 (+.f64 (neg.f64 y) z))) 2)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 x (*.f64 4 (+.f64 (neg.f64 y) z))) 4)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8) 8)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)) 16)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8))) 32)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)))) 64)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 8))))) 128)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))
(pow.f64 (*.f64 x (+.f64 (neg.f64 y) z)) 1)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 x y)))
(+.f64 (*.f64 z x) (*.f64 x (neg.f64 y)))
(*.f64 x (+.f64 z (neg.f64 y)))

eval31.0ms (0.4%)

Compiler

Compiled 1704 to 747 computations (56.2% saved)

prune26.0ms (0.3%)

Pruning

9 alts after pruning (5 fresh and 4 done)

PrunedKeptTotal
New1714175
Fresh011
Picked011
Done235
Total1739182
Error
0.0b
Counts
182 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 z y) x) y)
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
28.9b
(+.f64 (*.f64 (neg.f64 y) x) (*.f64 x z))
11.7b
(+.f64 y (*.f64 z x))
28.9b
(*.f64 (-.f64 z y) x)
39.8b
(*.f64 z x)
23.9b
(*.f64 y (-.f64 1 x))
51.7b
(*.f64 y (neg.f64 x))
34.7b
y
Compiler

Compiled 74 to 49 computations (33.8% saved)

localize6.0ms (0.1%)

Compiler

Compiled 11 to 5 computations (54.5% saved)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series1.0ms (0%)

Counts
1 → 24
Calls

9 calls:

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

rewrite105.0ms (1.3%)

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

Useful iterations: 0 (0.0ms)

IterNodesCost
0713
14513
210313
322313
441013
594313
6257213
7500413
8657913
Stop Event
node limit
Counts
1 → 23
Calls
Call 1
Inputs
(*.f64 (-.f64 z y) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 z y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 (-.f64 z y) x))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 -1 (-.f64 1 (*.f64 x (-.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 (-.f64 z y) (*.f64 x 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (-.f64 z y) x) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (*.f64 x (-.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)) (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (-.f64 y z)) (*.f64 (-.f64 z y) (*.f64 x -2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) (+.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) (*.f64 x 4)) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (-.f64 z y) (*.f64 x 8)) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8))) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8)))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (-.f64 y z)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8))))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8)))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (-.f64 z y) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)))))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (*.f64 x (-.f64 y z)))))))

simplify187.0ms (2.3%)

Algorithm
egg-herbie
Rules
2446×rational.json-simplify-2
1650×rational.json-simplify-35
1114×rational.json-simplify-43
950×rational.json-simplify-52
850×rational.json-simplify-1
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
068833
1169791
2338677
3749677
42546677
54295677
64963677
75290677
85533677
95819677
106998677
Stop Event
node limit
Counts
47 → 35
Calls
Call 1
Inputs
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(*.f64 -1 (*.f64 y x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 (-.f64 z y) x) 0)
(+.f64 0 (*.f64 (-.f64 z y) x))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2))))
(+.f64 -1 (-.f64 1 (*.f64 x (-.f64 y z))))
(+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 (-.f64 z y) (*.f64 x 1/2)))
(-.f64 (*.f64 (-.f64 z y) x) 0)
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)))
(-.f64 0 (*.f64 x (-.f64 y z)))
(-.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)) (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2))))
(-.f64 (*.f64 x (-.f64 y z)) (*.f64 (-.f64 z y) (*.f64 x -2)))
(/.f64 (*.f64 (-.f64 z y) x) 1)
(/.f64 (*.f64 (-.f64 z y) (+.f64 x x)) 2)
(/.f64 (*.f64 (-.f64 z y) (*.f64 x 4)) 4)
(/.f64 (*.f64 (-.f64 z y) (*.f64 x 8)) 8)
(/.f64 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8))) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8)))) 32)
(/.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)) -1)
(/.f64 (*.f64 x (-.f64 y z)) -1)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8))))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8)))))) 128)
(pow.f64 (*.f64 (-.f64 z y) x) 1)
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)))
(neg.f64 (*.f64 x (-.f64 y z)))
Outputs
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(*.f64 -1 (*.f64 y x))
(*.f64 y (neg.f64 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 -1 (*.f64 y x)) (*.f64 x z))
(+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z))
(*.f64 x (+.f64 z (neg.f64 y)))
(+.f64 (*.f64 (-.f64 z y) x) 0)
(*.f64 x (-.f64 z y))
(+.f64 0 (*.f64 (-.f64 z y) x))
(*.f64 x (-.f64 z y))
(+.f64 -1 (-.f64 1 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2))))
(*.f64 x (-.f64 z y))
(+.f64 -1 (-.f64 1 (*.f64 x (-.f64 y z))))
(*.f64 x (-.f64 z y))
(+.f64 (*.f64 (-.f64 z y) (*.f64 x 1/2)) (*.f64 (-.f64 z y) (*.f64 x 1/2)))
(*.f64 x (-.f64 z y))
(-.f64 (*.f64 (-.f64 z y) x) 0)
(*.f64 x (-.f64 z y))
(-.f64 0 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)))
(*.f64 x (-.f64 z y))
(-.f64 0 (*.f64 x (-.f64 y z)))
(*.f64 x (-.f64 z y))
(-.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)) (*.f64 2 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2))))
(*.f64 x (-.f64 z y))
(-.f64 (*.f64 x (-.f64 y z)) (*.f64 (-.f64 z y) (*.f64 x -2)))
(-.f64 (*.f64 x (-.f64 y z)) (*.f64 x (*.f64 -2 (-.f64 z y))))
(-.f64 (*.f64 x (-.f64 y z)) (*.f64 x (*.f64 (-.f64 z y) -2)))
(*.f64 x (-.f64 (-.f64 y z) (*.f64 (-.f64 z y) -2)))
(/.f64 (*.f64 (-.f64 z y) x) 1)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (-.f64 z y) (+.f64 x x)) 2)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (-.f64 z y) (*.f64 x 4)) 4)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (-.f64 z y) (*.f64 x 8)) 8)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8))) 16)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8)))) 32)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)) -1)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 x (-.f64 y z)) -1)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8))))) 64)
(*.f64 x (-.f64 z y))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (-.f64 z y) (*.f64 x 8)))))) 128)
(*.f64 x (-.f64 z y))
(pow.f64 (*.f64 (-.f64 z y) x) 1)
(*.f64 x (-.f64 z y))
(neg.f64 (*.f64 (+.f64 x x) (*.f64 (-.f64 y z) 1/2)))
(*.f64 x (-.f64 z y))
(neg.f64 (*.f64 x (-.f64 y z)))
(*.f64 x (-.f64 z y))

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 14 to 5 computations (64.3% saved)

series2.0ms (0%)

Counts
1 → 36
Calls

9 calls:

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

rewrite180.0ms (2.2%)

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 y (*.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (*.f64 z x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 z x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 z x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 y (*.f64 z x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 z x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 z x)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 z x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 z x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (*.f64 z x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 z x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/8 (*.f64 (+.f64 y (*.f64 z x)) 8))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 z x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 z x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 z x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 z x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)))))) 256)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (*.f64 z x)) 1)))))

simplify793.0ms (9.6%)

Algorithm
egg-herbie
Rules
5824×rational.json-simplify-51
3524×rational.json-simplify-35
1364×rational.json-simplify-49
1152×rational.json-simplify-2
1114×rational.json-simplify-1
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
054689
1121689
2420689
31176689
41869689
52750689
63233689
73307689
83355689
93387689
103419689
113451689
123483689
133515689
143547689
153579689
163611689
173643689
183675689
194583689
204842689
214935689
225024689
235111689
245197689
255410689
265410689
275496689
285582689
295668689
305754689
315840689
325926689
336012689
346098689
356184689
Stop Event
node limit
Counts
59 → 26
Calls
Call 1
Inputs
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(-.f64 (+.f64 y (*.f64 z x)) 0)
(*.f64 (+.f64 y (*.f64 z x)) 1)
(*.f64 1 (+.f64 y (*.f64 z x)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 1/2))
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 y (*.f64 z x)) 1/4))
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 4) 1/4)
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 z x)) 2))
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 z x)) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 1/4) 4)
(*.f64 1/8 (*.f64 (+.f64 y (*.f64 z x)) 8))
(/.f64 (+.f64 y (*.f64 z x)) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 z x)) 2) 2)
(/.f64 (*.f64 (+.f64 y (*.f64 z x)) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 z x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)))) 64)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8))))) 128)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)))))) 256)
(pow.f64 (+.f64 y (*.f64 z x)) 1)
Outputs
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
y
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(*.f64 z x)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(+.f64 (*.f64 z x) y)
(-.f64 (+.f64 y (*.f64 z x)) 0)
(+.f64 (*.f64 z x) y)
(*.f64 (+.f64 y (*.f64 z x)) 1)
(+.f64 (*.f64 z x) y)
(*.f64 1 (+.f64 y (*.f64 z x)))
(+.f64 (*.f64 z x) y)
(*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 1/2))
(+.f64 (*.f64 z x) y)
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 2) 1/2)
(+.f64 (*.f64 z x) y)
(*.f64 4 (*.f64 (+.f64 y (*.f64 z x)) 1/4))
(+.f64 (*.f64 z x) y)
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 4) 1/4)
(+.f64 (*.f64 z x) y)
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 8) 1/8)
(+.f64 (*.f64 z x) y)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 z x)) 2))
(+.f64 (*.f64 z x) y)
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 1/2) 2)
(+.f64 (*.f64 z x) y)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 z x)) 4))
(+.f64 (*.f64 z x) y)
(*.f64 (*.f64 (+.f64 y (*.f64 z x)) 1/4) 4)
(+.f64 (*.f64 z x) y)
(*.f64 1/8 (*.f64 (+.f64 y (*.f64 z x)) 8))
(+.f64 (*.f64 z x) y)
(/.f64 (+.f64 y (*.f64 z x)) 1)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 (+.f64 y (*.f64 z x)) 2) 2)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 (+.f64 y (*.f64 z x)) 4) 4)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 (+.f64 y (*.f64 z x)) 8) 8)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)) 16)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8))) 32)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)))) 64)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8))))) 128)
(+.f64 (*.f64 z x) y)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 z x)) 8)))))) 256)
(+.f64 (*.f64 z x) y)
(pow.f64 (+.f64 y (*.f64 z x)) 1)
(+.f64 (*.f64 z x) y)

localize6.0ms (0.1%)

Local error

Found 2 expressions with local error:

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

Compiled 21 to 6 computations (71.4% saved)

series1.0ms (0%)

Counts
1 → 27
Calls

9 calls:

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

rewrite109.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
0819
15219
211419
324819
447419
5111519
6317119
7587919
8787419
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(+.f64 (*.f64 (-.f64 z y) x) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (+.f64 y (*.f64 (-.f64 z y) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 1/8)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1/4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 2)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 8)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)) 16)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) 32)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) 64)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))))) 128)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)))))

simplify1.4s (16.6%)

Algorithm
egg-herbie
Rules
3494×rational.json-simplify-35
2474×rational.json-simplify-2
1398×rational.json-simplify-49
1240×rational.json-simplify-1
1116×rational.json-simplify-51
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
0641062
11381020
2375966
31008922
41575922
52994922
63849922
73924922
83970922
94011922
104505922
114633922
124731922
134803922
144859922
154915922
164971922
175027922
185083922
196015922
206740922
216941922
226994922
237046922
247098922
257150922
267202922
277254922
287254922
297306922
307358922
317410922
327462922
337514922
347566922
357618922
367670922
377722922
387774922
397826922
407878922
417930922
427982922
Stop Event
node limit
Counts
48 → 43
Calls
Call 1
Inputs
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(*.f64 z x)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
y
(*.f64 (-.f64 z y) x)
(*.f64 (-.f64 z y) x)
(-.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 0)
(*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(*.f64 1 (+.f64 y (*.f64 (-.f64 z y) x)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 1/2)
(*.f64 4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/4))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 1/4)
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 1/8)
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2) 2)
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/4) 4)
(/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 2)
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 8)
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)) 16)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) 32)
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) 64)
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))))) 128)
(pow.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
Outputs
(+.f64 y (*.f64 -1 (*.f64 y x)))
(+.f64 y (*.f64 y (*.f64 -1 x)))
(+.f64 y (*.f64 y (neg.f64 x)))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(+.f64 (*.f64 z x) (+.f64 y (*.f64 -1 (*.f64 y x))))
(+.f64 y (+.f64 (*.f64 y (*.f64 -1 x)) (*.f64 x z)))
(+.f64 y (+.f64 (*.f64 y (neg.f64 x)) (*.f64 x z)))
(+.f64 y (*.f64 x (+.f64 z (neg.f64 y))))
(*.f64 z x)
(*.f64 x z)
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(*.f64 -1 (*.f64 y (-.f64 x 1)))
(*.f64 y (+.f64 1 (*.f64 -1 x)))
(*.f64 y (+.f64 1 (neg.f64 x)))
(*.f64 y (-.f64 1 x))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
(+.f64 (*.f64 z x) (*.f64 -1 (*.f64 y (-.f64 x 1))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (*.f64 -1 x))))
(+.f64 (*.f64 x z) (*.f64 y (+.f64 1 (neg.f64 x))))
(+.f64 (*.f64 x z) (*.f64 y (-.f64 1 x)))
y
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(*.f64 (-.f64 z y) x)
(*.f64 x (-.f64 z y))
(-.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 0)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1 (+.f64 y (*.f64 (-.f64 z y) x)))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 1/2)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/4))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 1/4)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 1/8)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1/2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/2) 2)
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 1/4 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4))
(+.f64 y (*.f64 x (-.f64 z y)))
(*.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1/4) 4)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 2) 2)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 4) 4)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8) 8)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)) 16)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))) 32)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) 64)
(+.f64 y (*.f64 x (-.f64 z y)))
(/.f64 (+.f64 (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8)))) (*.f64 2 (*.f64 2 (*.f64 2 (*.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 8))))) 128)
(+.f64 y (*.f64 x (-.f64 z y)))
(pow.f64 (+.f64 y (*.f64 (-.f64 z y) x)) 1)
(+.f64 y (*.f64 x (-.f64 z y)))

eval22.0ms (0.3%)

Compiler

Compiled 1385 to 594 computations (57.1% saved)

prune21.0ms (0.3%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New1390139
Fresh011
Picked011
Done077
Total1399148
Error
0.0b
Counts
148 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 z y) x) y)
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
28.9b
(+.f64 (*.f64 (neg.f64 y) x) (*.f64 x z))
11.7b
(+.f64 y (*.f64 z x))
28.9b
(*.f64 (-.f64 z y) x)
39.8b
(*.f64 z x)
23.9b
(*.f64 y (-.f64 1 x))
51.7b
(*.f64 y (neg.f64 x))
34.7b
y
Compiler

Compiled 74 to 49 computations (33.8% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0%)

Pruning

9 alts after pruning (1 fresh and 8 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done088
Total099
Error
0.0b
Counts
9 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(+.f64 (*.f64 (-.f64 z y) x) y)
0.0b
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
28.9b
(+.f64 (*.f64 (neg.f64 y) x) (*.f64 x z))
11.7b
(+.f64 y (*.f64 z x))
28.9b
(*.f64 (-.f64 z y) x)
39.8b
(*.f64 z x)
23.9b
(*.f64 y (-.f64 1 x))
51.7b
(*.f64 y (neg.f64 x))
34.7b
y
Compiler

Compiled 74 to 49 computations (33.8% saved)

regimes33.0ms (0.4%)

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

4 calls:

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

Compiled 88 to 41 computations (53.4% saved)

regimes21.0ms (0.3%)

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

3 calls:

7.0ms
z
7.0ms
x
6.0ms
y
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
Compiler

Compiled 67 to 29 computations (56.7% saved)

regimes45.0ms (0.5%)

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

3 calls:

15.0ms
x
14.0ms
z
14.0ms
y
Results
ErrorSegmentsBranch
1.0b3x
8.3b3y
6.4b3z
Compiler

Compiled 44 to 24 computations (45.5% saved)

bsearch28.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
15.0ms
0.007067355822091952
1196.9616330499625
13.0ms
-199034939631.31638
-54656746.85122524
Results
25.0ms272×body256valid
Compiler

Compiled 324 to 217 computations (33% saved)

regimes55.0ms (0.7%)

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

3 calls:

20.0ms
y
20.0ms
z
13.0ms
x
Results
ErrorSegmentsBranch
10.1b3x
13.1b5y
14.8b5z
Compiler

Compiled 33 to 20 computations (39.4% saved)

bsearch29.0ms (0.4%)

Algorithm
binary-search
Steps
TimeLeftRight
13.0ms
5.966293544111503e-10
7.422735924428837e-7
15.0ms
-8.953444490115432e-9
-6.262394371606599e-14
Results
26.0ms272×body256valid
Compiler

Compiled 324 to 234 computations (27.8% saved)

regimes63.0ms (0.8%)

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

3 calls:

24.0ms
x
21.0ms
y
17.0ms
z
Results
ErrorSegmentsBranch
17.6b6x
16.2b5y
16.3b5z
Compiler

Compiled 28 to 18 computations (35.7% saved)

bsearch43.0ms (0.5%)

Algorithm
binary-search
Steps
TimeLeftRight
7.0ms
3.0181821670730834e-52
5.873977063857933e-52
11.0ms
8.122512876266514e-111
6.289492019500586e-109
10.0ms
1.592916583964079e-192
1.8145765386194696e-191
14.0ms
-2.792187060317988e-171
-8.089379035791449e-175
Results
37.0ms400×body256valid
Compiler

Compiled 418 to 313 computations (25.1% saved)

regimes64.0ms (0.8%)

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

3 calls:

25.0ms
x
22.0ms
z
16.0ms
y
Results
ErrorSegmentsBranch
17.0b8x
24.1b5y
24.5b7z
Compiler

Compiled 23 to 15 computations (34.8% saved)

bsearch93.0ms (1.1%)

Algorithm
binary-search
Steps
TimeLeftRight
17.0ms
8.33679959912203e+92
3.1546974131317334e+95
15.0ms
2.2119088758574294e+79
6.758135013058539e+82
9.0ms
1.0182907171037824e+58
3.6591572445601215e+58
9.0ms
1.30651160360191e+30
4.549792091761281e+30
12.0ms
3.4675317698244856e-20
2.5060615801050497e-18
15.0ms
-8.953444490115432e-9
-6.262394371606599e-14
17.0ms
-2.794765535325789e+78
-1.943090043546341e+73
Results
75.0ms816×body256valid
9.0ms84×body256infinite
Compiler

Compiled 735 to 542 computations (26.3% saved)

regimes37.0ms (0.4%)

Accuracy

Total -40.8b remaining (-194.2%)

Threshold costs -40.8b (-194.2%)

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

3 calls:

14.0ms
y
14.0ms
z
9.0ms
x
Results
ErrorSegmentsBranch
21.0b3x
24.1b5y
25.8b5z
Compiler

Compiled 19 to 13 computations (31.6% saved)

bsearch26.0ms (0.3%)

Algorithm
binary-search
Steps
TimeLeftRight
11.0ms
3.4675317698244856e-20
2.5060615801050497e-18
15.0ms
-8.953444490115432e-9
-6.262394371606599e-14
Results
23.0ms256×body256valid
Compiler

Compiled 210 to 157 computations (25.2% saved)

simplify7.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
072406
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
(+.f64 (*.f64 (-.f64 z y) x) y)
(if (<=.f64 x -55000000) (*.f64 (-.f64 z y) x) (if (<=.f64 x 1) (+.f64 y (*.f64 z x)) (*.f64 (-.f64 z y) x)))
(if (<=.f64 x -870426590122533/9671406556917033397649408) (*.f64 (-.f64 z y) x) (if (<=.f64 x 6346860552976803/75557863725914323419136) (*.f64 y (-.f64 1 x)) (*.f64 (-.f64 z y) x)))
(if (<=.f64 y -1870965447976631/2175541218577478036232553294038911497542013410209922757424923190068852981190050786259609609278379154099770693575665668158859588967025488852621393833027941793561932885341770625153958412288) (*.f64 y (-.f64 1 x)) (if (<=.f64 y 5778957899650313/321053216647239593947814323906257853121968982105906607635393121525191171526921436896586092302098904493834409720225721295960658706676257560005359788247795462033399882271023229870096664909931806474077957259264) (*.f64 z x) (if (<=.f64 y 3384606560206073/338460656020607282663380637712778772392143197677711984273740183180495765112991409062496875745134225841966700556811959451779072) (*.f64 y (-.f64 1 x)) (if (<=.f64 y 5931188266773141/13479973333575319897333507543509815336818572211270286240551805124608) (*.f64 z x) (*.f64 y (-.f64 1 x))))))
(if (<=.f64 x -2749999999999999869091406693783616732381031427894981851579760129284579302309888) (*.f64 y (neg.f64 x)) (if (<=.f64 x -7288990951312319/79228162514264337593543950336) (*.f64 z x) (if (<=.f64 x 6230756230241793/5192296858534827628530496329220096) y (if (<=.f64 x 3900000000000000105697534541824) (*.f64 z x) (if (<=.f64 x 17000000000000000299220050373850724098239315364942769553408) (*.f64 y (neg.f64 x)) (if (<=.f64 x 179999999999999997415090464761131430319373630034400648404260174402553784691589120) (*.f64 z x) (if (<=.f64 x 4600000000000000315327655320564451360706334303466828687512144096586701378750117118243218915328) (*.f64 y (neg.f64 x)) (*.f64 z x))))))))
(if (<=.f64 x -3249592603124123/38685626227668133590597632) (*.f64 z x) (if (<=.f64 x 1492785346828763/649037107316853453566312041152512) y (*.f64 z x)))
y
Outputs
(+.f64 (*.f64 (-.f64 1 x) y) (*.f64 x z))
(+.f64 (*.f64 (-.f64 z y) x) y)
(if (<=.f64 x -55000000) (*.f64 (-.f64 z y) x) (if (<=.f64 x 1) (+.f64 y (*.f64 z x)) (*.f64 (-.f64 z y) x)))
(if (<=.f64 x -870426590122533/9671406556917033397649408) (*.f64 (-.f64 z y) x) (if (<=.f64 x 6346860552976803/75557863725914323419136) (*.f64 y (-.f64 1 x)) (*.f64 (-.f64 z y) x)))
(if (<=.f64 y -1870965447976631/2175541218577478036232553294038911497542013410209922757424923190068852981190050786259609609278379154099770693575665668158859588967025488852621393833027941793561932885341770625153958412288) (*.f64 y (-.f64 1 x)) (if (<=.f64 y 5778957899650313/321053216647239593947814323906257853121968982105906607635393121525191171526921436896586092302098904493834409720225721295960658706676257560005359788247795462033399882271023229870096664909931806474077957259264) (*.f64 z x) (if (<=.f64 y 3384606560206073/338460656020607282663380637712778772392143197677711984273740183180495765112991409062496875745134225841966700556811959451779072) (*.f64 y (-.f64 1 x)) (if (<=.f64 y 5931188266773141/13479973333575319897333507543509815336818572211270286240551805124608) (*.f64 z x) (*.f64 y (-.f64 1 x))))))
(if (<=.f64 x -2749999999999999869091406693783616732381031427894981851579760129284579302309888) (*.f64 y (neg.f64 x)) (if (<=.f64 x -7288990951312319/79228162514264337593543950336) (*.f64 z x) (if (<=.f64 x 6230756230241793/5192296858534827628530496329220096) y (if (<=.f64 x 3900000000000000105697534541824) (*.f64 z x) (if (<=.f64 x 17000000000000000299220050373850724098239315364942769553408) (*.f64 y (neg.f64 x)) (if (<=.f64 x 179999999999999997415090464761131430319373630034400648404260174402553784691589120) (*.f64 z x) (if (<=.f64 x 4600000000000000315327655320564451360706334303466828687512144096586701378750117118243218915328) (*.f64 y (neg.f64 x)) (*.f64 z x))))))))
(if (<=.f64 x -3249592603124123/38685626227668133590597632) (*.f64 z x) (if (<=.f64 x 1492785346828763/649037107316853453566312041152512) y (*.f64 z x)))
y
Compiler

Compiled 192 to 106 computations (44.8% saved)

soundness0.0ms (0%)

end64.0ms (0.8%)

Compiler

Compiled 171 to 78 computations (54.4% saved)

Profiling

Loading profile data...