Details

Time bar (total: 2.4s)

analyze530.0ms (22.4%)

Algorithm
search
Search
TrueOtherFalseIter
0%99.9%0.1%0
0%99.9%0.1%1
0%99.9%0.1%2
0%99.9%0.1%3
0%99.9%0.1%4
0%99.9%0.1%5
0%99.9%0.1%6
12.5%87.4%0.1%7
21.8%78%0.1%8
29.6%68.6%1.7%9
38.2%57.7%4%10
46.4%49.5%4%11
52.9%41.3%5.8%12
58%33%9%13
63.1%27.8%9%14
Compiler

Compiled 9 to 6 computations (33.3% saved)

sample1.1s (45.5%)

Results
944.0ms8256×body128valid
117.0ms775×body128invalid

preprocess36.0ms (1.5%)

Algorithm
egg-herbie
Rules
394×rule-*b-ac--*ab*bc_binary64
356×rule-/ab-*+aa/1/2b_binary64
297×rule-*ab-*ba_binary64
277×rule-a-*a1_binary64
277×rule-a--a0_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01228
18428
235928
3170128
033
133
Stop Event
unsound
node limit
Calls
Call 1
Inputs
0
1
2
Outputs
0
1
0
2
Call 2
Inputs
(/.f64 (*.f64 x y) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 z y) x)
(/.f64 (*.f64 x z) y)
Outputs
(/.f64 (*.f64 x y) z)
(*.f64 x (/.f64 y z))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(/.f64 (*.f64 z y) x)
(*.f64 y (/.f64 z x))
(/.f64 (*.f64 x z) y)
(*.f64 z (/.f64 x y))
(*.f64 x (/.f64 z y))
Symmetry

(sort x y)

Compiler

Compiled 8 to 5 computations (37.5% saved)

simplify45.0ms (1.9%)

Algorithm
egg-herbie
Rules
617×rule-a-/a1_binary64
362×fma-neg_binary64
179×rule-/a*bc-//abc_binary64
171×fma-def_binary64
162×rule-/a-bc-/nega-cb_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
1397
21617
37527
445377
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(/.f64 (*.f64 x y) z)
Outputs
(/.f64 (*.f64 x y) z)
(*.f64 y (/.f64 x z))
(*.f64 x (/.f64 y z))
(/.f64 y (/.f64 z x))

prune3.0ms (0.1%)

Pruning

3 alts after pruning (3 fresh and 0 done)

PrunedKeptTotal
New022
Fresh011
Picked000
Done000
Total033
Error
0.1b
Counts
3 → 2
Alt Table
StatusErrorProgram
6.3b
(/.f64 y (/.f64 z x))
8.1b
(/.f64 (*.f64 x y) z)
Compiler

Compiled 45 to 27 computations (40% saved)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
6.0b
(/.f64 y (/.f64 z x))

series7.0ms (0.3%)

Counts
1 → 36
Calls

9 calls:

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

rewrite39.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
804×rules-30_binary64
804×rules-31_binary64
804×rules-32_binary64
804×rules-33_binary64
74×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify50.0ms (2.1%)

Algorithm
egg-herbie
Rules
617×rule-a-/a1_binary64
362×fma-neg_binary64
179×rule-/a*bc-//abc_binary64
171×fma-def_binary64
162×rule-/a-bc-/nega-cb_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
139252
2161252
3752252
44537252
Stop Event
node limit
Counts
82 → 48
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))

prune29.0ms (1.2%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New45348
Fresh011
Picked011
Done000
Total45550
Error
0b
Counts
50 → 5
Alt Table
StatusErrorProgram
6.3b
(/.f64 y (/.f64 z x))
8.1b
(/.f64 (*.f64 x y) z)
7.5b
(*.f64 x (/.f64 y z))
6.1b
(*.f64 y (/.f64 x z))
7.5b
(/.f64 x (/.f64 z y))
Compiler

Compiled 506 to 179 computations (64.6% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
5.9b
(*.f64 y (/.f64 x z))

series4.0ms (0.2%)

Counts
1 → 36
Calls

9 calls:

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

rewrite39.0ms (1.6%)

Algorithm
batch-egg-rewrite
Rules
771×rules-30_binary64
771×rules-31_binary64
771×rules-32_binary64
771×rules-33_binary64
72×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify50.0ms (2.1%)

Algorithm
egg-herbie
Rules
617×rule-a-/a1_binary64
362×fma-neg_binary64
179×rule-/a*bc-//abc_binary64
171×fma-def_binary64
162×rule-/a-bc-/nega-cb_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
139252
2161252
3752252
44537252
Stop Event
node limit
Counts
80 → 44
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))

prune24.0ms (1%)

Pruning

5 alts after pruning (3 fresh and 2 done)

PrunedKeptTotal
New44044
Fresh033
Picked011
Done011
Total44549
Error
0b
Counts
49 → 5
Alt Table
StatusErrorProgram
6.3b
(/.f64 y (/.f64 z x))
8.1b
(/.f64 (*.f64 x y) z)
7.5b
(*.f64 x (/.f64 y z))
6.1b
(*.f64 y (/.f64 x z))
7.5b
(/.f64 x (/.f64 z y))
Compiler

Compiled 473 to 181 computations (61.7% saved)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
7.2b
(*.f64 x (/.f64 y z))

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite40.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
771×rules-30_binary64
771×rules-31_binary64
771×rules-32_binary64
771×rules-33_binary64
72×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
067
11557
222047
Stop Event
node limit
Counts
1 → 44
Calls
Call 1
Inputs
(*.f64 x (/.f64 y z))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 y z)) (/.f64 0 (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 y z)) (*.f64 x 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 (*.f64 x (/.f64 y z)) (*.f64 (/.f64 y z) 0))))) (#(struct:change #<rule egg-rr> (2) ((x +.f64 0 (*.f64 x (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (/.f64 y z)) 0)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (/.f64 y z)) (/.f64 0 (/.f64 z y)))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (/.f64 y z)) (*.f64 x 0))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (*.f64 x (/.f64 y z)) (*.f64 (/.f64 y z) 0))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 0 (neg.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (exp.f64 (log1p.f64 (*.f64 x (/.f64 y z)))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (*.f64 x (/.f64 y z)) (*.f64 x (/.f64 y z))) (*.f64 x (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 x (/.f64 z y))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 y (/.f64 z x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (/.f64 y z) (/.f64 1 x))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 1 (/.f64 z (*.f64 x y)))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (neg.f64 (*.f64 x (/.f64 y z))) -1)))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (*.f64 x (/.f64 y z)) 3) (+.f64 (pow.f64 (*.f64 x (/.f64 y z)) 2) (+.f64 0 (*.f64 (*.f64 x (/.f64 y z)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (pow.f64 (*.f64 x (/.f64 y z)) 3) (+.f64 (pow.f64 (*.f64 x (/.f64 y z)) 2) (-.f64 0 (*.f64 (*.f64 x (/.f64 y z)) 0))))))) (#(struct:change #<rule egg-rr> (2) ((x /.f64 (*.f64 x y) 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 (/.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 x (/.f64 y z)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (/.f64 y z)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (/.f64 y z))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (/.f64 y z))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x neg.f64 (neg.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (pow.f64 (*.f64 x (/.f64 y z)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 x (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (/.f64 y z)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (+.f64 1 (expm1.f64 (*.f64 x (/.f64 y z)))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (/.f64 y z)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 x 3) (pow.f64 (/.f64 y z) 3)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (*.f64 (pow.f64 (/.f64 y z) 3) (pow.f64 x 3)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (/.f64 y z))))))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 x (/.f64 y z) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (/.f64 y z) x 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (*.f64 x (/.f64 y z)) 1 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (pow.f64 (cbrt.f64 (*.f64 x (/.f64 y z))) 2) (cbrt.f64 (*.f64 x (/.f64 y z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x fma.f64 (sqrt.f64 (*.f64 x (/.f64 y z))) (sqrt.f64 (*.f64 x (/.f64 y z))) 0)))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (/.f64 y z))))))))

simplify52.0ms (2.2%)

Algorithm
egg-herbie
Rules
617×rule-a-/a1_binary64
362×fma-neg_binary64
179×rule-/a*bc-//abc_binary64
171×fma-def_binary64
162×rule-/a-bc-/nega-cb_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
139252
2161252
3752252
44537252
Stop Event
node limit
Counts
80 → 45
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))

prune23.0ms (1%)

Pruning

5 alts after pruning (2 fresh and 3 done)

PrunedKeptTotal
New45045
Fresh022
Picked011
Done022
Total45550
Error
0b
Counts
50 → 5
Alt Table
StatusErrorProgram
6.3b
(/.f64 y (/.f64 z x))
8.1b
(/.f64 (*.f64 x y) z)
7.5b
(*.f64 x (/.f64 y z))
6.1b
(*.f64 y (/.f64 x z))
7.5b
(/.f64 x (/.f64 z y))
Compiler

Compiled 470 to 178 computations (62.1% saved)

localize4.0ms (0.2%)

Local error

Found 1 expressions with local error:

NewErrorProgram
7.2b
(/.f64 x (/.f64 z y))

series3.0ms (0.1%)

Counts
1 → 36
Calls

9 calls:

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

rewrite43.0ms (1.8%)

Algorithm
batch-egg-rewrite
Rules
804×rules-30_binary64
804×rules-31_binary64
804×rules-32_binary64
804×rules-33_binary64
74×add-sqr-sqrt_binary64
Iterations

Useful iterations: 0 (0.0ms)

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

simplify50.0ms (2.1%)

Algorithm
egg-herbie
Rules
617×rule-a-/a1_binary64
362×fma-neg_binary64
179×rule-/a*bc-//abc_binary64
171×fma-def_binary64
162×rule-/a-bc-/nega-cb_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
06252
139252
2161252
3752252
44537252
Stop Event
node limit
Counts
82 → 48
Calls
Call 1
Inputs
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
(/.f64 (*.f64 y x) z)
Outputs
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))
(/.f64 (*.f64 y x) z)
(*.f64 x (/.f64 y z))
(*.f64 y (/.f64 x z))
(/.f64 x (/.f64 z y))

prune22.0ms (0.9%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New48048
Fresh011
Picked011
Done033
Total48553
Error
0b
Counts
53 → 5
Alt Table
StatusErrorProgram
6.3b
(/.f64 y (/.f64 z x))
8.1b
(/.f64 (*.f64 x y) z)
7.5b
(*.f64 x (/.f64 y z))
6.1b
(*.f64 y (/.f64 x z))
7.5b
(/.f64 x (/.f64 z y))
Compiler

Compiled 474 to 159 computations (66.5% saved)

regimes87.0ms (3.7%)

Accuracy

Total -18.3b remaining (-3023.9%)

Threshold costs -18.3b (-3023.9%)

Counts
6 → 5
Compiler

Compiled 61 to 33 computations (45.9% saved)

bsearch1.0ms (0%)

Algorithm
left-value
Calls

4 calls:

0.0ms
(*.f64 x y)
0.0ms
(*.f64 x y)
0.0ms
(*.f64 x y)
0.0ms
(*.f64 x y)
Steps
ItersPointRange
2e+225
∈ [
1.2706225180176537e+225
,
1.686024985080384e+226
]
1e-200
∈ [
5.22756127743679e-201
,
1.567038688880732e-199
]
-2e-242
∈ [
-2.6763812901463215e-242
,
-2.708055350880164e-246
]
-1e+131
∈ [
-1.3020162000318233e+131
,
-3.430030163442584e+97
]
Compiler

Compiled 14 to 10 computations (28.6% saved)

simplify29.0ms (1.2%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02371
Stop Event
saturated
Calls
Call 1
Inputs
(if (<=.f64 (*.f64 x y) -99999999999999991202555500957231813912852864969525730182461368558677581576901282770959939099212034754106974340599870111173348163584) (/.f64 y (/.f64 z x)) (if (<=.f64 (*.f64 x y) -2460063114462724096/123003155723136208567847447683223664415731869180715065944930703618254955521953492303010368693540149343822709050322214299552689203876695953600699775494388206142090885899729347827083318884583758435450548517566916626912548274908112766882031433928533568160966639616) (/.f64 (*.f64 x y) z) (if (<=.f64 (*.f64 x y) 1723641332219371/172364133221937103085272756482216056112753534658909761028039668631756215232006744379020625060744018369805777923479247838020220755974022884986972234404720831691332769255536872593544438018353486799545737272878084128768) (/.f64 y (/.f64 z x)) (if (<=.f64 (*.f64 x y) 1999999999999999856908446897273053991218829224892973825072790086090102342996835156604833180614213868754704018847177272268508969245882922355676436081259722717230056104357172387216661060317013292261774097833310920647333375901696) (/.f64 (*.f64 x y) z) (*.f64 y (/.f64 x z))))))
Outputs
(if (<=.f64 (*.f64 x y) -99999999999999991202555500957231813912852864969525730182461368558677581576901282770959939099212034754106974340599870111173348163584) (/.f64 y (/.f64 z x)) (if (<=.f64 (*.f64 x y) -2460063114462724096/123003155723136208567847447683223664415731869180715065944930703618254955521953492303010368693540149343822709050322214299552689203876695953600699775494388206142090885899729347827083318884583758435450548517566916626912548274908112766882031433928533568160966639616) (/.f64 (*.f64 x y) z) (if (<=.f64 (*.f64 x y) 1723641332219371/172364133221937103085272756482216056112753534658909761028039668631756215232006744379020625060744018369805777923479247838020220755974022884986972234404720831691332769255536872593544438018353486799545737272878084128768) (/.f64 y (/.f64 z x)) (if (<=.f64 (*.f64 x y) 1999999999999999856908446897273053991218829224892973825072790086090102342996835156604833180614213868754704018847177272268508969245882922355676436081259722717230056104357172387216661060317013292261774097833310920647333375901696) (/.f64 (*.f64 x y) z) (*.f64 y (/.f64 x z))))))
(if (<=.f64 (*.f64 x y) -99999999999999991202555500957231813912852864969525730182461368558677581576901282770959939099212034754106974340599870111173348163584) (/.f64 y (/.f64 z x)) (if (<=.f64 (*.f64 x y) -75075168288047/3753758414402350114985578847754628430655879796774751768338949695381315781309615853973705099290165690424277009592352731309591345333151121630880730453319952580019863461295451288668314174944572706159989883958951313077165169522342308559632306943619798833037312) (/.f64 (*.f64 x y) z) (if (<=.f64 (*.f64 x y) 1723641332219371/172364133221937103085272756482216056112753534658909761028039668631756215232006744379020625060744018369805777923479247838020220755974022884986972234404720831691332769255536872593544438018353486799545737272878084128768) (/.f64 y (/.f64 z x)) (if (<=.f64 (*.f64 x y) 1999999999999999856908446897273053991218829224892973825072790086090102342996835156604833180614213868754704018847177272268508969245882922355676436081259722717230056104357172387216661060317013292261774097833310920647333375901696) (/.f64 (*.f64 x y) z) (*.f64 y (/.f64 x z))))))

end66.0ms (2.8%)

Stop Event
fuel
Compiler

Compiled 233 to 88 computations (62.2% saved)

Profiling

Loading profile data...