Data.Histogram.Bin.BinF:$cfromIndex from histogram-fill-0.8.4.1

Time bar (total: 2.6s)

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 13 to 9 computations (30.8% saved)

sample1.3s (48.9%)

Results
1.1s7272×body256valid
116.0ms983×body256infinite
0.0msbody1024valid
Bogosity

preprocess287.0ms (11.2%)

Algorithm
egg-herbie
Rules
3066×fma-def
456×distribute-rgt-in
428×fma-neg
346×sub-neg
308×cancel-sign-sub-inv
Problems
256×No Errors
Iterations

Useful iterations: 12 (0.0ms)

IterNodesCost
037308
183272
2186268
3317254
4579235
5887222
61768214
73245209
83812204
93999204
104078204
114086204
124086196
134405196
144405196
Stop Event
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (+.f64 (/.f64 (neg.f64 x) 2) (*.f64 y (neg.f64 x))) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 (neg.f64 y) x)) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) (neg.f64 z))
(+.f64 (+.f64 (/.f64 y 2) (*.f64 x y)) z)
(+.f64 (+.f64 (/.f64 z 2) (*.f64 y z)) x)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 z x)) y)
Outputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
(+.f64 (fma.f64 x y (/.f64 x 2)) z)
(+.f64 (/.f64 x 2) (fma.f64 x y z))
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
(fma.f64 x (+.f64 y 1/2) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
(+.f64 (fma.f64 x y (/.f64 x 2)) z)
(+.f64 (/.f64 x 2) (fma.f64 x y z))
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
(fma.f64 x (+.f64 y 1/2) z)
(+.f64 (+.f64 (/.f64 (neg.f64 x) 2) (*.f64 y (neg.f64 x))) z)
(+.f64 z (+.f64 (/.f64 (neg.f64 x) 2) (*.f64 x (neg.f64 y))))
(+.f64 z (neg.f64 (fma.f64 x y (/.f64 x 2))))
(-.f64 z (fma.f64 x y (/.f64 x 2)))
(+.f64 z (*.f64 x (-.f64 -1/2 y)))
(fma.f64 x (-.f64 -1/2 y) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 (neg.f64 y) x)) z)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x (neg.f64 y)) z))
(+.f64 z (-.f64 (/.f64 x 2) (*.f64 x y)))
(-.f64 z (fma.f64 x y (*.f64 x -1/2)))
(-.f64 z (*.f64 x (+.f64 y -1/2)))
(+.f64 z (*.f64 x (-.f64 1/2 y)))
(fma.f64 x (-.f64 1/2 y) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) (neg.f64 z))
(-.f64 (+.f64 (/.f64 x 2) (*.f64 x y)) z)
(-.f64 (fma.f64 x y (/.f64 x 2)) z)
(-.f64 (*.f64 x (-.f64 y -1/2)) z)
(-.f64 (*.f64 x (+.f64 y 1/2)) z)
(neg.f64 (fma.f64 x (-.f64 -1/2 y) z))
(+.f64 (+.f64 (/.f64 y 2) (*.f64 x y)) z)
(+.f64 z (+.f64 (*.f64 x y) (/.f64 y 2)))
(+.f64 z (fma.f64 x y (/.f64 y 2)))
(fma.f64 x y (+.f64 z (/.f64 y 2)))
(+.f64 z (fma.f64 x y (*.f64 1/2 y)))
(+.f64 z (*.f64 y (+.f64 x 1/2)))
(fma.f64 y (+.f64 x 1/2) z)
(+.f64 (+.f64 (/.f64 z 2) (*.f64 y z)) x)
(+.f64 x (+.f64 (/.f64 z 2) (*.f64 y z)))
(+.f64 x (fma.f64 y z (/.f64 z 2)))
(+.f64 x (fma.f64 y z (*.f64 1/2 z)))
(+.f64 x (*.f64 z (+.f64 y 1/2)))
(fma.f64 z (+.f64 y 1/2) x)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 z x)) y)
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x z) y))
(+.f64 (/.f64 x 2) (fma.f64 x z y))
(+.f64 (*.f64 x 1/2) (fma.f64 x z y))
(+.f64 y (*.f64 x (+.f64 1/2 z)))
(fma.f64 x (+.f64 z 1/2) y)
Compiler

Compiled 42 to 23 computations (45.2% saved)

eval1.0ms (0%)

Compiler

Compiled 41 to 23 computations (43.9% saved)

prune2.0ms (0.1%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
100.0%
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
100.0%
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
100.0%
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
Compiler

Compiled 44 to 30 computations (31.8% saved)

localize48.0ms (1.9%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(*.f64 x (+.f64 y 1/2))
Compiler

Compiled 47 to 22 computations (53.2% saved)

series6.0ms (0.2%)

Counts
1 → 24
Calls

6 calls:

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

rewrite107.0ms (4.2%)

Algorithm
batch-egg-rewrite
Rules
682×unpow-prod-down
517×log1p-expm1-u
517×expm1-log1p-u
498×log-prod
450×prod-exp
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01019
110619
2141419
Stop Event
node limit
Counts
1 → 53
Calls
Call 1
Inputs
(*.f64 x (+.f64 y 1/2))
Outputs
(+.f64 (*.f64 x y) (*.f64 x 1/2))
(+.f64 (*.f64 x 1/2) (*.f64 x y))
(+.f64 0 (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x 1/2) 1))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))))
(-.f64 (+.f64 1 (*.f64 x (+.f64 y 1/2))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (*.f64 (pow.f64 x 3) 1/8)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (*.f64 x 1/2) 2) (*.f64 (*.f64 x y) (*.f64 x 1/2)))))
(/.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 x 1/2) 2)) (-.f64 (*.f64 x y) (*.f64 x 1/2)))
(/.f64 (*.f64 x (+.f64 (pow.f64 y 3) 1/8)) (-.f64 (fma.f64 y y 1/4) (*.f64 y 1/2)))
(/.f64 (*.f64 x (fma.f64 y y -1/4)) (+.f64 y -1/2))
(/.f64 (*.f64 (+.f64 (pow.f64 y 3) 1/8) x) (-.f64 (fma.f64 y y 1/4) (*.f64 y 1/2)))
(/.f64 (*.f64 (fma.f64 y y -1/4) x) (+.f64 y -1/2))
(pow.f64 (*.f64 x (+.f64 y 1/2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 y 1/2))) 3)
(pow.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 y 1/2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 x (+.f64 y 1/2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))))
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 y 1/2))))
(exp.f64 (log.f64 (*.f64 x (+.f64 y 1/2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 y 1/2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 y 1/2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 y 1/2)))) 2))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 y 1/2))))
(fma.f64 x y (*.f64 x 1/2))
(fma.f64 x 1/2 (*.f64 x y))
(fma.f64 y x (*.f64 x 1/2))
(fma.f64 1/2 x (*.f64 x y))
(fma.f64 1 (*.f64 x y) (*.f64 x 1/2))
(fma.f64 1 (*.f64 x 1/2) (*.f64 x y))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 x 1/2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 1/2) (*.f64 x y))
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 x 1/2))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 x 1/2))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 1/2) (*.f64 x y))
(fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 x 1/2))
(fma.f64 (*.f64 x y) 1 (*.f64 (*.f64 x 1/2) 1))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 1/2)) 2) (cbrt.f64 (*.f64 x 1/2)) (*.f64 x y))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 x 1/2))
(fma.f64 (sqrt.f64 (*.f64 x 1/2)) (sqrt.f64 (*.f64 x 1/2)) (*.f64 x y))
(fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 x 1/2))
(fma.f64 (*.f64 1/2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x y))
(fma.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x y))
(fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 x 1/2))
(fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 x 1/2))
(fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x 1/2))
(fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x 1/2))

simplify66.0ms (2.6%)

Algorithm
egg-herbie
Rules
1288×associate-/r*
1128×fma-def
558×fma-neg
446×cancel-sign-sub-inv
418×associate-*r/
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
01561811
13791760
210391739
341891735
Stop Event
node limit
Counts
77 → 75
Calls
Call 1
Inputs
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 1/2 x)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x y)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x y)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(+.f64 (*.f64 x y) (*.f64 x 1/2))
(+.f64 (*.f64 x 1/2) (*.f64 x y))
(+.f64 0 (*.f64 x (+.f64 y 1/2)))
(+.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x 1/2) 1))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))))
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))))
(-.f64 (+.f64 1 (*.f64 x (+.f64 y 1/2))) 1)
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (*.f64 (pow.f64 x 3) 1/8)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (*.f64 x 1/2) 2) (*.f64 (*.f64 x y) (*.f64 x 1/2)))))
(/.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 x 1/2) 2)) (-.f64 (*.f64 x y) (*.f64 x 1/2)))
(/.f64 (*.f64 x (+.f64 (pow.f64 y 3) 1/8)) (-.f64 (fma.f64 y y 1/4) (*.f64 y 1/2)))
(/.f64 (*.f64 x (fma.f64 y y -1/4)) (+.f64 y -1/2))
(/.f64 (*.f64 (+.f64 (pow.f64 y 3) 1/8) x) (-.f64 (fma.f64 y y 1/4) (*.f64 y 1/2)))
(/.f64 (*.f64 (fma.f64 y y -1/4) x) (+.f64 y -1/2))
(pow.f64 (*.f64 x (+.f64 y 1/2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 y 1/2))) 3)
(pow.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 2) 1/2)
(pow.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 3) 1/3)
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 y 1/2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 x (+.f64 y 1/2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))))
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 2))
(log.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 y 1/2))))
(exp.f64 (log.f64 (*.f64 x (+.f64 y 1/2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 y 1/2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 y 1/2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 y 1/2)))) 2))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 y 1/2))))
(fma.f64 x y (*.f64 x 1/2))
(fma.f64 x 1/2 (*.f64 x y))
(fma.f64 y x (*.f64 x 1/2))
(fma.f64 1/2 x (*.f64 x y))
(fma.f64 1 (*.f64 x y) (*.f64 x 1/2))
(fma.f64 1 (*.f64 x 1/2) (*.f64 x y))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 x 1/2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 1/2) (*.f64 x y))
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 x 1/2))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 x 1/2))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 1/2) (*.f64 x y))
(fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 x 1/2))
(fma.f64 (*.f64 x y) 1 (*.f64 (*.f64 x 1/2) 1))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 1/2)) 2) (cbrt.f64 (*.f64 x 1/2)) (*.f64 x y))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 x 1/2))
(fma.f64 (sqrt.f64 (*.f64 x 1/2)) (sqrt.f64 (*.f64 x 1/2)) (*.f64 x y))
(fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 x 1/2))
(fma.f64 (*.f64 1/2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x y))
(fma.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x y))
(fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 x 1/2))
(fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 x 1/2))
(fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x 1/2))
(fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x 1/2))
Outputs
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x (+.f64 1/2 y))
(*.f64 1/2 x)
(*.f64 x 1/2)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x y)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(*.f64 x y)
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 1/2 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 x y) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 x 1/2) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(+.f64 0 (*.f64 x (+.f64 y 1/2)))
(*.f64 x (+.f64 1/2 y))
(+.f64 (*.f64 (*.f64 x y) 1) (*.f64 (*.f64 x 1/2) 1))
(*.f64 x (+.f64 1/2 y))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x)) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))))
(+.f64 (*.f64 2 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 1/2 y)) x)))) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 1/2 y)) x))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 1/2 y)) x))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 (+.f64 1/2 y)) x))) 3)
(+.f64 (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))) (log.f64 (sqrt.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))))
(*.f64 x (+.f64 1/2 y))
(-.f64 (+.f64 1 (*.f64 x (+.f64 y 1/2))) 1)
(*.f64 x (+.f64 1/2 y))
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (*.f64 (pow.f64 x 3) 1/8)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (*.f64 x 1/2) 2) (*.f64 (*.f64 x y) (*.f64 x 1/2)))))
(/.f64 (+.f64 (pow.f64 (*.f64 x y) 3) (*.f64 (pow.f64 x 3) 1/8)) (+.f64 (pow.f64 (*.f64 x y) 2) (-.f64 (pow.f64 (*.f64 x 1/2) 2) (*.f64 x (*.f64 y (*.f64 x 1/2))))))
(/.f64 (*.f64 (pow.f64 x 3) (+.f64 1/8 (pow.f64 y 3))) (+.f64 (pow.f64 (*.f64 x y) 2) (*.f64 (*.f64 x 1/2) (-.f64 (*.f64 x 1/2) (*.f64 x y)))))
(/.f64 (pow.f64 x 3) (/.f64 (fma.f64 (*.f64 x 1/2) (*.f64 x (-.f64 1/2 y)) (pow.f64 (*.f64 x y) 2)) (+.f64 1/8 (pow.f64 y 3))))
(/.f64 (pow.f64 x 3) (/.f64 (*.f64 x (+.f64 (*.f64 y (*.f64 x (+.f64 y -1/2))) (/.f64 x 4))) (+.f64 1/8 (pow.f64 y 3))))
(/.f64 (-.f64 (pow.f64 (*.f64 x y) 2) (pow.f64 (*.f64 x 1/2) 2)) (-.f64 (*.f64 x y) (*.f64 x 1/2)))
(*.f64 x (+.f64 1/2 y))
(/.f64 (*.f64 x (+.f64 (pow.f64 y 3) 1/8)) (-.f64 (fma.f64 y y 1/4) (*.f64 y 1/2)))
(/.f64 (*.f64 x (+.f64 1/8 (pow.f64 y 3))) (-.f64 (fma.f64 y y 1/4) (*.f64 1/2 y)))
(*.f64 (/.f64 (+.f64 1/8 (pow.f64 y 3)) (+.f64 (fma.f64 y y 1/4) (*.f64 y -1/2))) x)
(*.f64 x (/.f64 (+.f64 1/8 (pow.f64 y 3)) (fma.f64 y -1/2 (fma.f64 y y 1/4))))
(*.f64 x (/.f64 (+.f64 1/8 (pow.f64 y 3)) (+.f64 1/4 (*.f64 y (+.f64 y -1/2)))))
(/.f64 (*.f64 x (fma.f64 y y -1/4)) (+.f64 y -1/2))
(/.f64 x (/.f64 (+.f64 y -1/2) (fma.f64 y y -1/4)))
(*.f64 (/.f64 x (+.f64 y -1/2)) (fma.f64 y y -1/4))
(*.f64 (fma.f64 y y -1/4) (/.f64 x (+.f64 y -1/2)))
(*.f64 x (/.f64 (fma.f64 y y -1/4) (+.f64 y -1/2)))
(/.f64 (*.f64 (+.f64 (pow.f64 y 3) 1/8) x) (-.f64 (fma.f64 y y 1/4) (*.f64 y 1/2)))
(/.f64 (*.f64 x (+.f64 1/8 (pow.f64 y 3))) (-.f64 (fma.f64 y y 1/4) (*.f64 1/2 y)))
(*.f64 (/.f64 (+.f64 1/8 (pow.f64 y 3)) (+.f64 (fma.f64 y y 1/4) (*.f64 y -1/2))) x)
(*.f64 x (/.f64 (+.f64 1/8 (pow.f64 y 3)) (fma.f64 y -1/2 (fma.f64 y y 1/4))))
(*.f64 x (/.f64 (+.f64 1/8 (pow.f64 y 3)) (+.f64 1/4 (*.f64 y (+.f64 y -1/2)))))
(/.f64 (*.f64 (fma.f64 y y -1/4) x) (+.f64 y -1/2))
(/.f64 x (/.f64 (+.f64 y -1/2) (fma.f64 y y -1/4)))
(*.f64 (/.f64 x (+.f64 y -1/2)) (fma.f64 y y -1/4))
(*.f64 (fma.f64 y y -1/4) (/.f64 x (+.f64 y -1/2)))
(*.f64 x (/.f64 (fma.f64 y y -1/4) (+.f64 y -1/2)))
(pow.f64 (*.f64 x (+.f64 y 1/2)) 1)
(*.f64 x (+.f64 1/2 y))
(pow.f64 (cbrt.f64 (*.f64 x (+.f64 y 1/2))) 3)
(*.f64 x (+.f64 1/2 y))
(pow.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 2) 1/2)
(*.f64 x (+.f64 1/2 y))
(pow.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 3) 1/3)
(*.f64 x (+.f64 1/2 y))
(pow.f64 (sqrt.f64 (*.f64 x (+.f64 y 1/2))) 2)
(*.f64 x (+.f64 1/2 y))
(pow.f64 (E.f64) (log.f64 (*.f64 x (+.f64 y 1/2))))
(*.f64 x (+.f64 1/2 y))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (+.f64 1/2 y)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (+.f64 1/2 y)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 y 1/2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (+.f64 1/2 y))))) (sqrt.f64 (log.f64 (*.f64 x (+.f64 1/2 y)))))
(sqrt.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 2))
(*.f64 x (+.f64 1/2 y))
(log.f64 (pow.f64 (exp.f64 (+.f64 y 1/2)) x))
(*.f64 x (+.f64 1/2 y))
(cbrt.f64 (pow.f64 (*.f64 x (+.f64 y 1/2)) 3))
(*.f64 x (+.f64 1/2 y))
(expm1.f64 (log1p.f64 (*.f64 x (+.f64 y 1/2))))
(*.f64 x (+.f64 1/2 y))
(exp.f64 (log.f64 (*.f64 x (+.f64 y 1/2))))
(*.f64 x (+.f64 1/2 y))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (+.f64 y 1/2)))) 3))
(*.f64 x (+.f64 1/2 y))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (+.f64 y 1/2)))) 1/3))
(*.f64 x (+.f64 1/2 y))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (+.f64 y 1/2)))) 2))
(*.f64 x (+.f64 1/2 y))
(log1p.f64 (expm1.f64 (*.f64 x (+.f64 y 1/2))))
(*.f64 x (+.f64 1/2 y))
(fma.f64 x y (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 x 1/2 (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 y x (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 1/2 x (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 1 (*.f64 x y) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 1 (*.f64 x 1/2) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) y) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) 1/2) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (pow.f64 (cbrt.f64 y) 2) (*.f64 (cbrt.f64 y) x) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) y) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) 1/2) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (sqrt.f64 y) (*.f64 (sqrt.f64 y) x) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 x y) 1 (*.f64 (*.f64 x 1/2) 1))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x 1/2)) 2) (cbrt.f64 (*.f64 x 1/2)) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (pow.f64 (cbrt.f64 (*.f64 x y)) 2) (cbrt.f64 (*.f64 x y)) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (sqrt.f64 (*.f64 x 1/2)) (sqrt.f64 (*.f64 x 1/2)) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (sqrt.f64 (*.f64 x y)) (sqrt.f64 (*.f64 x y)) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 1/2 (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 1/2 (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x y))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 x (pow.f64 (cbrt.f64 y) 2)) (cbrt.f64 y) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 x (sqrt.f64 y)) (sqrt.f64 y) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 y (pow.f64 (cbrt.f64 x) 2)) (cbrt.f64 x) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))
(fma.f64 (*.f64 y (sqrt.f64 x)) (sqrt.f64 x) (*.f64 x 1/2))
(*.f64 x (+.f64 1/2 y))

eval19.0ms (0.8%)

Compiler

Compiled 1025 to 629 computations (38.6% saved)

prune20.0ms (0.8%)

Pruning

4 alts after pruning (2 fresh and 2 done)

PrunedKeptTotal
New73275
Fresh000
Picked022
Done000
Total73477
Accuracy
100.0%
Counts
77 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
100.0%
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
73.4%
(+.f64 (*.f64 x y) z)
65.4%
(+.f64 (*.f64 x 1/2) z)
100.0%
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
100.0%
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
73.4%
(+.f64 (*.f64 x y) z)
65.4%
(+.f64 (*.f64 x 1/2) z)
Compiler

Compiled 76 to 52 computations (31.6% saved)

localize32.0ms (1.3%)

Compiler

Compiled 26 to 12 computations (53.8% saved)

eval0.0ms (0%)

Compiler

Compiled 3 to 3 computations (0% saved)

prune3.0ms (0.1%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New000
Fresh000
Picked022
Done022
Total044
Accuracy
100.0%
Counts
4 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(+.f64 (/.f64 x 2) (+.f64 (*.f64 x y) z))
100.0%
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
73.4%
(+.f64 (*.f64 x y) z)
65.4%
(+.f64 (*.f64 x 1/2) z)
Compiler

Compiled 76 to 46 computations (39.5% saved)

regimes25.0ms (1%)

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

5 calls:

6.0ms
z
5.0ms
x
4.0ms
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
4.0ms
(+.f64 (/.f64 x 2) (*.f64 y x))
4.0ms
y
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1z
100.0%1(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
100.0%1(+.f64 (/.f64 x 2) (*.f64 y x))
Compiler

Compiled 72 to 44 computations (38.9% saved)

regimes47.0ms (1.8%)

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

3 calls:

39.0ms
x
4.0ms
z
4.0ms
y
Results
AccuracySegmentsBranch
100.0%1x
100.0%1y
100.0%1z
Compiler

Compiled 32 to 21 computations (34.4% saved)

regimes61.0ms (2.4%)

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

3 calls:

36.0ms
x
15.0ms
z
9.0ms
y
Results
AccuracySegmentsBranch
79.7%4x
99.2%3y
81.6%5z
Compiler

Compiled 25 to 17 computations (32% saved)

regimes9.0ms (0.3%)

Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
(+.f64 (*.f64 x 1/2) z)
Outputs
(+.f64 (*.f64 x 1/2) z)
Calls

3 calls:

3.0ms
y
3.0ms
x
3.0ms
z
Results
AccuracySegmentsBranch
65.4%1x
65.4%1z
65.4%1y
Compiler

Compiled 20 to 15 computations (25% saved)

bsearch29.0ms (1.1%)

Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
17.0ms
1.607327670872499e-8
24637178.87885947
13.0ms
-10788.660082516612
-347.70780234619974
Results
26.0ms272×body256valid
Compiler

Compiled 324 to 234 computations (27.8% saved)

simplify8.0ms (0.3%)

Algorithm
egg-herbie
Rules
12×+-commutative
*-commutative
if-if-or-not
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
030156
145156
Stop Event
done
saturated
Calls
Call 1
Inputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
(if (<=.f64 y -350) (+.f64 (*.f64 x y) z) (if (<=.f64 y 1/2) (+.f64 (*.f64 x 1/2) z) (+.f64 (*.f64 x y) z)))
(+.f64 (*.f64 x 1/2) z)
Outputs
(+.f64 (+.f64 (/.f64 x 2) (*.f64 y x)) z)
(+.f64 (+.f64 (/.f64 x 2) (*.f64 x y)) z)
(+.f64 (*.f64 x (+.f64 y 1/2)) z)
(+.f64 z (*.f64 x (+.f64 y 1/2)))
(if (<=.f64 y -350) (+.f64 (*.f64 x y) z) (if (<=.f64 y 1/2) (+.f64 (*.f64 x 1/2) z) (+.f64 (*.f64 x y) z)))
(if (or (<=.f64 y -350) (not (<=.f64 y 1/2))) (+.f64 z (*.f64 x y)) (+.f64 z (*.f64 x 1/2)))
(+.f64 (*.f64 x 1/2) z)
(+.f64 z (*.f64 x 1/2))
Compiler

Compiled 52 to 36 computations (30.8% saved)

soundness475.0ms (18.4%)

Rules
3066×fma-def
1288×associate-/r*
1128×fma-def
558×fma-neg
456×distribute-rgt-in
Iterations

Useful iterations: 12 (0.0ms)

IterNodesCost
037308
183272
2186268
3317254
4579235
5887222
61768214
73245209
83812204
93999204
104078204
114086204
124086196
134405196
144405196
01561811
13791760
210391739
341891735
Stop Event
node limit
saturated
Compiler

Compiled 189 to 118 computations (37.6% saved)

end0.0ms (0%)

preprocess70.0ms (2.7%)

Compiler

Compiled 110 to 68 computations (38.2% saved)

Profiling

Loading profile data...