Details

Time bar (total: 7.8s)

analyze460.0ms (5.9%)

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
0%0%99.9%0.1%0%0%0%7
0%0%99.9%0.1%0%0%0%8
0%0%99.9%0.1%0%0%0%9
22%21.1%74.5%0.1%4.3%0%0%10
26.6%25.4%69.8%0.1%4.7%0%0%11
32.3%30.6%64.2%0.1%5.1%0%0%12
Compiler

Compiled 15 to 11 computations (26.7% saved)

sample1.7s (22%)

Results
1.4s8256×body256valid
333.0ms1666×body256infinite
Bogosity

preprocess71.0ms (0.9%)

Algorithm
egg-herbie
Rules
738×fma-def_binary64
512×times-frac_binary64
390×distribute-frac-neg_binary64
340×distribute-rgt-neg-in_binary64
276×sub-neg_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02564
16964
217856
358156
4172956
5593644
033
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
2
Call 2
Inputs
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
(/.f64 (*.f64 4 (-.f64 (-.f64 y x) (*.f64 z 1/2))) z)
(/.f64 (*.f64 4 (-.f64 (-.f64 z y) (*.f64 x 1/2))) x)
(/.f64 (*.f64 4 (-.f64 (-.f64 x z) (*.f64 y 1/2))) y)
Outputs
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
(/.f64 4 (/.f64 z (-.f64 x (+.f64 y (*.f64 z 1/2)))))
(/.f64 (-.f64 x (+.f64 y (*.f64 z 1/2))) (/.f64 z 4))
(/.f64 (-.f64 x (fma.f64 z 1/2 y)) (/.f64 z 4))
(*.f64 (-.f64 x (fma.f64 z 1/2 y)) (/.f64 4 z))
(*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(/.f64 (*.f64 4 (-.f64 (-.f64 y x) (*.f64 z 1/2))) z)
(/.f64 4 (/.f64 z (-.f64 (-.f64 y x) (*.f64 z 1/2))))
(*.f64 (/.f64 4 z) (+.f64 (-.f64 y x) (*.f64 z -1/2)))
(*.f64 (-.f64 y (fma.f64 z 1/2 x)) (/.f64 4 z))
(*.f64 4 (/.f64 (-.f64 y (fma.f64 z 1/2 x)) z))
(fma.f64 (-.f64 y x) (/.f64 4 z) -2)
(/.f64 (*.f64 4 (-.f64 (-.f64 z y) (*.f64 x 1/2))) x)
(/.f64 4 (/.f64 x (-.f64 z (+.f64 y (*.f64 x 1/2)))))
(*.f64 (/.f64 4 x) (+.f64 (-.f64 z y) (*.f64 x -1/2)))
(*.f64 (-.f64 z (fma.f64 x 1/2 y)) (/.f64 4 x))
(*.f64 4 (/.f64 (-.f64 z (fma.f64 x 1/2 y)) x))
(fma.f64 (-.f64 z y) (/.f64 4 x) -2)
(/.f64 (*.f64 4 (-.f64 (-.f64 x z) (*.f64 y 1/2))) y)
(*.f64 (/.f64 4 y) (+.f64 (-.f64 x z) (*.f64 y -1/2)))
(*.f64 (-.f64 x (fma.f64 y 1/2 z)) (/.f64 4 y))
(*.f64 4 (/.f64 (fma.f64 y -1/2 (-.f64 x z)) y))
(*.f64 4 (/.f64 (-.f64 x (fma.f64 y 1/2 z)) y))
(fma.f64 (-.f64 x z) (/.f64 4 y) -2)
Compiler

Compiled 17 to 13 computations (23.5% saved)

simplify58.0ms (0.7%)

Algorithm
egg-herbie
Rules
925×fma-neg_binary64
796×fma-def_binary64
768×times-frac_binary64
456×cancel-sign-sub-inv_binary64
435×associate-/l*_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
01116
12416
25914
318414
451614
5166811
6605611
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
Outputs
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
(/.f64 4 (/.f64 z (-.f64 x (+.f64 y (*.f64 z 1/2)))))
(*.f64 (/.f64 4 z) (+.f64 (-.f64 x y) (*.f64 z -1/2)))
(*.f64 (-.f64 x (fma.f64 z 1/2 y)) (/.f64 4 z))
(*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))
(*.f64 4 (/.f64 (-.f64 (fma.f64 z -1/2 x) y) z))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)

eval1.0ms (0%)

Compiler

Compiled 22 to 14 computations (36.4% saved)

prune3.0ms (0%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.0b
Counts
3 → 2
Alt Table
Click to see full alt table
StatusErrorProgram
0.2b
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
0.0b
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
Compiler

Compiled 25 to 18 computations (28% saved)

localize31.0ms (0.4%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
Compiler

Compiled 41 to 22 computations (46.3% saved)

series14.0ms (0.2%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
2.0ms
y
@0
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
2.0ms
z
@0
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
2.0ms
x
@0
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
1.0ms
x
@-inf
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
1.0ms
x
@inf
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)

rewrite83.0ms (1.1%)

Algorithm
batch-egg-rewrite
Rules
649×log-prod_binary64
434×fma-def_binary64
342×pow2_binary64
250×fma-neg_binary64
235×pow1/3_binary64
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01116
125516
2370214
Stop Event
node limit
Counts
1 → 49
Calls
Call 1
Inputs
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 1 (/.f64 z (-.f64 x (fma.f64 z 1/2 y)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (*.f64 (-.f64 x (fma.f64 z 1/2 y)) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x (fma.f64 z 1/2 y)) (*.f64 4 (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))) (/.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))) (pow.f64 (cbrt.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))) 2) (cbrt.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) 2) (*.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 2 (sqrt.f64 (/.f64 z (-.f64 x (fma.f64 z 1/2 y))))) (/.f64 2 (sqrt.f64 (/.f64 z (-.f64 x (fma.f64 z 1/2 y))))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 2 (sqrt.f64 (-.f64 x (fma.f64 z 1/2 y)))) (*.f64 (*.f64 2 (sqrt.f64 (-.f64 x (fma.f64 z 1/2 y)))) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (-.f64 x (fma.f64 z 1/2 y)) -4) (/.f64 1 (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) 1) (/.f64 4 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 4 z) (-.f64 x (fma.f64 z 1/2 y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) 2) 1) (/.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 2 (sqrt.f64 (-.f64 x (fma.f64 z 1/2 y)))) 1) (/.f64 (*.f64 2 (sqrt.f64 (-.f64 x (fma.f64 z 1/2 y)))) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 4 (pow.f64 (cbrt.f64 z) 2)) (/.f64 (-.f64 x (fma.f64 z 1/2 y)) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) (pow.f64 (cbrt.f64 z) 2)) (/.f64 4 (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 z) 2)) (/.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) 2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (*.f64 2 (sqrt.f64 (-.f64 x (fma.f64 z 1/2 y)))) (pow.f64 (cbrt.f64 z) 2)) (/.f64 (*.f64 2 (sqrt.f64 (-.f64 x (fma.f64 z 1/2 y)))) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 4 (sqrt.f64 z)) (/.f64 (-.f64 x (fma.f64 z 1/2 y)) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) (sqrt.f64 z)) (/.f64 4 (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 z)) (/.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) 2) (sqrt.f64 z)) (/.f64 (cbrt.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y)))) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 16 (pow.f64 (/.f64 z (-.f64 x (fma.f64 z 1/2 y))) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 2 (sqrt.f64 (/.f64 z (-.f64 x (fma.f64 z 1/2 y))))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 1/4 (/.f64 z (-.f64 x (fma.f64 z 1/2 y)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (pow.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))) 3) (pow.f64 z 3)) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 1/4 (/.f64 z (-.f64 x (fma.f64 z 1/2 y)))) 1) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 16 (pow.f64 (/.f64 z (-.f64 x (fma.f64 z 1/2 y))) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (*.f64 4 (-.f64 x (fma.f64 z 1/2 y))) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 4 (/.f64 (-.f64 x (fma.f64 z 1/2 y)) z))) 1))))))

simplify122.0ms (1.6%)

Algorithm
egg-herbie
Rules
653×fma-def_binary64
598×fma-neg_binary64
520×div-sub_binary64
349×times-frac_binary64
305×sub-neg_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
032606
179550
2161545
3278545
4498356
5865353
61865353
73003353
85255353
97107353
Stop Event
node limit
Counts
85 → 66
Calls
Call 1
Inputs
(*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(*.f64 4 (/.f64 x z))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(*.f64 4 (/.f64 x z))
(+.f64 (*.f64 -4 (+.f64 1/2 (/.f64 y z))) (*.f64 4 (/.f64 x z)))
(+.f64 (*.f64 -4 (+.f64 1/2 (/.f64 y z))) (*.f64 4 (/.f64 x z)))
(+.f64 (*.f64 -4 (+.f64 1/2 (/.f64 y z))) (*.f64 4 (/.f64 x z)))
(*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z)))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z)))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z)))
(*.f64 -4 (/.f64 y z))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(*.f64 -4 (/.f64 y z))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(*.f64 4 (/.f64 (-.f64 x y) z))
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
Outputs
(*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z))
(*.f64 -4 (/.f64 (fma.f64 1/2 z y) z))
(*.f64 (fma.f64 1/2 z y) (/.f64 -4 z))
(fma.f64 -4 (/.f64 y z) -2)
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 x z))
(*.f64 x (/.f64 4 z))
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 x z))
(*.f64 x (/.f64 4 z))
(+.f64 (*.f64 -4 (+.f64 1/2 (/.f64 y z))) (*.f64 4 (/.f64 x z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (+.f64 1/2 (/.f64 y z))) (*.f64 4 (/.f64 x z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (+.f64 1/2 (/.f64 y z))) (*.f64 4 (/.f64 x z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z))
(*.f64 4 (/.f64 (+.f64 x (*.f64 -1/2 z)) z))
(fma.f64 4 (/.f64 x z) -2)
(fma.f64 (/.f64 4 z) x -2)
(fma.f64 x (/.f64 4 z) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 (-.f64 x (*.f64 1/2 z)) z)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 -4 (/.f64 y z))
(/.f64 (*.f64 -4 y) z)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 -4 (/.f64 y z))
(/.f64 (*.f64 -4 y) z)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (-.f64 (/.f64 x z) 1/2)))
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 (-.f64 x y) z))
(*.f64 (-.f64 x y) (/.f64 4 z))
(*.f64 -4 (/.f64 (-.f64 y x) z))
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 (+.f64 y (*.f64 1/2 z)) z)))
(fma.f64 -4 (/.f64 (fma.f64 1/2 z y) z) (*.f64 4 (/.f64 x z)))
(fma.f64 (/.f64 -4 z) (fma.f64 1/2 z y) (*.f64 x (/.f64 4 z)))
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 -4 (/.f64 (-.f64 y x) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)

localize16.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
Compiler

Compiled 22 to 12 computations (45.5% saved)

series11.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

TimeVariablePointExpression
3.0ms
z
@-inf
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
2.0ms
z
@0
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
1.0ms
x
@0
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
1.0ms
y
@0
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
1.0ms
z
@inf
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)

rewrite76.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
509×unpow-prod-down_binary64
418×log-prod_binary64
368×prod-diff_binary64
257×pow2_binary64
245×pow-prod-down_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0911
119911
2255011
Stop Event
node limit
Counts
1 → 37
Calls
Call 1
Inputs
(fma.f64 (-.f64 x y) (/.f64 4 z) -2)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 -2 (*.f64 (-.f64 x y) (/.f64 4 z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (-.f64 x y) (/.f64 4 z)) -2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 (*.f64 (-.f64 x y) (/.f64 4 z)) 1) -2)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 2)) (log.f64 (cbrt.f64 (exp.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))) (log.f64 (sqrt.f64 (exp.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)) (cbrt.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 2)) (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)) (sqrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/3) (fma.f64 (-.f64 x y) (/.f64 4 z) -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 3)) 1/3) (pow.f64 (sqrt.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 3)) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (*.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 2) 1/3) (cbrt.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 5/2) 1/3) (cbrt.f64 (sqrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 2) 3) (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (sqrt.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 3) (pow.f64 (sqrt.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (*.f64 (-.f64 x y) (/.f64 4 z)) 3) -8) (+.f64 (pow.f64 (*.f64 (-.f64 x y) (/.f64 4 z)) 2) (-.f64 4 (*.f64 (*.f64 (-.f64 x y) (/.f64 4 z)) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (*.f64 (-.f64 x y) (/.f64 4 z)) 2) 4) (fma.f64 (-.f64 x y) (/.f64 4 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (fma.f64 (-.f64 x y) (/.f64 4 z) -2)) 1) 1))))))

simplify122.0ms (1.6%)

Algorithm
egg-herbie
Rules
854×fma-def_binary64
667×fma-neg_binary64
238×cancel-sign-sub-inv_binary64
136×distribute-rgt-in_binary64
84×unsub-neg_binary64
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
020515
143461
281461
3124353
4230353
5440353
6911353
71818353
82829353
93186353
103276353
113441353
123441353
Stop Event
saturated
Counts
73 → 50
Calls
Call 1
Inputs
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(*.f64 4 (/.f64 x z))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(*.f64 4 (/.f64 x z))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (*.f64 4 (/.f64 x z)) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(*.f64 -4 (/.f64 y z))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(*.f64 -4 (/.f64 y z))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(*.f64 4 (/.f64 (-.f64 x y) z))
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
Outputs
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
(fma.f64 -4 (/.f64 y z) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 x z))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 x z))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 x z)) 2)
(fma.f64 4 (/.f64 x z) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 -4 (/.f64 y z))
(/.f64 -4 (/.f64 z y))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 -4 (/.f64 y z))
(/.f64 -4 (/.f64 z y))
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(*.f64 4 (/.f64 (-.f64 x y) z))
(/.f64 (*.f64 4 (-.f64 x y)) z)
(/.f64 -4 (/.f64 z (-.f64 y x)))
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
-2
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)
(-.f64 (*.f64 4 (/.f64 (-.f64 x y) z)) 2)
(+.f64 (*.f64 -4 (/.f64 y z)) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 -4 (/.f64 y z) (fma.f64 4 (/.f64 x z) -2))
(fma.f64 4 (/.f64 (-.f64 x y) z) -2)
(fma.f64 (/.f64 -4 z) (-.f64 y x) -2)

eval55.0ms (0.7%)

Compiler

Compiled 1593 to 1025 computations (35.7% saved)

prune39.0ms (0.5%)

Pruning

9 alts after pruning (9 fresh and 0 done)

PrunedKeptTotal
New1079116
Fresh000
Picked101
Done101
Total1099118
Error
0b
Counts
118 → 9
Alt Table
Click to see full alt table
StatusErrorProgram
42.4b
(/.f64 (*.f64 -4 y) z)
24.8b
(*.f64 4 (/.f64 (-.f64 x y) z))
45.1b
(*.f64 4 (/.f64 x z))
0.0b
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
18.0b
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
38.2b
-2
42.5b
(/.f64 -4 (/.f64 z y))
20.8b
(-.f64 (*.f64 4 (/.f64 x z)) 2)
45.2b
(*.f64 x (/.f64 4 z))
Compiler

Compiled 160 to 122 computations (23.8% saved)

localize27.0ms (0.3%)

Local error

Found 3 expressions with local error:

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

Compiled 49 to 24 computations (51% saved)

series18.0ms (0.2%)

Counts
3 → 18
Calls

21 calls:

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

rewrite125.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
617×log-prod_binary64
363×pow-prod-down_binary64
328×fma-def_binary64
318×pow2_binary64
221×pow1/3_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01128
124528
2337928
Stop Event
node limit
Counts
3 → 124
Calls
Call 1
Inputs
(*.f64 -4 (/.f64 y z))
(+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z)))
(*.f64 4 (/.f64 x z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 -4) (/.f64 y z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 -4) (/.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -4) (/.f64 y z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 -4) (/.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 -4 (/.f64 y z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -4 (/.f64 z y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 -4 y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -4 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 -4 y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -4 y) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -4 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -4 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 y) -4) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -4 (neg.f64 y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -4 (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 -4 (/.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (/.f64 y z) 3) -64) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (*.f64 -4 y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -4) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 -4 (/.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 y z) 3) -64))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 -4 (/.f64 y z))) 1))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z)) (/.f64 (*.f64 16 (pow.f64 (/.f64 x z) 2)) (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) (pow.f64 (cbrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) 2) (cbrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) (sqrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (fma.f64 (pow.f64 (/.f64 x z) 3) 64 (*.f64 (pow.f64 (/.f64 y z) 3) -64)) (/.f64 1 (fma.f64 (*.f64 4 (/.f64 x z)) (-.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z))) (*.f64 (pow.f64 (/.f64 y z) 2) 16))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) (*.f64 16 (pow.f64 (/.f64 x z) 2))) (/.f64 1 (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (*.f64 4 (/.f64 x z)) (-.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z))) (*.f64 (pow.f64 (/.f64 y z) 2) 16)) (fma.f64 (pow.f64 (/.f64 x z) 3) 64 (*.f64 (pow.f64 (/.f64 y z) 3) -64))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z) (-.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) (*.f64 16 (pow.f64 (/.f64 x z) 2)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (/.f64 x z) 3) 64 (*.f64 (pow.f64 (/.f64 y z) 3) -64)) (fma.f64 (*.f64 4 (/.f64 x z)) (-.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z))) (*.f64 (pow.f64 (/.f64 y z) 2) 16)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (pow.f64 (/.f64 x z) 3) 64 (*.f64 (pow.f64 (/.f64 y z) 3) -64)) (fma.f64 16 (pow.f64 (/.f64 x z) 2) (fma.f64 (pow.f64 (/.f64 y z) 2) 16 (neg.f64 (/.f64 (*.f64 (*.f64 -4 y) (*.f64 4 x)) (*.f64 z z))))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) (*.f64 16 (pow.f64 (/.f64 x z) 2))) (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (fma.f64 (pow.f64 (/.f64 x z) 3) 64 (*.f64 (pow.f64 (/.f64 y z) 3) -64))) (neg.f64 (fma.f64 (*.f64 4 (/.f64 x z)) (-.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z))) (*.f64 (pow.f64 (/.f64 y z) 2) 16))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) (*.f64 16 (pow.f64 (/.f64 x z) 2)))) (neg.f64 (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (*.f64 -4 y) z (*.f64 z (*.f64 4 x))) (*.f64 z z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (fma.f64 (*.f64 4 x) z (*.f64 z (*.f64 -4 y))) (*.f64 z z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 16 (pow.f64 (/.f64 x z) 2)) (*.f64 (pow.f64 (/.f64 y z) 2) 16)) (-.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (*.f64 4 (/.f64 x z)) (-.f64 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z))) (*.f64 (pow.f64 (/.f64 y z) 2) 16)) (fma.f64 (pow.f64 (/.f64 x z) 3) 64 (*.f64 (pow.f64 (/.f64 y z) 3) -64))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (/.f64 (-.f64 (*.f64 -4 y) (*.f64 4 x)) z) (-.f64 (*.f64 (pow.f64 (/.f64 y z) 2) 16) (*.f64 16 (pow.f64 (/.f64 x z) 2)))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -4 (/.f64 y z)))) (pow.f64 (exp.f64 4) (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 -4) (/.f64 y z)) (+.f64 1 (expm1.f64 (*.f64 4 (/.f64 x z))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 -4 (/.f64 y z)))) (+.f64 1 (expm1.f64 (*.f64 4 (/.f64 x z))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 4 (/.f64 x z)))) (pow.f64 (exp.f64 -4) (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (pow.f64 (exp.f64 4) (/.f64 x z)) (+.f64 1 (expm1.f64 (*.f64 -4 (/.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (*.f64 4 (/.f64 x z)))) (+.f64 1 (expm1.f64 (*.f64 -4 (/.f64 y z))))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -4 (/.f64 y z) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (*.f64 (/.f64 1 z) -4) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 y z) -4 (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -4 (/.f64 y z)) 1 (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 4 (/.f64 x z) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (*.f64 (/.f64 1 z) 4) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x z) 4 (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 4 (/.f64 x z)) 1 (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (*.f64 4 (/.f64 x z)) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (*.f64 (cbrt.f64 (/.f64 y z)) -4) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (*.f64 (cbrt.f64 (/.f64 x z)) 4) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) (pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 2) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 2) (cbrt.f64 (*.f64 -4 (/.f64 y z))) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) 2) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) 2) (cbrt.f64 (*.f64 4 (/.f64 x z))) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 y z)) (*.f64 (sqrt.f64 (/.f64 y z)) -4) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x z)) (*.f64 (sqrt.f64 (/.f64 x z)) 4) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 -4 (/.f64 y z))) (sqrt.f64 (*.f64 -4 (/.f64 y z))) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 4 (/.f64 x z))) (sqrt.f64 (*.f64 4 (/.f64 x z))) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -4 y) (/.f64 1 z) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 4 x) (/.f64 1 z) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 -4 (pow.f64 (cbrt.f64 z) 2)) (/.f64 y (cbrt.f64 z)) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 -4 (sqrt.f64 z)) (/.f64 y (sqrt.f64 z)) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 4 (pow.f64 (cbrt.f64 z) 2)) (/.f64 x (cbrt.f64 z)) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 4 (sqrt.f64 z)) (/.f64 x (sqrt.f64 z)) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -4 (pow.f64 (cbrt.f64 (/.f64 y z)) 2)) (cbrt.f64 (/.f64 y z)) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 -4 (sqrt.f64 (/.f64 y z))) (sqrt.f64 (/.f64 y z)) (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 4 (pow.f64 (cbrt.f64 (/.f64 x z)) 2)) (cbrt.f64 (/.f64 x z)) (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 4 (sqrt.f64 (/.f64 x z))) (sqrt.f64 (/.f64 x z)) (*.f64 -4 (/.f64 y z)))))))
((#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 4) (/.f64 x z))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 4) (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 4) (/.f64 x z)))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 4) (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 4 (/.f64 x z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 4 (/.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 4 x)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 x) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 4 x)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 4 x) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 4 x) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 4 x) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 (neg.f64 x) 4) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 (neg.f64 x)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 4 (/.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 16 (pow.f64 (/.f64 x z) 2)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 4 (/.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 (/.f64 x z) 3) 64) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (*.f64 4 x)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 16 (pow.f64 (/.f64 x z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 4) (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 4 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 x z) 3) 64))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (*.f64 4 (/.f64 x z))) 1))))))

simplify106.0ms (1.4%)

Algorithm
egg-herbie
Rules
406×fma-def_binary64
382×fma-neg_binary64
104×div-sub_binary64
97×associate-/l*_binary64
88×cancel-sign-sub-inv_binary64
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
020174
136174
265174
397174
4165162
5277162
6535162
7946162
81709162
92053162
102163162
112285162
122290162
132290162
Stop Event
saturated
Counts
142 → 130
Calls
Call 1
Inputs
(*.f64 4 (/.f64 x z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(*.f64 -4 (/.f64 y z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
Outputs
(*.f64 4 (/.f64 x z))
(/.f64 (*.f64 4 x) z)
(*.f64 -4 (/.f64 y z))
(*.f64 y (/.f64 -4 z))
(*.f64 -4 (/.f64 y z))
(*.f64 y (/.f64 -4 z))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(/.f64 (+.f64 (*.f64 -4 y) (*.f64 4 x)) z)
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(*.f64 -1 (/.f64 (+.f64 (*.f64 4 y) (*.f64 -4 x)) z))
(/.f64 (fma.f64 -4 y (*.f64 4 x)) z)
(/.f64 (fma.f64 4 x (*.f64 -4 y)) z)
(/.f64 (*.f64 4 (-.f64 x y)) z)
(*.f64 (/.f64 4 z) (-.f64 x y))
(*.f64 -4 (/.f64 y z))
(*.f64 y (/.f64 -4 z))
(*.f64 4 (/.f64 x z))
(/.f64 (*.f64 4 x) z)
(*.f64 4 (/.f64 x z))
(/.f64 (*.f64 4 x) z)

localize5.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 4 (/.f64 x z))
Compiler

Compiled 14 to 7 computations (50% saved)

localize6.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.8b
(/.f64 -4 (/.f64 z y))
Compiler

Compiled 14 to 7 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
0.0ms
z
@0
(/.f64 -4 (/.f64 z y))
0.0ms
z
@-inf
(/.f64 -4 (/.f64 z y))
0.0ms
z
@inf
(/.f64 -4 (/.f64 z y))
0.0ms
y
@inf
(/.f64 -4 (/.f64 z y))
0.0ms
y
@-inf
(/.f64 -4 (/.f64 z y))

rewrite60.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
698×pow1_binary64
653×add-log-exp_binary64
653×log1p-expm1-u_binary64
653×expm1-log1p-u_binary64
640×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11347
217727
Stop Event
node limit
Counts
1 → 26
Calls
Call 1
Inputs
(/.f64 -4 (/.f64 z y))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 -4 (/.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -4 (/.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 y (/.f64 -4 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 -4 (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 -4 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) (pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 2) (cbrt.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 -4 (/.f64 y z))) (sqrt.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 1 (/.f64 (neg.f64 z) y)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 y z) -4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -4 z) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 -4 (neg.f64 z)) (neg.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 -4 z) 1) y)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 -4 z) (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 -4 z) (sqrt.f64 y)) (sqrt.f64 y))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -4 (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -4 (/.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 -4 (/.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 z y) -1/4) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 16 (pow.f64 (/.f64 z y) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 -4) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -4 (/.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -4 (/.f64 y z))))))))

simplify14.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-*r/_binary64
associate-*l/_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
19168
213168
317168
418168
Stop Event
saturated
Counts
50 → 26
Calls
Call 1
Inputs
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
Outputs
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))

localize7.0ms (0.1%)

Local error

Found 1 expressions with local error:

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

Compiled 22 to 8 computations (63.6% saved)

series9.0ms (0.1%)

Counts
1 → 24
Calls

9 calls:

TimeVariablePointExpression
4.0ms
z
@-inf
(/.f64 (-.f64 x y) z)
1.0ms
z
@inf
(/.f64 (-.f64 x y) z)
1.0ms
x
@-inf
(/.f64 (-.f64 x y) z)
1.0ms
x
@0
(/.f64 (-.f64 x y) z)
1.0ms
x
@inf
(/.f64 (-.f64 x y) z)

rewrite64.0ms (0.8%)

Algorithm
batch-egg-rewrite
Rules
894×pow1_binary64
835×add-log-exp_binary64
835×log1p-expm1-u_binary64
835×expm1-log1p-u_binary64
816×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11387
221307
Stop Event
node limit
Counts
1 → 33
Calls
Call 1
Inputs
(/.f64 (-.f64 x y) z)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 x z) (neg.f64 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (/.f64 x z) (/.f64 y z))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (/.f64 (-.f64 x y) z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x y) (/.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (-.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (cbrt.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (-.f64 x y)) 2) (*.f64 (cbrt.f64 (-.f64 x y)) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) (sqrt.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (-.f64 x y)) (*.f64 (sqrt.f64 (-.f64 x y)) (/.f64 1 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (neg.f64 (-.f64 x y)) (/.f64 1 (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (-.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 x y)) 2) 1) (/.f64 (cbrt.f64 (-.f64 x y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (-.f64 x y)) 1) (/.f64 (sqrt.f64 (-.f64 x y)) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (pow.f64 (cbrt.f64 z) 2)) (/.f64 (-.f64 x y) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 x y)) 2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (sqrt.f64 (-.f64 x y)) (pow.f64 (cbrt.f64 z) 2)) (/.f64 (sqrt.f64 (-.f64 x y)) (cbrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 (sqrt.f64 z)) (/.f64 (-.f64 x y) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (pow.f64 (cbrt.f64 (-.f64 x y)) 2) (sqrt.f64 z)) (/.f64 (cbrt.f64 (-.f64 x y)) (sqrt.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (-.f64 x y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (-.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (/.f64 (-.f64 x y) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (-.f64 x y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (-.f64 x y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (/.f64 (pow.f64 (-.f64 x y) 3) (pow.f64 z 3)))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (-.f64 x y) z)))))))

simplify57.0ms (0.7%)

Algorithm
egg-herbie
Rules
186×fma-def_binary64
172×fma-neg_binary64
64×cancel-sign-sub-inv_binary64
36×distribute-rgt-in_binary64
32×unsub-neg_binary64
Iterations

Useful iterations: 10 (0.0ms)

IterNodesCost
09228
115210
224210
334210
447210
571210
6119210
7173210
8249210
9381210
10637156
11923156
12984156
131037156
Stop Event
saturated
Counts
57 → 38
Calls
Call 1
Inputs
(*.f64 -1 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(*.f64 -1 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(*.f64 -1 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
Outputs
(*.f64 -1 (/.f64 y z))
(neg.f64 (/.f64 y z))
(/.f64 (neg.f64 y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 y z))
(neg.f64 (/.f64 y z))
(/.f64 (neg.f64 y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 y z))
(neg.f64 (/.f64 y z))
(/.f64 (neg.f64 y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(-.f64 (/.f64 x z) (/.f64 y z))
(/.f64 (-.f64 x y) z)

localize18.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(*.f64 4 (/.f64 x z))
Compiler

Compiled 22 to 12 computations (45.5% saved)

eval114.0ms (1.5%)

Compiler

Compiled 3516 to 2073 computations (41% saved)

prune73.0ms (0.9%)

Pruning

11 alts after pruning (7 fresh and 4 done)

PrunedKeptTotal
New2424246
Fresh134
Picked011
Done134
Total24411255
Error
0b
Counts
255 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
42.4b
(/.f64 (*.f64 -4 y) z)
24.8b
(*.f64 4 (/.f64 (-.f64 x y) z))
18.0b
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
42.5b
(/.f64 -4 (/.f64 z y))
45.2b
(/.f64 4 (/.f64 z x))
42.5b
(*.f64 (/.f64 -4 z) y)
38.2b
-2
20.8b
(-.f64 (*.f64 4 (/.f64 x z)) 2)
24.8b
(*.f64 4 (-.f64 (/.f64 x z) (/.f64 y z)))
45.2b
(*.f64 x (/.f64 4 z))
45.1b
(*.f64 4 (/.f64 x z))
Compiler

Compiled 148 to 111 computations (25% saved)

localize13.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 22 to 12 computations (45.5% saved)

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 x (/.f64 4 z))
Compiler

Compiled 14 to 9 computations (35.7% saved)

series3.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite74.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
613×pow1_binary64
572×add-log-exp_binary64
572×log1p-expm1-u_binary64
572×expm1-log1p-u_binary64
561×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11297
215597
Stop Event
node limit
Counts
1 → 20
Calls
Call 1
Inputs
(*.f64 x (/.f64 4 z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (/.f64 4 z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (*.f64 z 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 x 4)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x 4) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x 4)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x 4) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x 4) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 x 4) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -4 x) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x -4) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (/.f64 4 z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (/.f64 4 z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (/.f64 4 z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (/.f64 4 z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (/.f64 4 z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (/.f64 4 z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (/.f64 4 z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (/.f64 4 z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (/.f64 4 z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (/.f64 4 z))))))))

simplify18.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-*r/_binary64
associate-*l/_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
19168
213168
317168
418168
Stop Event
saturated
Counts
44 → 21
Calls
Call 1
Inputs
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
Outputs
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))

localize10.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.2b
(*.f64 (/.f64 -4 z) y)
Compiler

Compiled 14 to 9 computations (35.7% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

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

rewrite74.0ms (0.9%)

Algorithm
batch-egg-rewrite
Rules
616×pow1_binary64
574×add-log-exp_binary64
574×log1p-expm1-u_binary64
574×expm1-log1p-u_binary64
563×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11287
215627
Stop Event
node limit
Counts
1 → 21
Calls
Call 1
Inputs
(*.f64 (/.f64 -4 z) y)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 -4 (/.f64 y z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 -4 (/.f64 z y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 y (*.f64 z -1/4))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 -4 y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 -4 y) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 -4 y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -4 y) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -4 y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (*.f64 -4 y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 4 y) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 y 4) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 -4 (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 -4 (/.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 -4 (/.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 -4 (/.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 -4 (/.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 y) (/.f64 -4 z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 -4 (/.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 -4 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 -4 (/.f64 y z))))))))

simplify18.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-*r/_binary64
associate-*l/_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
19168
213168
317168
418168
Stop Event
saturated
Counts
45 → 22
Calls
Call 1
Inputs
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
Outputs
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))
(*.f64 -4 (/.f64 y z))

localize9.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.5b
(/.f64 4 (/.f64 z x))
Compiler

Compiled 14 to 7 computations (50% saved)

series2.0ms (0%)

Counts
1 → 24
Calls

6 calls:

TimeVariablePointExpression
1.0ms
z
@0
(/.f64 4 (/.f64 z x))
0.0ms
z
@-inf
(/.f64 4 (/.f64 z x))
0.0ms
x
@inf
(/.f64 4 (/.f64 z x))
0.0ms
z
@inf
(/.f64 4 (/.f64 z x))
0.0ms
x
@-inf
(/.f64 4 (/.f64 z x))

rewrite76.0ms (1%)

Algorithm
batch-egg-rewrite
Rules
696×pow1_binary64
652×add-log-exp_binary64
652×log1p-expm1-u_binary64
652×expm1-log1p-u_binary64
639×add-exp-log_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11357
217727
Stop Event
node limit
Counts
1 → 26
Calls
Call 1
Inputs
(/.f64 4 (/.f64 z x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 4 (/.f64 x z))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 4 (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (/.f64 4 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 4 (/.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 4 (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) (pow.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) 2) (cbrt.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 4 (/.f64 x z))) (sqrt.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 -4 (/.f64 1 (/.f64 (neg.f64 z) x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 x z) 4)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 4 z) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 4 (neg.f64 z)) (neg.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 4 z) 1) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 4 z) (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (/.f64 4 z) (sqrt.f64 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 4 (/.f64 x z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 4 (/.f64 x z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 4 (/.f64 x z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 4 (/.f64 x z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (/.f64 z x) 1/4) -1)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (/.f64 16 (pow.f64 (/.f64 z x) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 4) (/.f64 x z)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 4 (/.f64 x z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 4 (/.f64 x z))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 4 (/.f64 x z))))))))

simplify19.0ms (0.2%)

Algorithm
egg-herbie
Rules
*-commutative_binary64
associate-/l*_binary64
associate-*r/_binary64
associate-*l/_binary64
associate-/r/_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06168
19168
213168
317168
418168
Stop Event
saturated
Counts
50 → 26
Calls
Call 1
Inputs
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
Outputs
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))
(*.f64 4 (/.f64 x z))

localize9.0ms (0.1%)

Compiler

Compiled 14 to 9 computations (35.7% saved)

eval31.0ms (0.4%)

Compiler

Compiled 806 to 522 computations (35.2% saved)

prune32.0ms (0.4%)

Pruning

11 alts after pruning (2 fresh and 9 done)

PrunedKeptTotal
New96096
Fresh022
Picked011
Done088
Total9611107
Error
0b
Counts
107 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
42.4b
(/.f64 (*.f64 -4 y) z)
24.8b
(*.f64 4 (/.f64 (-.f64 x y) z))
18.0b
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
42.5b
(/.f64 -4 (/.f64 z y))
45.2b
(/.f64 4 (/.f64 z x))
42.5b
(*.f64 (/.f64 -4 z) y)
38.2b
-2
20.8b
(-.f64 (*.f64 4 (/.f64 x z)) 2)
24.8b
(*.f64 4 (-.f64 (/.f64 x z) (/.f64 y z)))
45.2b
(*.f64 x (/.f64 4 z))
45.1b
(*.f64 4 (/.f64 x z))
Compiler

Compiled 94 to 71 computations (24.5% saved)

localize15.0ms (0.2%)

Local error

Found 1 expressions with local error:

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

Compiled 29 to 9 computations (69% saved)

series5.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite97.0ms (1.2%)

Algorithm
batch-egg-rewrite
Rules
474×log-prod_binary64
352×exp-prod_binary64
352×fma-def_binary64
346×pow-prod-down_binary64
241×pow2_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
077
11657
227317
Stop Event
node limit
Counts
1 → 165
Calls
Call 1
Inputs
(-.f64 (/.f64 x z) (/.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 x z) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 x z) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (-.f64 x y) z) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (-.f64 x y) z) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (-.f64 x y) z) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (-.f64 x y) z) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (/.f64 (neg.f64 y) z) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (/.f64 (-.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 (-.f64 x y) z))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 (-.f64 x y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 (-.f64 x y) z)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 (-.f64 x y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 (-.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (/.f64 (-.f64 x y) z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (cbrt.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) (sqrt.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (pow.f64 z -2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 x y) (/.f64 1 z))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3)) (/.f64 1 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (/.f64 1 z) (-.f64 x y))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2)) (/.f64 1 (+.f64 (/.f64 x z) (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (+.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (-.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (*.f64 z z) (-.f64 (*.f64 x z) (*.f64 z y))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (-.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2)) (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 (+.f64 (/.f64 x z) (/.f64 y z)) (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (*.f64 z z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 x y) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3)) (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2)) (+.f64 (/.f64 x z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (*.f64 x z) (*.f64 z y))) (neg.f64 (*.f64 z z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 x y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3))) (neg.f64 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2))) (neg.f64 (+.f64 (/.f64 x z) (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 z (*.f64 (/.f64 z x) y)) (*.f64 (/.f64 z x) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (neg.f64 x) z) (*.f64 (neg.f64 z) y)) (*.f64 (neg.f64 z) z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x (/.f64 z y)) z) (*.f64 z (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (/.f64 z y) (*.f64 (/.f64 z x) 1)) (*.f64 (/.f64 z x) (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (neg.f64 x) (/.f64 z y)) (*.f64 (neg.f64 z) 1)) (*.f64 (neg.f64 z) (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 x (neg.f64 z)) (*.f64 z (neg.f64 y))) (*.f64 z (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (neg.f64 z) (*.f64 (/.f64 z x) (neg.f64 y))) (*.f64 (/.f64 z x) (neg.f64 z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (*.f64 (neg.f64 x) (neg.f64 z)) (*.f64 (neg.f64 z) (neg.f64 y))) (pow.f64 (neg.f64 z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (neg.f64 x) (neg.f64 y)) (neg.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (+.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 (neg.f64 y) z) 3)) (+.f64 (pow.f64 (/.f64 x z) 2) (-.f64 (pow.f64 (/.f64 (neg.f64 y) z) 2) (*.f64 (/.f64 x z) (/.f64 (neg.f64 y) z)))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 (neg.f64 y) z) 2)) (-.f64 (/.f64 x z) (/.f64 (neg.f64 y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 (*.f64 x z) (*.f64 z y)) z) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 x y) 1) z)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 x y) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 (-.f64 x y) (sqrt.f64 z)) (sqrt.f64 z))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (-.f64 x y) z) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (-.f64 x y) z) 2) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (/.f64 (-.f64 x y) z) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 1) (log.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (*.f64 z z) (-.f64 (*.f64 x z) (*.f64 z y))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 z (-.f64 x y)) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2)) (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (/.f64 (+.f64 (/.f64 x z) (/.f64 y z)) (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (/.f64 (-.f64 x y) z))) 2)) (cbrt.f64 (log.f64 (/.f64 (-.f64 x y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 (-.f64 x y) z)))) (sqrt.f64 (log.f64 (/.f64 (-.f64 x y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (/.f64 (-.f64 x y) z) 2))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (/.f64 (-.f64 x y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (/.f64 x z))) (exp.f64 (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (exp.f64 (/.f64 x z)) (+.f64 1 (expm1.f64 (/.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (/.f64 (+.f64 1 (expm1.f64 (/.f64 x z))) (+.f64 1 (expm1.f64 (/.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (+.f64 1 (expm1.f64 (/.f64 x z))) (exp.f64 (/.f64 (neg.f64 y) z))))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (*.f64 (exp.f64 (/.f64 (neg.f64 y) z)) (+.f64 1 (expm1.f64 (/.f64 x z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (/.f64 (-.f64 x y) z) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (/.f64 (-.f64 x y) z)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (/.f64 (-.f64 x y) z)) 1))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 3 (log.f64 (/.f64 (-.f64 x y) z))) 1/3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (cbrt.f64 (/.f64 (-.f64 x y) z))) 3))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (log.f64 (sqrt.f64 (/.f64 (-.f64 x y) z))) 2))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (*.f64 (*.f64 (log.f64 (/.f64 (-.f64 x y) z)) 1) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (/.f64 1 z) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (/.f64 1 z) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x z) 1 (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 x z) 1 (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 y (neg.f64 (/.f64 1 z)) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (-.f64 x y) z) 1 (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (-.f64 x y) z) 1 (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (-.f64 x y) z) 1 (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (-.f64 x y) z) 1 (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 x z) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 x z) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (-.f64 x y) z) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (-.f64 x y) z) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (-.f64 x y) z) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (-.f64 x y) z) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 1 (/.f64 (neg.f64 y) z) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (neg.f64 (cbrt.f64 (/.f64 y z))) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (/.f64 1 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (/.f64 1 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (cbrt.f64 (/.f64 (-.f64 x y) z)) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (cbrt.f64 (/.f64 (-.f64 x y) z)) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (cbrt.f64 (/.f64 (-.f64 x y) z)) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (-.f64 x y) z)) 2) (cbrt.f64 (/.f64 (-.f64 x y) z)) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 x z)) (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (cbrt.f64 (/.f64 x z)) (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (cbrt.f64 (/.f64 x z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 x z)) 2) (cbrt.f64 (/.f64 x z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 y z)) (neg.f64 (sqrt.f64 (/.f64 y z))) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (/.f64 1 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (/.f64 1 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) (sqrt.f64 (/.f64 (-.f64 x y) z)) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) (sqrt.f64 (/.f64 (-.f64 x y) z)) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) (sqrt.f64 (/.f64 (-.f64 x y) z)) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (-.f64 x y) z)) (sqrt.f64 (/.f64 (-.f64 x y) z)) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 x z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 x z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 y) (/.f64 1 z) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 x) (/.f64 1 (neg.f64 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 x) (/.f64 1 (neg.f64 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (pow.f64 z -2) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (pow.f64 z -2) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (pow.f64 z -2) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (*.f64 x z) (*.f64 z y)) (pow.f64 z -2) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 x y) (/.f64 1 z) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 x y) (/.f64 1 z) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 x y) (/.f64 1 z) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 x y) (/.f64 1 z) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3)) (/.f64 1 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2))) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3)) (/.f64 1 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2))) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3)) (/.f64 1 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2))) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 3) (pow.f64 (/.f64 z y) -3)) (/.f64 1 (fma.f64 (/.f64 y z) (+.f64 (/.f64 x z) (/.f64 y z)) (pow.f64 (/.f64 x z) 2))) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 z) x (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 z) x (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 z) (-.f64 x y) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 z) (-.f64 x y) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 z) (-.f64 x y) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 1 z) (-.f64 x y) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2)) (/.f64 1 (+.f64 (/.f64 x z) (/.f64 y z))) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2)) (/.f64 1 (+.f64 (/.f64 x z) (/.f64 y z))) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2)) (/.f64 1 (+.f64 (/.f64 x z) (/.f64 y z))) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (-.f64 (pow.f64 (/.f64 x z) 2) (pow.f64 (/.f64 y z) 2)) (/.f64 1 (+.f64 (/.f64 x z) (/.f64 y z))) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (/.f64 (neg.f64 y) z)) 2) (cbrt.f64 (/.f64 (neg.f64 y) z)) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (/.f64 (neg.f64 y) z)) (sqrt.f64 (/.f64 (neg.f64 y) z)) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (sqrt.f64 (/.f64 y z))) (sqrt.f64 (/.f64 y z)) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 -1 (/.f64 y z) (/.f64 x z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) -2) (/.f64 x (cbrt.f64 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 z) -2) (/.f64 x (cbrt.f64 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 z -1/2) (/.f64 x (sqrt.f64 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 z -1/2) (/.f64 x (sqrt.f64 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) 1) (/.f64 (cbrt.f64 x) z) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) 1) (/.f64 (cbrt.f64 x) z) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 x) 1) (/.f64 (sqrt.f64 x) z) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 x) 1) (/.f64 (sqrt.f64 x) z) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 (/.f64 x z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 z) 2)) (cbrt.f64 (/.f64 x z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 x) (pow.f64 (cbrt.f64 z) 2)) (/.f64 (sqrt.f64 x) (cbrt.f64 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (sqrt.f64 x) (pow.f64 (cbrt.f64 z) 2)) (/.f64 (sqrt.f64 x) (cbrt.f64 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 z)) (/.f64 (cbrt.f64 x) (sqrt.f64 z)) (/.f64 (neg.f64 y) z))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 (pow.f64 (cbrt.f64 x) 2) (sqrt.f64 z)) (/.f64 (cbrt.f64 x) (sqrt.f64 z)) (*.f64 (/.f64 (neg.f64 y) z) 1))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (-.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (fma.f64 (neg.f64 (/.f64 1 z)) y (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (-.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (fma.f64 (/.f64 (neg.f64 y) z) 1 (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (-.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (fma.f64 (neg.f64 (cbrt.f64 (/.f64 y z))) (pow.f64 (cbrt.f64 (/.f64 y z)) 2) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (+.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (-.f64 (sqrt.f64 (/.f64 x z)) (sqrt.f64 (/.f64 y z))) (+.f64 (/.f64 (neg.f64 y) z) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (neg.f64 (pow.f64 (cbrt.f64 (/.f64 y z)) 2)) (cbrt.f64 (/.f64 y z)) (/.f64 x z))))))

simplify45.0ms (0.6%)

Algorithm
egg-herbie
Rules
164×fma-def_binary64
117×fma-neg_binary64
58×cancel-sign-sub-inv_binary64
42×distribute-rgt-in_binary64
35×unsub-neg_binary64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
016360
143240
292240
3207240
4411240
5746240
6895240
7921240
8952240
9957240
Stop Event
saturated
Counts
201 → 170
Calls
Call 1
Inputs
(*.f64 -1 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(*.f64 -1 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(*.f64 -1 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
Outputs
(*.f64 -1 (/.f64 y z))
(/.f64 (neg.f64 y) z)
(neg.f64 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 (-.f64 (*.f64 -1 x) (*.f64 -1 y)) z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(/.f64 x z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 y z))
(/.f64 (neg.f64 y) z)
(neg.f64 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(*.f64 -1 (/.f64 y z))
(/.f64 (neg.f64 y) z)
(neg.f64 (/.f64 y z))
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)
(+.f64 (*.f64 -1 (/.f64 y z)) (/.f64 x z))
(fma.f64 -1 (/.f64 y z) (/.f64 x z))
(/.f64 (-.f64 x y) z)

eval47.0ms (0.6%)

Compiler

Compiled 3071 to 1147 computations (62.7% saved)

prune32.0ms (0.4%)

Pruning

11 alts after pruning (1 fresh and 10 done)

PrunedKeptTotal
New1700170
Fresh011
Picked011
Done099
Total17011181
Error
0b
Counts
181 → 11
Alt Table
Click to see full alt table
StatusErrorProgram
42.4b
(/.f64 (*.f64 -4 y) z)
24.8b
(*.f64 4 (/.f64 (-.f64 x y) z))
18.0b
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
42.5b
(/.f64 -4 (/.f64 z y))
45.2b
(/.f64 4 (/.f64 z x))
42.5b
(*.f64 (/.f64 -4 z) y)
38.2b
-2
20.8b
(-.f64 (*.f64 4 (/.f64 x z)) 2)
24.8b
(*.f64 4 (-.f64 (/.f64 x z) (/.f64 y z)))
45.2b
(*.f64 x (/.f64 4 z))
45.1b
(*.f64 4 (/.f64 x z))
Compiler

Compiled 94 to 71 computations (24.5% saved)

regimes65.0ms (0.8%)

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

7 calls:

9.0ms
(-.f64 x y)
9.0ms
x
9.0ms
(-.f64 x y)
9.0ms
y
8.0ms
z
Results
ErrorSegmentsBranch
0.0b1x
0.0b1y
0.0b1z
0.0b1(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
0.0b1(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
0.0b1(-.f64 x y)
0.0b1(-.f64 x y)
Compiler

Compiled 155 to 96 computations (38.1% saved)

regimes44.0ms (0.6%)

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

5 calls:

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

Compiled 114 to 71 computations (37.7% saved)

regimes170.0ms (2.2%)

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

5 calls:

40.0ms
x
36.0ms
(-.f64 x y)
35.0ms
(-.f64 x y)
28.0ms
z
27.0ms
y
Results
ErrorSegmentsBranch
5.7b5x
8.2b3y
9.8b3z
10.6b5(-.f64 x y)
10.6b5(-.f64 x y)
Compiler

Compiled 95 to 59 computations (37.9% saved)

bsearch79.0ms (1%)

Algorithm
binary-search
Steps
TimeLeftRight
19.0ms
6.044343347285061e+63
5.184436600198678e+67
19.0ms
5.77354202753819e-15
1.464083810095143e-9
20.0ms
2.972726047352174e-55
1.658401051217506e-54
20.0ms
-1.9910808473400473e-17
-2.866137834190853e-19
Compiler

Compiled 20 to 15 computations (25% saved)

regimes164.0ms (2.1%)

Counts
10 → 7
Calls
Call 1
Inputs
-2
(/.f64 4 (/.f64 z x))
(*.f64 (/.f64 -4 z) y)
(/.f64 (*.f64 -4 y) z)
(*.f64 4 (/.f64 x z))
(/.f64 -4 (/.f64 z y))
(*.f64 x (/.f64 4 z))
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
(*.f64 4 (/.f64 (-.f64 x y) z))
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
Outputs
(*.f64 4 (/.f64 (-.f64 x y) z))
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
(*.f64 4 (/.f64 (-.f64 x y) z))
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
(*.f64 4 (/.f64 (-.f64 x y) z))
(-.f64 (*.f64 -4 (/.f64 y z)) 2)
(*.f64 4 (/.f64 (-.f64 x y) z))
Calls

5 calls:

47.0ms
x
33.0ms
(-.f64 x y)
33.0ms
(-.f64 x y)
25.0ms
z
24.0ms
y
Results
ErrorSegmentsBranch
7.4b7x
16.1b3y
10.3b3z
10.9b5(-.f64 x y)
10.9b5(-.f64 x y)
Compiler

Compiled 79 to 52 computations (34.2% saved)

bsearch288.0ms (3.7%)

Algorithm
binary-search
Steps
TimeLeftRight
96.0ms
1.1968182114554626e+128
4.178008653570674e+134
20.0ms
5.77354202753819e-15
1.464083810095143e-9
19.0ms
2.972726047352174e-55
1.658401051217506e-54
21.0ms
-8.178691016987147e-7
-1.7841321007094946e-7
19.0ms
-4.359400899941993e+76
-2.170769515062521e+76
112.0ms
-9.60768166300948e+124
-2.0029316610276393e+114
Compiler

Compiled 438 to 338 computations (22.8% saved)

regimes46.0ms (0.6%)

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

3 calls:

20.0ms
x
17.0ms
y
6.0ms
z
Results
ErrorSegmentsBranch
11.1b3x
16.4b3y
18.0b1z
Compiler

Compiled 53 to 36 computations (32.1% saved)

bsearch200.0ms (2.6%)

Algorithm
binary-search
Steps
TimeLeftRight
84.0ms
4.178008653570674e+134
1.3209247394536851e+150
115.0ms
-9.60768166300948e+124
-2.0029316610276393e+114
Compiler

Compiled 420 to 335 computations (20.2% saved)

regimes238.0ms (3%)

Counts
7 → 12
Calls
Call 1
Inputs
-2
(/.f64 4 (/.f64 z x))
(*.f64 (/.f64 -4 z) y)
(/.f64 (*.f64 -4 y) z)
(*.f64 4 (/.f64 x z))
(/.f64 -4 (/.f64 z y))
(*.f64 x (/.f64 4 z))
Outputs
(*.f64 4 (/.f64 x z))
-2
(*.f64 4 (/.f64 x z))
(/.f64 (*.f64 -4 y) z)
-2
(/.f64 (*.f64 -4 y) z)
-2
(*.f64 4 (/.f64 x z))
-2
(/.f64 (*.f64 -4 y) z)
-2
(*.f64 4 (/.f64 x z))
Calls

3 calls:

84.0ms
z
83.0ms
y
67.0ms
x
Results
ErrorSegmentsBranch
21.7b12x
25.1b9y
26.3b9z
Compiler

Compiled 46 to 31 computations (32.6% saved)

bsearch400.0ms (5.1%)

Algorithm
11×binary-search
Steps
TimeLeftRight
96.0ms
1.1968182114554626e+128
4.178008653570674e+134
21.0ms
2.4416640114888558e+27
8.09760543995418e+38
20.0ms
0.44812270334897025
95.78079154525338
20.0ms
5.77354202753819e-15
1.464083810095143e-9
21.0ms
2.972726047352174e-55
1.658401051217506e-54
20.0ms
-1.6560159831744695e-269
-6.00498402103141e-275
21.0ms
-1.4073695202489786e-238
-4.926125347131309e-239
20.0ms
-1.3735639269101106e-216
-3.2357831748793784e-217
21.0ms
-2.866137834190853e-19
-1.762860823419008e-23
20.0ms
-4.359400899941993e+76
-2.170769515062521e+76
120.0ms
-9.60768166300948e+124
-2.0029316610276393e+114
Compiler

Compiled 286 to 243 computations (15% saved)

regimes115.0ms (1.5%)

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

3 calls:

46.0ms
x
34.0ms
y
33.0ms
z
Results
ErrorSegmentsBranch
21.8b12x
25.1b9y
26.3b9z
Compiler

Compiled 31 to 22 computations (29% saved)

bsearch432.0ms (5.5%)

Algorithm
11×binary-search
Steps
TimeLeftRight
127.0ms
1.1968182114554626e+128
4.178008653570674e+134
22.0ms
2.4416640114888558e+27
8.09760543995418e+38
22.0ms
0.44812270334897025
95.78079154525338
24.0ms
5.77354202753819e-15
1.464083810095143e-9
20.0ms
2.972726047352174e-55
1.658401051217506e-54
21.0ms
-1.6560159831744695e-269
-6.00498402103141e-275
22.0ms
-1.4073695202489786e-238
-4.926125347131309e-239
20.0ms
-1.3735639269101106e-216
-3.2357831748793784e-217
22.0ms
-2.866137834190853e-19
-1.762860823419008e-23
20.0ms
-4.359400899941993e+76
-2.170769515062521e+76
112.0ms
-9.60768166300948e+124
-2.0029316610276393e+114
Compiler

Compiled 286 to 243 computations (15% saved)

regimes199.0ms (2.5%)

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

3 calls:

81.0ms
x
55.0ms
z
54.0ms
y
Results
ErrorSegmentsBranch
21.8b12x
25.2b9y
26.3b9z
Compiler

Compiled 26 to 19 computations (26.9% saved)

bsearch423.0ms (5.4%)

Algorithm
11×binary-search
Steps
TimeLeftRight
100.0ms
1.1968182114554626e+128
4.178008653570674e+134
20.0ms
2.4416640114888558e+27
8.09760543995418e+38
20.0ms
0.44812270334897025
95.78079154525338
21.0ms
5.77354202753819e-15
1.464083810095143e-9
20.0ms
2.972726047352174e-55
1.658401051217506e-54
20.0ms
-1.6560159831744695e-269
-6.00498402103141e-275
21.0ms
-1.4073695202489786e-238
-4.926125347131309e-239
22.0ms
-1.3735639269101106e-216
-3.2357831748793784e-217
20.0ms
-2.866137834190853e-19
-1.762860823419008e-23
22.0ms
-4.359400899941993e+76
-2.170769515062521e+76
137.0ms
-9.60768166300948e+124
-2.0029316610276393e+114
Compiler

Compiled 286 to 243 computations (15% saved)

regimes51.0ms (0.7%)

Accuracy

Total -33.8b remaining (-119.9%)

Threshold costs -33.8b (-119.9%)

Counts
2 → 7
Calls
Call 1
Inputs
-2
(/.f64 4 (/.f64 z x))
Outputs
(/.f64 4 (/.f64 z x))
-2
(/.f64 4 (/.f64 z x))
-2
(/.f64 4 (/.f64 z x))
-2
(/.f64 4 (/.f64 z x))
Calls

3 calls:

25.0ms
x
13.0ms
z
12.0ms
y
Results
ErrorSegmentsBranch
28.1b7x
36.3b3y
30.8b3z
Compiler

Compiled 21 to 16 computations (23.8% saved)

bsearch287.0ms (3.7%)

Algorithm
binary-search
Steps
TimeLeftRight
94.0ms
1.1968182114554626e+128
4.178008653570674e+134
20.0ms
5.77354202753819e-15
1.464083810095143e-9
20.0ms
2.972726047352174e-55
1.658401051217506e-54
22.0ms
-8.178691016987147e-7
-1.7841321007094946e-7
20.0ms
-4.359400899941993e+76
-2.170769515062521e+76
111.0ms
-9.60768166300948e+124
-2.0029316610276393e+114
Compiler

Compiled 286 to 243 computations (15% saved)

simplify30.0ms (0.4%)

Algorithm
egg-herbie
Rules
10×*-commutative_binary64
+-commutative_binary64
sub-neg_binary64
neg-sub0_binary64
neg-mul-1_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0110679
1129679
2148679
3154679
4157679
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
(if (<=.f64 x -6461426767957869/324518553658426726783156020576256) (-.f64 (*.f64 4 (/.f64 x z)) 2) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 6044343347285060769379060237569447537963287220716866259109543936) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (-.f64 (*.f64 4 (/.f64 x z)) 2)))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (if (<=.f64 x -7724555266473431/9444732965739290427392) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (*.f64 4 (/.f64 (-.f64 x y) z))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 x z)) (if (<=.f64 x 1300000000000000029599179346339103758944341609839754507541616304749184666976547096417134357705931747015841481878296224129926262500534270147798507716608) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (*.f64 4 (/.f64 x z))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 x z)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (*.f64 4 (/.f64 x z)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 x z)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (*.f64 4 (/.f64 x z)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (*.f64 (/.f64 -4 z) y) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (*.f64 (/.f64 -4 z) y) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (*.f64 (/.f64 -4 z) y) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -7724555266473431/9444732965739290427392) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x))))))))
-2
Outputs
(-.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) 2)
(+.f64 (+.f64 (*.f64 -4 (/.f64 y z)) (*.f64 4 (/.f64 x z))) -2)
(/.f64 (*.f64 4 (-.f64 (-.f64 x y) (*.f64 z 1/2))) z)
(/.f64 (*.f64 4 (+.f64 (-.f64 x y) (*.f64 z -1/2))) z)
(if (<=.f64 x -6461426767957869/324518553658426726783156020576256) (-.f64 (*.f64 4 (/.f64 x z)) 2) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 6044343347285060769379060237569447537963287220716866259109543936) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (-.f64 (*.f64 4 (/.f64 x z)) 2)))))
(if (<=.f64 x -6461426767957869/324518553658426726783156020576256) (+.f64 (*.f64 4 (/.f64 x z)) -2) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) (+.f64 (*.f64 -4 (/.f64 y z)) -2) (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 6044343347285060769379060237569447537963287220716866259109543936) (+.f64 (*.f64 -4 (/.f64 y z)) -2) (+.f64 (*.f64 4 (/.f64 x z)) -2)))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (if (<=.f64 x -7724555266473431/9444732965739290427392) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (*.f64 4 (/.f64 (-.f64 x y) z))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) (+.f64 (*.f64 -4 (/.f64 y z)) -2) (if (<=.f64 x -7724555266473431/9444732965739290427392) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) (+.f64 (*.f64 -4 (/.f64 y z)) -2) (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 (-.f64 x y) z)) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) (+.f64 (*.f64 -4 (/.f64 y z)) -2) (*.f64 4 (/.f64 (-.f64 x y) z))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 x z)) (if (<=.f64 x 1300000000000000029599179346339103758944341609839754507541616304749184666976547096417134357705931747015841481878296224129926262500534270147798507716608) (-.f64 (*.f64 -4 (/.f64 y z)) 2) (*.f64 4 (/.f64 x z))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 x z)) (if (<=.f64 x 1300000000000000029599179346339103758944341609839754507541616304749184666976547096417134357705931747015841481878296224129926262500534270147798507716608) (+.f64 (*.f64 -4 (/.f64 y z)) -2) (*.f64 4 (/.f64 x z))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (*.f64 4 (/.f64 x z)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (*.f64 4 (/.f64 x z)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (*.f64 4 (/.f64 x z)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (*.f64 4 (/.f64 x z)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (/.f64 (*.f64 -4 y) z) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (*.f64 (/.f64 -4 z) y) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (*.f64 (/.f64 -4 z) y) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (*.f64 (/.f64 -4 z) y) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -744091923629849/2596148429267413814265248164610048) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -8529931389838221/6210072369202835740595917953850010221027544068466786444556208152104203810745507545323513635314585911801950922788524292824686320176459257565777149100164724556817819904083399622201061142526393779301051996774865875003571387415264231424) (*.f64 y (/.f64 -4 z)) (if (<=.f64 x -8254570591887503/58652475225036720546649669496166069228998121824605496380296088990333059082962747718339142176408838912879328274880511426712364770830486275482511413333124259062810366582741426385442408983508948533749841936858614266830705773786598571244254795994059356766208) -2 (if (<=.f64 x -307815470961237/18587711355972288284975781226873757001640752520742430738197148241449258214505054669314603931201954382372484047377412163130682315569311321347385382263779932822287135505593248424283580122928721710877989947279392965075846858835973501101963736754358226037650563818176798910297066860183552) (*.f64 y (/.f64 -4 z)) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 8072660959274727/18014398509481984) -2 (if (<=.f64 x 2441664011488855764118798336) (*.f64 y (/.f64 -4 z)) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x)))))))))))))
(if (<=.f64 x -95000000000000000377773618680590123288081642360188141438910623868026535261031446430369412274214696190232150380557125269061632) (/.f64 4 (/.f64 z x)) (if (<=.f64 x -43594008999419928737061628605184724541845574683144813310899378165891970629632) -2 (if (<=.f64 x -7724555266473431/9444732965739290427392) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 1025850056866101/3450873173395281893717377931138512726225554486085193277581262111899648) -2 (if (<=.f64 x 7318834016651695/1267650600228229401496703205376) (/.f64 4 (/.f64 z x)) (if (<=.f64 x 410000000000000034381264633077979268597620445431836977230665426682796726756843866152286277743781915700546658530688633218061574139281408) -2 (/.f64 4 (/.f64 z x))))))))
-2
Compiler

Compiled 503 to 336 computations (33.2% saved)

soundness184.0ms (2.4%)

Algorithm
egg-herbie
Rules
925×fma-neg_binary64
796×fma-def_binary64
768×times-frac_binary64
456×cancel-sign-sub-inv_binary64
435×associate-/l*_binary64
Iterations

Useful iterations: 5 (0.0ms)

IterNodesCost
01116
12416
25914
318414
451614
5166811
6605611
Stop Event
node limit
Compiler

Compiled 262 to 187 computations (28.6% saved)

end176.0ms (2.3%)

Compiler

Compiled 476 to 298 computations (37.4% saved)

Profiling

Loading profile data...