sqrt A (should all be same)

Time bar (total: 4.2s)

analyze0.0ms (0%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
100%100%0%0%0%0%0%2
Compiler

Compiled 10 to 5 computations (50% saved)

sample924.0ms (21.8%)

Results
912.0ms8252×body256valid
0.0msbody256infinite
Bogosity

preprocess91.0ms (2.1%)

Algorithm
egg-herbie
Rules
89×fma-def
20×associate-*r*
15×distribute-lft-neg-in
13×sub-neg
12×neg-sub0
Problems
131×(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
125×No Errors
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01456
13656
28256
319756
430256
536256
636456
Stop Event
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x))))
(neg.f64 (sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x)))))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(hypot.f64 x x)
(sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x))))
(hypot.f64 x x)
(neg.f64 (sqrt.f64 (+.f64 (*.f64 (neg.f64 x) (neg.f64 x)) (*.f64 (neg.f64 x) (neg.f64 x)))))
(neg.f64 (hypot.f64 x x))
Symmetry

(abs x)

Compiler

Compiled 30 to 9 computations (70% saved)

eval0.0ms (0%)

Compiler

Compiled 4 to 2 computations (50% saved)

prune1.0ms (0%)

Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
100.0%
(hypot.f64 x x)
Compiler

Compiled 8 to 4 computations (50% saved)

localize93.0ms (2.2%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
100.0%
(hypot.f64 x x)
Compiler

Compiled 6 to 3 computations (50% saved)

series3.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(hypot.f64 x x)
1.0ms
x
@inf
(hypot.f64 x x)
1.0ms
x
@0
(hypot.f64 x x)

rewrite344.0ms (8.1%)

Algorithm
batch-egg-rewrite
Rules
800×log1p-expm1-u
485×expm1-log1p-u
217×expm1-udef
217×log1p-udef
203×associate-*r*
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0613
14613
24817
354807
Stop Event
node limit
Counts
1 → 104
Calls
Call 1
Inputs
(hypot.f64 x x)
Outputs
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
(+.f64 (+.f64 (/.f64 0 0) 1) -1)
(+.f64 0 (/.f64 0 0))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 0 0))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 0 0)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))))
(+.f64 (*.f64 (/.f64 0 0) (pow.f64 x 2)) (*.f64 (/.f64 0 0) (pow.f64 x 2)))
(+.f64 (*.f64 (pow.f64 x 2) (/.f64 0 0)) (*.f64 (pow.f64 x 2) (/.f64 0 0)))
(-.f64 (+.f64 (/.f64 0 0) 1) 1)
(-.f64 (/.f64 (pow.f64 x 4) 0) (/.f64 (pow.f64 x 4) 0))
(*.f64 x (*.f64 x 2))
(*.f64 x (*.f64 (*.f64 x 2) 1))
(*.f64 x (*.f64 (*.f64 x 2) (/.f64 0 0)))
(*.f64 (pow.f64 x 2) 2)
(*.f64 (pow.f64 x 2) (*.f64 (*.f64 x 2) (*.f64 x 2)))
(*.f64 (/.f64 0 0) (/.f64 0 0))
(*.f64 (/.f64 0 0) 1)
(*.f64 (/.f64 0 0) (log.f64 (E.f64)))
(*.f64 (/.f64 0 0) (pow.f64 1 1/3))
(*.f64 (/.f64 0 0) (pow.f64 1 1/2))
(*.f64 1 (/.f64 0 0))
(*.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x 2)))
(*.f64 (cbrt.f64 x) (+.f64 (pow.f64 (cbrt.f64 x) 5) (pow.f64 (cbrt.f64 x) 5)))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x 2)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 4)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 x 2)))
(*.f64 (sqrt.f64 x) (pow.f64 (*.f64 x 2) 1/2))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
(*.f64 (sqrt.f64 x) (+.f64 (pow.f64 x 3/2) (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 x 2)))
(*.f64 0 (/.f64 1 0))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 (pow.f64 x 2) (/.f64 0 0)))
(*.f64 (pow.f64 x 3/2) (+.f64 (sqrt.f64 x) (sqrt.f64 x)))
(*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 1 (+.f64 0 (pow.f64 x 4))))
(*.f64 (*.f64 x 2) x)
(*.f64 (pow.f64 (cbrt.f64 x) 5) (+.f64 (cbrt.f64 x) (cbrt.f64 x)))
(*.f64 (pow.f64 (cbrt.f64 x) 4) (+.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 2)))
(*.f64 4 (pow.f64 x 4))
(*.f64 (pow.f64 1 1/3) (/.f64 0 0))
(*.f64 (pow.f64 1 1/2) (/.f64 0 0))
(*.f64 (pow.f64 2 1/2) x)
(*.f64 (cbrt.f64 2) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 2 (sqrt.f64 x)) (pow.f64 x 3/2))
(*.f64 (*.f64 (/.f64 0 0) x) (*.f64 x 2))
(*.f64 (*.f64 (/.f64 0 0) 2) (pow.f64 x 2))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (pow.f64 (cbrt.f64 x) 4))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 4)) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (*.f64 2 (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 5)) (cbrt.f64 x))
(/.f64 1 (/.f64 0 0))
(/.f64 1 (/.f64 (+.f64 0 (pow.f64 x 4)) (*.f64 2 (pow.f64 x 6))))
(/.f64 0 0)
(/.f64 (*.f64 2 (pow.f64 x 6)) (+.f64 0 (pow.f64 x 4)))
(/.f64 (cbrt.f64 (*.f64 2 (pow.f64 x 6))) (cbrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (sqrt.f64 0) (sqrt.f64 0))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 6))) (sqrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (*.f64 2 (pow.f64 x 6))) (*.f64 (+.f64 0 (pow.f64 x 4)) (+.f64 0 (pow.f64 x 4))))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 0) (*.f64 (+.f64 0 (pow.f64 x 4)) 0))
(/.f64 (*.f64 0 (*.f64 2 (pow.f64 x 6))) (*.f64 0 (+.f64 0 (pow.f64 x 4))))
(/.f64 (neg.f64 (*.f64 2 (pow.f64 x 6))) (neg.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (-.f64 (pow.f64 (+.f64 (/.f64 0 0) 1) 3) 1) (+.f64 (*.f64 (+.f64 (/.f64 0 0) 1) (+.f64 (/.f64 0 0) 1)) (+.f64 1 (+.f64 (/.f64 0 0) 1))))
(/.f64 (-.f64 (*.f64 (+.f64 (/.f64 0 0) 1) (+.f64 (/.f64 0 0) 1)) 1) (+.f64 (+.f64 (/.f64 0 0) 1) 1))
(/.f64 (*.f64 (/.f64 0 0) (*.f64 2 (pow.f64 x 6))) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 1) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 0 0)) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 0 (/.f64 0 0)) 0)
(pow.f64 (/.f64 0 0) 1)
(pow.f64 (/.f64 0 0) 2)
(pow.f64 (/.f64 0 0) 1/2)
(pow.f64 (/.f64 0 0) 1/3)
(pow.f64 (/.f64 0 0) 3)
(pow.f64 (/.f64 0 0) 4)
(pow.f64 (/.f64 0 0) 6)
(pow.f64 (/.f64 0 0) 3/2)
(pow.f64 (/.f64 0 0) 5/2)
(pow.f64 (/.f64 0 0) 2/3)
(pow.f64 (/.f64 0 0) 4/3)
(pow.f64 (/.f64 0 0) 5)
(pow.f64 (/.f64 0 0) 1/6)
(pow.f64 (/.f64 0 0) 1/9)
(pow.f64 (/.f64 0 0) 1/4)
(pow.f64 (/.f64 0 0) 9)
(pow.f64 (E.f64) (log.f64 (/.f64 0 0)))
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 0 0)) 2))) (cbrt.f64 (log.f64 (/.f64 0 0))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 0 0)))) (sqrt.f64 (log.f64 (/.f64 0 0))))
(sqrt.f64 (/.f64 0 0))
(fabs.f64 (/.f64 0 0))
(fabs.f64 (neg.f64 (/.f64 0 0)))
(log.f64 (exp.f64 (/.f64 0 0)))
(cbrt.f64 (/.f64 0 0))
(expm1.f64 (log1p.f64 (/.f64 0 0)))
(exp.f64 (log.f64 (/.f64 0 0)))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/2))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 3))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/3))
(log1p.f64 (expm1.f64 (/.f64 0 0)))
(fma.f64 x x (pow.f64 x 2))
(fma.f64 1 (pow.f64 x 2) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) (pow.f64 x 2))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (pow.f64 x 2))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) (pow.f64 x 2))

simplify79.0ms (1.9%)

Algorithm
egg-herbie
Rules
39×*-commutative
30×sqr-pow
15×associate-*r*
13×associate-*l*
10×count-2
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0223916
1682916
Stop Event
unsound
Counts
116 → 126
Calls
Call 1
Inputs
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
(+.f64 (+.f64 (/.f64 0 0) 1) -1)
(+.f64 0 (/.f64 0 0))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 0 0))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 0 0)))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))))
(+.f64 (*.f64 (/.f64 0 0) (pow.f64 x 2)) (*.f64 (/.f64 0 0) (pow.f64 x 2)))
(+.f64 (*.f64 (pow.f64 x 2) (/.f64 0 0)) (*.f64 (pow.f64 x 2) (/.f64 0 0)))
(-.f64 (+.f64 (/.f64 0 0) 1) 1)
(-.f64 (/.f64 (pow.f64 x 4) 0) (/.f64 (pow.f64 x 4) 0))
(*.f64 x (*.f64 x 2))
(*.f64 x (*.f64 (*.f64 x 2) 1))
(*.f64 x (*.f64 (*.f64 x 2) (/.f64 0 0)))
(*.f64 (pow.f64 x 2) 2)
(*.f64 (pow.f64 x 2) (*.f64 (*.f64 x 2) (*.f64 x 2)))
(*.f64 (/.f64 0 0) (/.f64 0 0))
(*.f64 (/.f64 0 0) 1)
(*.f64 (/.f64 0 0) (log.f64 (E.f64)))
(*.f64 (/.f64 0 0) (pow.f64 1 1/3))
(*.f64 (/.f64 0 0) (pow.f64 1 1/2))
(*.f64 1 (/.f64 0 0))
(*.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x 2)))
(*.f64 (cbrt.f64 x) (+.f64 (pow.f64 (cbrt.f64 x) 5) (pow.f64 (cbrt.f64 x) 5)))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x 2)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 4)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 x 2)))
(*.f64 (sqrt.f64 x) (pow.f64 (*.f64 x 2) 1/2))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
(*.f64 (sqrt.f64 x) (+.f64 (pow.f64 x 3/2) (pow.f64 x 3/2)))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 x 2)))
(*.f64 0 (/.f64 1 0))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 (pow.f64 x 2) (/.f64 0 0)))
(*.f64 (pow.f64 x 3/2) (+.f64 (sqrt.f64 x) (sqrt.f64 x)))
(*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 1 (+.f64 0 (pow.f64 x 4))))
(*.f64 (*.f64 x 2) x)
(*.f64 (pow.f64 (cbrt.f64 x) 5) (+.f64 (cbrt.f64 x) (cbrt.f64 x)))
(*.f64 (pow.f64 (cbrt.f64 x) 4) (+.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 2)))
(*.f64 4 (pow.f64 x 4))
(*.f64 (pow.f64 1 1/3) (/.f64 0 0))
(*.f64 (pow.f64 1 1/2) (/.f64 0 0))
(*.f64 (pow.f64 2 1/2) x)
(*.f64 (cbrt.f64 2) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (sqrt.f64 2) x)
(*.f64 (*.f64 2 (sqrt.f64 x)) (pow.f64 x 3/2))
(*.f64 (*.f64 (/.f64 0 0) x) (*.f64 x 2))
(*.f64 (*.f64 (/.f64 0 0) 2) (pow.f64 x 2))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (pow.f64 (cbrt.f64 x) 4))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 4)) (pow.f64 (cbrt.f64 x) 2))
(*.f64 (*.f64 2 (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 5)) (cbrt.f64 x))
(/.f64 1 (/.f64 0 0))
(/.f64 1 (/.f64 (+.f64 0 (pow.f64 x 4)) (*.f64 2 (pow.f64 x 6))))
(/.f64 0 0)
(/.f64 (*.f64 2 (pow.f64 x 6)) (+.f64 0 (pow.f64 x 4)))
(/.f64 (cbrt.f64 (*.f64 2 (pow.f64 x 6))) (cbrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (sqrt.f64 0) (sqrt.f64 0))
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 6))) (sqrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (*.f64 2 (pow.f64 x 6))) (*.f64 (+.f64 0 (pow.f64 x 4)) (+.f64 0 (pow.f64 x 4))))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 0) (*.f64 (+.f64 0 (pow.f64 x 4)) 0))
(/.f64 (*.f64 0 (*.f64 2 (pow.f64 x 6))) (*.f64 0 (+.f64 0 (pow.f64 x 4))))
(/.f64 (neg.f64 (*.f64 2 (pow.f64 x 6))) (neg.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 (-.f64 (pow.f64 (+.f64 (/.f64 0 0) 1) 3) 1) (+.f64 (*.f64 (+.f64 (/.f64 0 0) 1) (+.f64 (/.f64 0 0) 1)) (+.f64 1 (+.f64 (/.f64 0 0) 1))))
(/.f64 (-.f64 (*.f64 (+.f64 (/.f64 0 0) 1) (+.f64 (/.f64 0 0) 1)) 1) (+.f64 (+.f64 (/.f64 0 0) 1) 1))
(/.f64 (*.f64 (/.f64 0 0) (*.f64 2 (pow.f64 x 6))) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 1) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 0 0)) (+.f64 0 (pow.f64 x 4)))
(/.f64 (*.f64 0 (/.f64 0 0)) 0)
(pow.f64 (/.f64 0 0) 1)
(pow.f64 (/.f64 0 0) 2)
(pow.f64 (/.f64 0 0) 1/2)
(pow.f64 (/.f64 0 0) 1/3)
(pow.f64 (/.f64 0 0) 3)
(pow.f64 (/.f64 0 0) 4)
(pow.f64 (/.f64 0 0) 6)
(pow.f64 (/.f64 0 0) 3/2)
(pow.f64 (/.f64 0 0) 5/2)
(pow.f64 (/.f64 0 0) 2/3)
(pow.f64 (/.f64 0 0) 4/3)
(pow.f64 (/.f64 0 0) 5)
(pow.f64 (/.f64 0 0) 1/6)
(pow.f64 (/.f64 0 0) 1/9)
(pow.f64 (/.f64 0 0) 1/4)
(pow.f64 (/.f64 0 0) 9)
(pow.f64 (E.f64) (log.f64 (/.f64 0 0)))
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 0 0)) 2))) (cbrt.f64 (log.f64 (/.f64 0 0))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 0 0)))) (sqrt.f64 (log.f64 (/.f64 0 0))))
(sqrt.f64 (/.f64 0 0))
(fabs.f64 (/.f64 0 0))
(fabs.f64 (neg.f64 (/.f64 0 0)))
(log.f64 (exp.f64 (/.f64 0 0)))
(cbrt.f64 (/.f64 0 0))
(expm1.f64 (log1p.f64 (/.f64 0 0)))
(exp.f64 (log.f64 (/.f64 0 0)))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/2))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 3))
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/3))
(log1p.f64 (expm1.f64 (/.f64 0 0)))
(fma.f64 x x (pow.f64 x 2))
(fma.f64 1 (pow.f64 x 2) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) (pow.f64 x 2))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (pow.f64 x 2))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) (pow.f64 x 2))
Outputs
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 x (sqrt.f64 2))
(*.f64 x -2)
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 x -2)
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 x -2)
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 x -2)
(*.f64 -1 (*.f64 x (sqrt.f64 2)))
(*.f64 x -2)
(+.f64 (pow.f64 x 2) (pow.f64 x 2))
-2
(+.f64 (+.f64 (/.f64 0 0) 1) -1)
-2
(+.f64 0 (/.f64 0 0))
-2
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (/.f64 0 0))) 2)) (log.f64 (cbrt.f64 (exp.f64 (/.f64 0 0)))))
-2
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))) (log.f64 (sqrt.f64 (exp.f64 (/.f64 0 0)))))
-2
(+.f64 (*.f64 (/.f64 0 0) (pow.f64 x 2)) (*.f64 (/.f64 0 0) (pow.f64 x 2)))
-2
(+.f64 (*.f64 (pow.f64 x 2) (/.f64 0 0)) (*.f64 (pow.f64 x 2) (/.f64 0 0)))
-2
(-.f64 (+.f64 (/.f64 0 0) 1) 1)
-2
(-.f64 (/.f64 (pow.f64 x 4) 0) (/.f64 (pow.f64 x 4) 0))
-2
(*.f64 x (*.f64 x 2))
-2
(*.f64 x (*.f64 (*.f64 x 2) 1))
-2
(*.f64 x (*.f64 (*.f64 x 2) (/.f64 0 0)))
-2
(*.f64 (pow.f64 x 2) 2)
-2
(*.f64 (pow.f64 x 2) (*.f64 (*.f64 x 2) (*.f64 x 2)))
-2
(*.f64 (/.f64 0 0) (/.f64 0 0))
-2
(*.f64 (/.f64 0 0) 1)
-2
(*.f64 (/.f64 0 0) (log.f64 (E.f64)))
-2
(*.f64 (/.f64 0 0) (pow.f64 1 1/3))
-2
(*.f64 (/.f64 0 0) (pow.f64 1 1/2))
-2
(*.f64 1 (/.f64 0 0))
-2
(*.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x 2)))
(*.f64 (cbrt.f64 x) (cbrt.f64 (*.f64 x -2)))
(*.f64 (cbrt.f64 x) (+.f64 (pow.f64 (cbrt.f64 x) 5) (pow.f64 (cbrt.f64 x) 5)))
(*.f64 -2 (*.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x)))
(*.f64 (cbrt.f64 x) (*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 x 2)))
(*.f64 (cbrt.f64 x) (*.f64 (*.f64 x -2) (pow.f64 (cbrt.f64 x) -2)))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (+.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 4)))
(*.f64 -2 (pow.f64 (cbrt.f64 x) -2))
(*.f64 (pow.f64 (cbrt.f64 x) 2) (*.f64 (cbrt.f64 x) (*.f64 x 2)))
(*.f64 (pow.f64 (cbrt.f64 x) -2) (*.f64 (*.f64 x -2) (cbrt.f64 x)))
(*.f64 (sqrt.f64 x) (pow.f64 (*.f64 x 2) 1/2))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x -2)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x -2)))
(*.f64 (sqrt.f64 x) (+.f64 (pow.f64 x 3/2) (pow.f64 x 3/2)))
(*.f64 -2 (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 x) (*.f64 x 2)))
(*.f64 (sqrt.f64 x) (*.f64 (*.f64 x -2) (sqrt.f64 x)))
(*.f64 0 (/.f64 1 0))
-2
(*.f64 2 (pow.f64 x 2))
-2
(*.f64 2 (*.f64 (pow.f64 x 2) (/.f64 0 0)))
-2
(*.f64 (pow.f64 x 3/2) (+.f64 (sqrt.f64 x) (sqrt.f64 x)))
(*.f64 -2 (sqrt.f64 x))
(*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 1 (+.f64 0 (pow.f64 x 4))))
-2
(*.f64 (*.f64 x 2) x)
-2
(*.f64 (pow.f64 (cbrt.f64 x) 5) (+.f64 (cbrt.f64 x) (cbrt.f64 x)))
(*.f64 -2 (*.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x)))
(*.f64 (pow.f64 (cbrt.f64 x) 4) (+.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 2)))
(*.f64 -2 (pow.f64 (cbrt.f64 x) -2))
(*.f64 4 (pow.f64 x 4))
-2
(*.f64 (pow.f64 1 1/3) (/.f64 0 0))
-2
(*.f64 (pow.f64 1 1/2) (/.f64 0 0))
-2
(*.f64 (pow.f64 2 1/2) x)
(*.f64 x -2)
(*.f64 (cbrt.f64 2) (pow.f64 (cbrt.f64 x) 2))
(*.f64 -2 (pow.f64 (cbrt.f64 x) -2))
(*.f64 (sqrt.f64 2) x)
(*.f64 x -2)
(*.f64 (*.f64 2 (sqrt.f64 x)) (pow.f64 x 3/2))
(*.f64 -2 (sqrt.f64 x))
(*.f64 (*.f64 (/.f64 0 0) x) (*.f64 x 2))
-2
(*.f64 (*.f64 (/.f64 0 0) 2) (pow.f64 x 2))
-2
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 2)) (pow.f64 (cbrt.f64 x) 4))
(*.f64 -2 (pow.f64 (cbrt.f64 x) -2))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 4)) (pow.f64 (cbrt.f64 x) 2))
(*.f64 -2 (pow.f64 (cbrt.f64 x) -2))
(*.f64 (*.f64 2 (pow.f64 x 3/2)) (sqrt.f64 x))
(*.f64 -2 (sqrt.f64 x))
(*.f64 (*.f64 2 (pow.f64 (cbrt.f64 x) 5)) (cbrt.f64 x))
(*.f64 -2 (*.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x)))
(/.f64 1 (/.f64 0 0))
-2
(/.f64 1 (/.f64 (+.f64 0 (pow.f64 x 4)) (*.f64 2 (pow.f64 x 6))))
-2
(/.f64 0 0)
-2
(/.f64 (*.f64 2 (pow.f64 x 6)) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (cbrt.f64 (*.f64 2 (pow.f64 x 6))) (cbrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 -2 (cbrt.f64 (pow.f64 x -2)))
(/.f64 (sqrt.f64 0) (sqrt.f64 0))
-2
(/.f64 (sqrt.f64 (*.f64 2 (pow.f64 x 6))) (sqrt.f64 (+.f64 0 (pow.f64 x 4))))
(/.f64 -2 (sqrt.f64 (pow.f64 x -2)))
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (*.f64 2 (pow.f64 x 6))) (*.f64 (+.f64 0 (pow.f64 x 4)) (+.f64 0 (pow.f64 x 4))))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 0) (*.f64 (+.f64 0 (pow.f64 x 4)) 0))
-2
(/.f64 (*.f64 0 (*.f64 2 (pow.f64 x 6))) (*.f64 0 (+.f64 0 (pow.f64 x 4))))
-2
(/.f64 (neg.f64 (*.f64 2 (pow.f64 x 6))) (neg.f64 (+.f64 0 (pow.f64 x 4))))
-2
(/.f64 (-.f64 (pow.f64 (+.f64 (/.f64 0 0) 1) 3) 1) (+.f64 (*.f64 (+.f64 (/.f64 0 0) 1) (+.f64 (/.f64 0 0) 1)) (+.f64 1 (+.f64 (/.f64 0 0) 1))))
-2
(/.f64 (-.f64 (*.f64 (+.f64 (/.f64 0 0) 1) (+.f64 (/.f64 0 0) 1)) 1) (+.f64 (+.f64 (/.f64 0 0) 1) 1))
-2
(/.f64 (*.f64 (/.f64 0 0) (*.f64 2 (pow.f64 x 6))) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) 1) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (*.f64 (*.f64 2 (pow.f64 x 6)) (/.f64 0 0)) (+.f64 0 (pow.f64 x 4)))
-2
(/.f64 (*.f64 0 (/.f64 0 0)) 0)
-2
(pow.f64 (/.f64 0 0) 1)
-2
(pow.f64 (/.f64 0 0) 2)
-2
(pow.f64 (/.f64 0 0) 1/2)
-2
(pow.f64 (/.f64 0 0) 1/3)
-2
(pow.f64 (/.f64 0 0) 3)
-2
(pow.f64 (/.f64 0 0) 4)
-2
(pow.f64 (/.f64 0 0) 6)
-2
(pow.f64 (/.f64 0 0) 3/2)
-2
(pow.f64 (/.f64 0 0) 5/2)
(pow.f64 -2 5/2)
(pow.f64 (/.f64 0 0) 2/3)
-2
(pow.f64 (/.f64 0 0) 4/3)
-2
(pow.f64 (/.f64 0 0) 5)
-2
(pow.f64 (/.f64 0 0) 1/6)
(pow.f64 -2 1/6)
(pow.f64 (/.f64 0 0) 1/9)
(*.f64 (pow.f64 -2 1/18) (pow.f64 -2 1/18))
(pow.f64 (/.f64 0 0) 1/4)
-2
(pow.f64 (/.f64 0 0) 9)
-2
(pow.f64 (E.f64) (log.f64 (/.f64 0 0)))
-2
(pow.f64 (exp.f64 (cbrt.f64 (pow.f64 (log.f64 (/.f64 0 0)) 2))) (cbrt.f64 (log.f64 (/.f64 0 0))))
-2
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (/.f64 0 0)))) (sqrt.f64 (log.f64 (/.f64 0 0))))
-2
(sqrt.f64 (/.f64 0 0))
-2
(fabs.f64 (/.f64 0 0))
-2
(fabs.f64 (neg.f64 (/.f64 0 0)))
-2
(log.f64 (exp.f64 (/.f64 0 0)))
-2
(cbrt.f64 (/.f64 0 0))
-2
(expm1.f64 (log1p.f64 (/.f64 0 0)))
-2
(exp.f64 (log.f64 (/.f64 0 0)))
-2
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/2))
-2
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 3))
-2
(exp.f64 (*.f64 (log.f64 (/.f64 0 0)) 1/3))
-2
(log1p.f64 (expm1.f64 (/.f64 0 0)))
-2
(fma.f64 x x (pow.f64 x 2))
-2
(fma.f64 1 (pow.f64 x 2) (pow.f64 x 2))
(pow.f64 x -2)
(fma.f64 (pow.f64 (cbrt.f64 x) 2) (pow.f64 (cbrt.f64 x) 4) (pow.f64 x 2))
(+.f64 (pow.f64 (cbrt.f64 x) -2) (pow.f64 x -2))
(fma.f64 (sqrt.f64 x) (pow.f64 x 3/2) (pow.f64 x 2))
(fma.f64 (sqrt.f64 x) (pow.f64 x -2) (pow.f64 x -2))
(fma.f64 (pow.f64 x 3/2) (sqrt.f64 x) (pow.f64 x 2))
(fma.f64 (pow.f64 x -2) (sqrt.f64 x) (pow.f64 x -2))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (pow.f64 x 2))
(fma.f64 (pow.f64 (cbrt.f64 x) 5) (cbrt.f64 x) (pow.f64 x -2))
(fma.f64 (pow.f64 (cbrt.f64 x) 4) (pow.f64 (cbrt.f64 x) 2) (pow.f64 x 2))
(+.f64 (pow.f64 (cbrt.f64 x) -2) (pow.f64 x -2))

eval29.0ms (0.7%)

Compiler

Compiled 1036 to 827 computations (20.2% saved)

prune41.0ms (1%)

Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New1224126
Fresh000
Picked011
Done000
Total1225127
Accuracy
100.0%
Counts
127 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
Compiler

Compiled 48 to 34 computations (29.2% saved)

localize107.0ms (2.5%)

Localize:

Found 1 expressions with local error:

NewAccuracyProgram
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
Compiler

Compiled 35 to 22 computations (37.1% saved)

series2.0ms (0%)

Counts
1 → 12
Calls

3 calls:

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

rewrite72.0ms (1.7%)

Algorithm
batch-egg-rewrite
Rules
451×unpow-prod-down
401×log1p-expm1-u
401×expm1-log1p-u
374×add-exp-log
350×add-log-exp
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01123
110914
2120114
Stop Event
node limit
Counts
1 → 22
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
Outputs
(+.f64 0 (*.f64 x (sqrt.f64 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (*.f64 (pow.f64 x 2) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 x (sqrt.f64 2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
(log.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (sqrt.f64 2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 2) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2)))) 2))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))

simplify72.0ms (1.7%)

Algorithm
egg-herbie
Rules
614×log-prod
414×distribute-lft-out
309×associate-*r*
296×*-commutative
269×associate-*l*
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
073665
1169634
2510634
32779634
45890634
Stop Event
node limit
Counts
34 → 30
Calls
Call 1
Inputs
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(+.f64 0 (*.f64 x (sqrt.f64 2)))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))))
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(pow.f64 (*.f64 (pow.f64 x 2) 2) 1/2)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(pow.f64 (E.f64) (log.f64 (*.f64 x (sqrt.f64 2))))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
(log.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 3))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (sqrt.f64 2)))) 1/3))
(exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 2) 2)) 1/2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2)))) 2))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
Outputs
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 x (sqrt.f64 2))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (neg.f64 (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (*.f64 (sqrt.f64 -1) (neg.f64 (sqrt.f64 -2))))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (neg.f64 (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (*.f64 (sqrt.f64 -1) (neg.f64 (sqrt.f64 -2))))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (neg.f64 (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (*.f64 (sqrt.f64 -1) (neg.f64 (sqrt.f64 -2))))
(*.f64 -1 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(neg.f64 (*.f64 x (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (neg.f64 (*.f64 (sqrt.f64 -2) (sqrt.f64 -1))))
(*.f64 x (*.f64 (sqrt.f64 -1) (neg.f64 (sqrt.f64 -2))))
(+.f64 0 (*.f64 x (sqrt.f64 2)))
(*.f64 x (sqrt.f64 2))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2)))) 2)) (log.f64 (cbrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))))
(+.f64 (log.f64 (pow.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2))) 2)) (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))))
(*.f64 3 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))))
(*.f64 (log.f64 (cbrt.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))) 3)
(+.f64 (log.f64 (sqrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))) (log.f64 (sqrt.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))))
(*.f64 x (sqrt.f64 2))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 x (sqrt.f64 2))
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(*.f64 x (sqrt.f64 2))
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(*.f64 x (sqrt.f64 2))
(pow.f64 (*.f64 (pow.f64 x 2) 2) 1/2)
(*.f64 x (sqrt.f64 2))
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(*.f64 x (sqrt.f64 2))
(pow.f64 (E.f64) (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 x (sqrt.f64 2))
(pow.f64 (exp.f64 (pow.f64 (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))) 2)) (cbrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(pow.f64 (exp.f64 (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2))))) (sqrt.f64 (log.f64 (*.f64 x (sqrt.f64 2)))))
(sqrt.f64 (*.f64 (pow.f64 x 2) 2))
(*.f64 x (sqrt.f64 2))
(log.f64 (exp.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 x (sqrt.f64 2))
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(*.f64 x (sqrt.f64 2))
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 x (sqrt.f64 2))
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 x (sqrt.f64 2))
(exp.f64 (*.f64 (log.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2)))) 3))
(*.f64 x (sqrt.f64 2))
(exp.f64 (*.f64 (*.f64 3 (log.f64 (*.f64 x (sqrt.f64 2)))) 1/3))
(*.f64 x (sqrt.f64 2))
(exp.f64 (*.f64 (log.f64 (*.f64 (pow.f64 x 2) 2)) 1/2))
(*.f64 x (sqrt.f64 2))
(exp.f64 (*.f64 (log.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2)))) 2))
(*.f64 x (sqrt.f64 2))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 x (sqrt.f64 2))

eval7.0ms (0.2%)

Compiler

Compiled 265 to 227 computations (14.3% saved)

prune6.0ms (0.2%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New30030
Fresh011
Picked033
Done011
Total30535
Accuracy
100.0%
Counts
35 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
Compiler

Compiled 48 to 34 computations (29.2% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune48.0ms (1.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done044
Total055
Accuracy
100.0%
Counts
5 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
Compiler

Compiled 48 to 34 computations (29.2% saved)

localize0.0ms (0%)

eval0.0ms (0%)

Compiler

Compiled 1 to 1 computations (0% saved)

prune3.0ms (0.1%)

Pruning

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New000
Fresh011
Picked000
Done044
Total055
Accuracy
100.0%
Counts
5 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
6.8%
(*.f64 (*.f64 x 2) x)
99.5%
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
2.0%
(*.f64 x -2)
1.6%
-2
Compiler

Compiled 52 to 33 computations (36.5% saved)

regimes26.0ms (0.6%)

Counts
6 → 1
Calls
Call 1
Inputs
-2
(*.f64 x -2)
(*.f64 (*.f64 x 2) x)
(hypot.f64 x x)
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 x 2)))
Outputs
(hypot.f64 x x)
Calls

4 calls:

12.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
5.0ms
x
4.0ms
(*.f64 x x)
4.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
Results
AccuracySegmentsBranch
100.0%1x
100.0%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
100.0%1(+.f64 (*.f64 x x) (*.f64 x x))
100.0%1(*.f64 x x)
Compiler

Compiled 51 to 26 computations (49% saved)

regimes4.0ms (0.1%)

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

1 calls:

4.0ms
x
Results
AccuracySegmentsBranch
6.8%1x
Compiler

Compiled 12 to 8 computations (33.3% saved)

regimes4.0ms (0.1%)

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

1 calls:

3.0ms
x
Results
AccuracySegmentsBranch
2.0%1x
Compiler

Compiled 7 to 5 computations (28.6% saved)

regimes46.0ms (1.1%)

Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
-2
Outputs
-2
Calls

1 calls:

46.0ms
x
Results
AccuracySegmentsBranch
1.6%1x
Compiler

Compiled 4 to 3 computations (25% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Rules
*-commutative
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01143
11443
Stop Event
fuel
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
(*.f64 (*.f64 x 2) x)
(*.f64 x -2)
-2
Outputs
(hypot.f64 x x)
(*.f64 (*.f64 x 2) x)
(*.f64 x (*.f64 x 2))
(*.f64 x -2)
-2
Compiler

Compiled 16 to 11 computations (31.3% saved)

soundness2.2s (51.5%)

Rules
800×log1p-expm1-u
800×log1p-expm1-u
485×expm1-log1p-u
485×expm1-log1p-u
217×expm1-udef
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01456
13656
28256
319756
430256
536256
636456
0613
14613
24817
354807
0223916
1682916
0223916
1682916
0613
14613
24817
354807
Stop Event
node limit
unsound
unsound
node limit
saturated
Compiler

Compiled 616 to 157 computations (74.5% saved)

end0.0ms (0%)

preprocess47.0ms (1.1%)

Remove

(abs x)

Compiler

Compiled 84 to 44 computations (47.6% saved)

Profiling

Loading profile data...