System.Random.MWC.Distributions:standard from mwc-random-0.13.3.2

Time bar (total: 2.0s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 10 to 7 computations (30% saved)

sample690.0ms (33.8%)

Results
519.0ms6228×body256valid
160.0ms2028×body256infinite
Bogosity

preprocess55.0ms (2.7%)

Algorithm
egg-herbie
Rules
894×fma-def
142×unsub-neg
130×associate-*r*
98×distribute-lft-in
78×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01980
14272
210072
329172
464972
5105372
6120372
7121472
Stop Event
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 1/2 (-.f64 (*.f64 (neg.f64 x) (neg.f64 x)) y))
(*.f64 1/2 (-.f64 (*.f64 x x) (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 y y) x))
Outputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 1/2 (-.f64 (*.f64 (neg.f64 x) (neg.f64 x)) y))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 1/2 (-.f64 (*.f64 x x) (neg.f64 y)))
(*.f64 1/2 (fma.f64 x x y))
(*.f64 1/2 (-.f64 (*.f64 y y) x))
Symmetry

(abs x)

Compiler

Compiled 11 to 8 computations (27.3% saved)

simplify24.0ms (1.2%)

Algorithm
egg-herbie
Rules
630×fma-def
76×distribute-lft-in
74×unsub-neg
68×distribute-rgt-in
56×distribute-lft-neg-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
11419
22519
34919
48419
511619
620719
734519
855819
972519
1082419
1184019
Stop Event
saturated
Counts
1 → 1
Calls
Call 1
Inputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
Outputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))

eval0.0ms (0%)

Compiler

Compiled 9 to 6 computations (33.3% saved)

prune1.0ms (0.1%)

Pruning

2 alts after pruning (2 fresh and 0 done)

PrunedKeptTotal
New011
Fresh011
Picked000
Done000
Total022
Accurracy
99.7%
Counts
2 → 1
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
Compiler

Compiled 18 to 12 computations (33.3% saved)

localize29.0ms (1.4%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
Compiler

Compiled 21 to 8 computations (61.9% saved)

series2.0ms (0.1%)

Counts
1 → 24
Calls

6 calls:

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

rewrite93.0ms (4.6%)

Algorithm
batch-egg-rewrite
Rules
1760×pow1
1634×add-exp-log
1634×log1p-expm1-u
1634×expm1-log1p-u
1600×add-log-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0819
117319
2223519
Stop Event
node limit
Counts
1 → 17
Calls
Call 1
Inputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
Outputs
(+.f64 (*.f64 1/2 (*.f64 x x)) (*.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 (*.f64 x x) 1/2) (*.f64 (neg.f64 y) 1/2))
(-.f64 (+.f64 1 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 1)
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 6) (pow.f64 y 3))) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 4) (*.f64 y y))) (fma.f64 x x y))
(/.f64 (*.f64 (-.f64 (pow.f64 x 6) (pow.f64 y 3)) 1/2) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(/.f64 (*.f64 (-.f64 (pow.f64 x 4) (*.f64 y y)) 1/2) (fma.f64 x x y))
(pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 1)
(pow.f64 (cbrt.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 3)
(pow.f64 (pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 2)
(sqrt.f64 (*.f64 1/4 (pow.f64 (-.f64 (*.f64 x x) y) 2)))
(log.f64 (pow.f64 (exp.f64 1/2) (-.f64 (*.f64 x x) y)))
(cbrt.f64 (pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 3))
(expm1.f64 (log1p.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(exp.f64 (log.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(log1p.f64 (expm1.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))

simplify69.0ms (3.4%)

Algorithm
egg-herbie
Rules
1494×fma-def
1202×log-prod
744×associate-*r*
620×associate-*l*
538×unsub-neg
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
068867
1169793
2490793
32912793
46138793
Stop Event
node limit
Counts
41 → 26
Calls
Call 1
Inputs
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 1/2 (pow.f64 x 2))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(+.f64 (*.f64 1/2 (*.f64 x x)) (*.f64 1/2 (neg.f64 y)))
(+.f64 (*.f64 (*.f64 x x) 1/2) (*.f64 (neg.f64 y) 1/2))
(-.f64 (+.f64 1 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 1)
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 6) (pow.f64 y 3))) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 4) (*.f64 y y))) (fma.f64 x x y))
(/.f64 (*.f64 (-.f64 (pow.f64 x 6) (pow.f64 y 3)) 1/2) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(/.f64 (*.f64 (-.f64 (pow.f64 x 4) (*.f64 y y)) 1/2) (fma.f64 x x y))
(pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 1)
(pow.f64 (cbrt.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 3)
(pow.f64 (pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 2)
(sqrt.f64 (*.f64 1/4 (pow.f64 (-.f64 (*.f64 x x) y) 2)))
(log.f64 (pow.f64 (exp.f64 1/2) (-.f64 (*.f64 x x) y)))
(cbrt.f64 (pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 3))
(expm1.f64 (log1p.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(exp.f64 (log.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(log1p.f64 (expm1.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
Outputs
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(*.f64 -1/2 y)
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 -1/2 y) (*.f64 1/2 (pow.f64 x 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 1/2 (*.f64 x x)) (*.f64 1/2 (neg.f64 y)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(+.f64 (*.f64 (*.f64 x x) 1/2) (*.f64 (neg.f64 y) 1/2))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(-.f64 (+.f64 1 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 1)
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 6) (pow.f64 y 3))) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(*.f64 (/.f64 1/2 (fma.f64 y (fma.f64 x x y) (pow.f64 x 4))) (-.f64 (pow.f64 x 6) (pow.f64 y 3)))
(*.f64 1/2 (/.f64 (-.f64 (pow.f64 x 6) (pow.f64 y 3)) (fma.f64 y (fma.f64 x x y) (pow.f64 x 4))))
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 4) (*.f64 y y))) (fma.f64 x x y))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(/.f64 (*.f64 (-.f64 (pow.f64 x 6) (pow.f64 y 3)) 1/2) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(/.f64 (*.f64 1/2 (-.f64 (pow.f64 x 6) (pow.f64 y 3))) (+.f64 (pow.f64 x 4) (*.f64 y (fma.f64 x x y))))
(*.f64 (/.f64 1/2 (fma.f64 y (fma.f64 x x y) (pow.f64 x 4))) (-.f64 (pow.f64 x 6) (pow.f64 y 3)))
(*.f64 1/2 (/.f64 (-.f64 (pow.f64 x 6) (pow.f64 y 3)) (fma.f64 y (fma.f64 x x y) (pow.f64 x 4))))
(/.f64 (*.f64 (-.f64 (pow.f64 x 4) (*.f64 y y)) 1/2) (fma.f64 x x y))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 1)
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(pow.f64 (cbrt.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 3)
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(pow.f64 (pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 3) 1/3)
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(pow.f64 (sqrt.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))) 2)
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(sqrt.f64 (*.f64 1/4 (pow.f64 (-.f64 (*.f64 x x) y) 2)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(log.f64 (pow.f64 (exp.f64 1/2) (-.f64 (*.f64 x x) y)))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(cbrt.f64 (pow.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y)) 3))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(expm1.f64 (log1p.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(exp.f64 (log.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(log1p.f64 (expm1.f64 (*.f64 1/2 (-.f64 (*.f64 x x) y))))
(fma.f64 -1/2 y (*.f64 1/2 (*.f64 x x)))
(*.f64 1/2 (fma.f64 x x (neg.f64 y)))
(*.f64 1/2 (-.f64 (*.f64 x x) y))

eval5.0ms (0.3%)

Compiler

Compiled 279 to 150 computations (46.2% saved)

prune39.0ms (1.9%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New24226
Fresh000
Picked011
Done000
Total24327
Accurracy
99.7%
Counts
27 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
48.9%
(*.f64 1/2 (*.f64 x x))
53.4%
(*.f64 -1/2 y)
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
48.9%
(*.f64 1/2 (*.f64 x x))
53.4%
(*.f64 -1/2 y)
Compiler

Compiled 42 to 30 computations (28.6% saved)

localize24.0ms (1.2%)

Local Accuracy

Found 1 expressions with local accuracy:

NewAccuracyProgram
99.7%
(*.f64 1/2 (*.f64 x x))
Compiler

Compiled 18 to 10 computations (44.4% saved)

series1.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite90.0ms (4.4%)

Algorithm
batch-egg-rewrite
Rules
1058×pow1
1024×add-sqr-sqrt
976×add-exp-log
976×log1p-expm1-u
976×expm1-log1p-u
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
112213
2138313
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 1/2 (*.f64 x x))
Outputs
(-.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)
(pow.f64 (*.f64 1/2 (*.f64 x x)) 1)
(pow.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) 3)
(pow.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3) 1/3)
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
(sqrt.f64 (*.f64 1/4 (pow.f64 x 4)))
(log.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))
(cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))

simplify58.0ms (2.9%)

Algorithm
egg-herbie
Rules
2120×log-prod
1106×distribute-rgt-in
1092×distribute-lft-in
768×associate-*r*
688×associate-*l*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
038299
190299
2319299
32131299
47005299
Stop Event
node limit
Counts
23 → 13
Calls
Call 1
Inputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (pow.f64 x 2))
(-.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)
(pow.f64 (*.f64 1/2 (*.f64 x x)) 1)
(pow.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) 3)
(pow.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3) 1/3)
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
(sqrt.f64 (*.f64 1/4 (pow.f64 x 4)))
(log.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))
(cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))
Outputs
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(*.f64 1/2 (pow.f64 x 2))
(*.f64 1/2 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)
(*.f64 1/2 (*.f64 x x))
(pow.f64 (*.f64 1/2 (*.f64 x x)) 1)
(*.f64 1/2 (*.f64 x x))
(pow.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) 3)
(*.f64 1/2 (*.f64 x x))
(pow.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3) 1/3)
(*.f64 1/2 (*.f64 x x))
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
(*.f64 1/2 (*.f64 x x))
(sqrt.f64 (*.f64 1/4 (pow.f64 x 4)))
(*.f64 1/2 (*.f64 x x))
(log.f64 (pow.f64 (exp.f64 1/2) (*.f64 x x)))
(*.f64 1/2 (*.f64 x x))
(cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))
(*.f64 1/2 (*.f64 x x))
(expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 1/2 (*.f64 x x))
(exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 1/2 (*.f64 x x))
(log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 1/2 (*.f64 x x))

eval2.0ms (0.1%)

Compiler

Compiled 93 to 61 computations (34.4% saved)

prune5.0ms (0.2%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New12113
Fresh000
Picked022
Done011
Total12416
Accurracy
100.0%
Counts
16 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
48.9%
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
48.9%
(*.f64 1/2 (*.f64 x x))
53.4%
(*.f64 -1/2 y)
48.9%
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
48.9%
(*.f64 1/2 (*.f64 x x))
53.4%
(*.f64 -1/2 y)
Compiler

Compiled 58 to 44 computations (24.1% saved)

localize70.0ms (3.4%)

Local Accuracy

Found 2 expressions with local accuracy:

NewAccuracyProgram
99.6%
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
99.3%
(*.f64 x (sqrt.f64 1/2))
Compiler

Compiled 18 to 15 computations (16.7% saved)

series2.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite61.0ms (3%)

Algorithm
batch-egg-rewrite
Rules
1456×pow1
1338×add-exp-log
1338×log1p-expm1-u
1338×expm1-log1p-u
1306×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0928
118424
2195824
Stop Event
node limit
Counts
2 → 35
Calls
Call 1
Inputs
(*.f64 x (sqrt.f64 1/2))
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
Outputs
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 1/2))) 1)
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 1)
(pow.f64 (*.f64 1/2 (*.f64 x x)) 1/2)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) 2)
(sqrt.f64 (*.f64 1/2 (*.f64 x x)))
(fabs.f64 (*.f64 x (sqrt.f64 1/2)))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 1/2)))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 1/2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 1/2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 1/2))))
(-.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)
(*.f64 x (*.f64 (sqrt.f64 1/2) (*.f64 x (sqrt.f64 1/2))))
(*.f64 1/2 (*.f64 x x))
(*.f64 (sqrt.f64 1/2) (*.f64 x (*.f64 x (sqrt.f64 1/2))))
(*.f64 (*.f64 x (sqrt.f64 1/2)) (*.f64 x (sqrt.f64 1/2)))
(*.f64 (*.f64 1/2 (*.f64 x x)) 1)
(*.f64 1 (*.f64 1/2 (*.f64 x x)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 x (sqrt.f64 1/2))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4)) (cbrt.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 (*.f64 x x) 1/2)
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 x (sqrt.f64 1/2))))
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (sqrt.f64 (*.f64 x (sqrt.f64 1/2)))) (sqrt.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) x) (sqrt.f64 1/2))
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (sqrt.f64 1/2)) x)
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (cbrt.f64 (*.f64 1/2 (*.f64 x x)))) (cbrt.f64 (*.f64 x (sqrt.f64 1/2))))
(sqrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4))
(log.f64 (pow.f64 (exp.f64 (*.f64 x x)) 1/2))
(cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))

simplify70.0ms (3.4%)

Algorithm
egg-herbie
Rules
1238×fma-def
1214×distribute-rgt-in
1210×distribute-lft-in
1080×log-prod
600×associate-+r+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0791097
1193777
2677769
32251769
47376769
Stop Event
node limit
Counts
59 → 42
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 1/2))) 1)
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 1)
(pow.f64 (*.f64 1/2 (*.f64 x x)) 1/2)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) 2)
(sqrt.f64 (*.f64 1/2 (*.f64 x x)))
(fabs.f64 (*.f64 x (sqrt.f64 1/2)))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 1/2)))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 1/2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 1/2))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 1/2))))
(-.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)
(*.f64 x (*.f64 (sqrt.f64 1/2) (*.f64 x (sqrt.f64 1/2))))
(*.f64 1/2 (*.f64 x x))
(*.f64 (sqrt.f64 1/2) (*.f64 x (*.f64 x (sqrt.f64 1/2))))
(*.f64 (*.f64 x (sqrt.f64 1/2)) (*.f64 x (sqrt.f64 1/2)))
(*.f64 (*.f64 1/2 (*.f64 x x)) 1)
(*.f64 1 (*.f64 1/2 (*.f64 x x)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 x (sqrt.f64 1/2))))
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4)) (cbrt.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 (*.f64 x x) 1/2)
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 x (sqrt.f64 1/2))))
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (sqrt.f64 (*.f64 x (sqrt.f64 1/2)))) (sqrt.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) x) (sqrt.f64 1/2))
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (sqrt.f64 1/2)) x)
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (cbrt.f64 (*.f64 1/2 (*.f64 x x)))) (cbrt.f64 (*.f64 x (sqrt.f64 1/2))))
(sqrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4))
(log.f64 (pow.f64 (exp.f64 (*.f64 x x)) 1/2))
(cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))
Outputs
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (sqrt.f64 1/2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (pow.f64 (sqrt.f64 1/2) 2) (pow.f64 x 2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 1/2))) 1)
(*.f64 (sqrt.f64 1/2) x)
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 1)
(*.f64 (sqrt.f64 1/2) x)
(pow.f64 (*.f64 1/2 (*.f64 x x)) 1/2)
(*.f64 (sqrt.f64 1/2) x)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/2))) 3)
(*.f64 (sqrt.f64 1/2) x)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 3) 1/3)
(*.f64 (sqrt.f64 1/2) x)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) 2)
(*.f64 (sqrt.f64 1/2) x)
(sqrt.f64 (*.f64 1/2 (*.f64 x x)))
(*.f64 (sqrt.f64 1/2) x)
(fabs.f64 (*.f64 x (sqrt.f64 1/2)))
(*.f64 (sqrt.f64 1/2) x)
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 1/2)))
(*.f64 (sqrt.f64 1/2) x)
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 3))
(*.f64 (sqrt.f64 1/2) x)
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 (sqrt.f64 1/2) x)
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 (sqrt.f64 1/2) x)
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 (sqrt.f64 1/2) x)
(-.f64 (+.f64 1 (*.f64 1/2 (*.f64 x x))) 1)
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 x (*.f64 (sqrt.f64 1/2) (*.f64 x (sqrt.f64 1/2))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 1/2 (*.f64 x x))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 (/.f64 x 2) x)
(*.f64 (sqrt.f64 1/2) (*.f64 x (*.f64 x (sqrt.f64 1/2))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (*.f64 x (sqrt.f64 1/2)) (*.f64 x (sqrt.f64 1/2)))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (*.f64 1/2 (*.f64 x x)) 1)
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 1 (*.f64 1/2 (*.f64 x x)))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 1/2) x) 4)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (*.f64 1/4 (pow.f64 x 4))))
(*.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 x 4))) (cbrt.f64 (*.f64 (/.f64 x 2) x)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 x (sqrt.f64 1/2))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4)) (cbrt.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 1/2) x) 4)))
(*.f64 (cbrt.f64 (*.f64 1/2 (*.f64 x x))) (cbrt.f64 (*.f64 1/4 (pow.f64 x 4))))
(*.f64 (cbrt.f64 (*.f64 1/4 (pow.f64 x 4))) (cbrt.f64 (*.f64 (/.f64 x 2) x)))
(*.f64 (*.f64 x x) 1/2)
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 1/2))) (*.f64 x (sqrt.f64 1/2))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (sqrt.f64 (*.f64 x (sqrt.f64 1/2)))) (sqrt.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) x) (sqrt.f64 1/2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (sqrt.f64 1/2)) x)
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 (*.f64 (*.f64 x (sqrt.f64 1/2)) (cbrt.f64 (*.f64 1/2 (*.f64 x x)))) (cbrt.f64 (*.f64 x (sqrt.f64 1/2))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(sqrt.f64 (pow.f64 (*.f64 x (sqrt.f64 1/2)) 4))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(log.f64 (pow.f64 (exp.f64 (*.f64 x x)) 1/2))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(cbrt.f64 (pow.f64 (*.f64 1/2 (*.f64 x x)) 3))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(expm1.f64 (log1p.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(exp.f64 (log.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(log1p.f64 (expm1.f64 (*.f64 1/2 (*.f64 x x))))
(*.f64 x (*.f64 x (pow.f64 (sqrt.f64 1/2) 2)))
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)

eval10.0ms (0.5%)

Compiler

Compiled 395 to 297 computations (24.8% saved)

prune7.0ms (0.4%)

Pruning

3 alts after pruning (1 fresh and 2 done)

PrunedKeptTotal
New41142
Fresh000
Picked101
Done123
Total43346
Accurracy
100.0%
Counts
46 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
49.2%
(*.f64 (/.f64 x 2) x)
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
53.4%
(*.f64 -1/2 y)
49.2%
(*.f64 (/.f64 x 2) x)
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
53.4%
(*.f64 -1/2 y)
Compiler

Compiled 42 to 30 computations (28.6% saved)

localize25.0ms (1.2%)

Compiler

Compiled 13 to 9 computations (30.8% saved)

eval0.0ms (0%)

Compiler

Compiled 2 to 2 computations (0% saved)

prune2.0ms (0.1%)

Pruning

3 alts after pruning (0 fresh and 3 done)

PrunedKeptTotal
New000
Fresh000
Picked011
Done022
Total033
Accurracy
100.0%
Counts
3 → 3
Alt Table
Click to see full alt table
StatusAccuracyProgram
49.2%
(*.f64 (/.f64 x 2) x)
99.7%
(*.f64 1/2 (-.f64 (*.f64 x x) y))
53.4%
(*.f64 -1/2 y)
Compiler

Compiled 49 to 33 computations (32.7% saved)

regimes22.0ms (1.1%)

Counts
5 → 1
Calls
Call 1
Inputs
(*.f64 -1/2 y)
(*.f64 1/2 (*.f64 x x))
(*.f64 (/.f64 x 2) x)
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(pow.f64 (*.f64 x (sqrt.f64 1/2)) 2)
Outputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
Calls

5 calls:

6.0ms
(*.f64 1/2 (-.f64 (*.f64 x x) y))
4.0ms
y
4.0ms
x
4.0ms
(-.f64 (*.f64 x x) y)
3.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
99.7%1x
99.7%1y
99.7%1(*.f64 1/2 (-.f64 (*.f64 x x) y))
99.7%1(-.f64 (*.f64 x x) y)
99.7%1(*.f64 x x)
Compiler

Compiled 55 to 35 computations (36.4% saved)

regimes52.0ms (2.5%)

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

3 calls:

29.0ms
y
12.0ms
x
9.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
91.0%4x
71.2%9y
91.0%4(*.f64 x x)
Compiler

Compiled 26 to 17 computations (34.6% saved)

regimes29.0ms (1.4%)

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

2 calls:

17.0ms
x
8.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
90.7%4x
90.7%4(*.f64 x x)
Compiler

Compiled 18 to 12 computations (33.3% saved)

regimes5.0ms (0.3%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

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

2 calls:

2.0ms
x
2.0ms
y
Results
AccuracySegmentsBranch
53.4%1y
53.4%1x
Compiler

Compiled 11 to 8 computations (27.3% saved)

bsearch0.0ms (0%)

Algorithm
left-value
Steps
TimeLeftRight
0.0ms
17193326297930520.0
3147758247340835300.0
0.0ms
1.0026909637436216e-45
3.263820038138693e-40
0.0ms
8.02840343007452e-104
1.296503049645665e-103
Compiler

Compiled 14 to 10 computations (28.6% saved)

bsearch30.0ms (1.5%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
narrow-enough
Steps
TimeLeftRight
10.0ms
17193326297930520.0
3147758247340835300.0
13.0ms
1.0026909637436216e-45
3.263820038138693e-40
7.0ms
8.02840343007452e-104
1.296503049645665e-103
Results
26.0ms320×body256valid
Compiler

Compiled 254 to 210 computations (17.3% saved)

simplify9.0ms (0.4%)

Algorithm
egg-herbie
Rules
10×*-commutative
sub-neg
not-or
+-commutative
if-if-or-not
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
035190
147190
255190
360186
462186
563186
Stop Event
done
saturated
Calls
Call 1
Inputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(if (<=.f64 (*.f64 x x) 8069530869021589/80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359168) (*.f64 -1/2 y) (if (<=.f64 (*.f64 x x) 6427752177035961/3213876088517980551083924184682325205044405987565585670602752) (*.f64 1/2 (*.f64 x x)) (if (<=.f64 (*.f64 x x) 20000000000000000) (*.f64 -1/2 y) (*.f64 (/.f64 x 2) x))))
(if (<=.f64 (*.f64 x x) 2420859260706477/20173827172553973356686868531273530268200826506478308693989526222973809547006571833044104322501076808092993531037089792) (*.f64 -1/2 y) (if (<=.f64 (*.f64 x x) 2812141577453233/1606938044258990275541962092341162602522202993782792835301376) (*.f64 1/2 (*.f64 x x)) (if (<=.f64 (*.f64 x x) 410000000000000000) (*.f64 -1/2 y) (*.f64 1/2 (*.f64 x x)))))
(*.f64 -1/2 y)
Outputs
(*.f64 1/2 (-.f64 (*.f64 x x) y))
(if (<=.f64 (*.f64 x x) 8069530869021589/80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359168) (*.f64 -1/2 y) (if (<=.f64 (*.f64 x x) 6427752177035961/3213876088517980551083924184682325205044405987565585670602752) (*.f64 1/2 (*.f64 x x)) (if (<=.f64 (*.f64 x x) 20000000000000000) (*.f64 -1/2 y) (*.f64 (/.f64 x 2) x))))
(if (<=.f64 (*.f64 x x) 8069530869021589/80695308690215893426747474125094121072803306025913234775958104891895238188026287332176417290004307232371974124148359168) (*.f64 y -1/2) (if (<=.f64 (*.f64 x x) 6427752177035961/3213876088517980551083924184682325205044405987565585670602752) (*.f64 1/2 (*.f64 x x)) (if (<=.f64 (*.f64 x x) 20000000000000000) (*.f64 y -1/2) (*.f64 x (/.f64 x 2)))))
(if (<=.f64 (*.f64 x x) 2420859260706477/20173827172553973356686868531273530268200826506478308693989526222973809547006571833044104322501076808092993531037089792) (*.f64 -1/2 y) (if (<=.f64 (*.f64 x x) 2812141577453233/1606938044258990275541962092341162602522202993782792835301376) (*.f64 1/2 (*.f64 x x)) (if (<=.f64 (*.f64 x x) 410000000000000000) (*.f64 -1/2 y) (*.f64 1/2 (*.f64 x x)))))
(if (<=.f64 (*.f64 x x) 2420859260706477/20173827172553973356686868531273530268200826506478308693989526222973809547006571833044104322501076808092993531037089792) (*.f64 y -1/2) (if (or (<=.f64 (*.f64 x x) 2812141577453233/1606938044258990275541962092341162602522202993782792835301376) (not (<=.f64 (*.f64 x x) 410000000000000000))) (*.f64 1/2 (*.f64 x x)) (*.f64 y -1/2)))
(if (or (<=.f64 (*.f64 x x) 2420859260706477/20173827172553973356686868531273530268200826506478308693989526222973809547006571833044104322501076808092993531037089792) (and (not (<=.f64 (*.f64 x x) 2812141577453233/1606938044258990275541962092341162602522202993782792835301376)) (<=.f64 (*.f64 x x) 410000000000000000))) (*.f64 y -1/2) (*.f64 1/2 (*.f64 x x)))
(*.f64 -1/2 y)
(*.f64 y -1/2)
Compiler

Compiled 79 to 48 computations (39.2% saved)

soundness294.0ms (14.4%)

Rules
1494×fma-def
1238×fma-def
1214×distribute-rgt-in
1210×distribute-lft-in
1202×log-prod
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
068867
1169793
2490793
32912793
46138793
0613
112213
2138313
0791097
1193777
2677769
32251769
47376769
Stop Event
node limit
node limit
node limit
Compiler

Compiled 207 to 136 computations (34.3% saved)

end0.0ms (0%)

preprocess164.0ms (8.1%)

Remove

(abs x)

Compiler

Compiled 182 to 104 computations (42.9% saved)

Profiling

Loading profile data...