Details

Time bar (total: 3.0s)

analyze5.0ms (0.2%)

Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
0%0%100%0%0%0%0%1
0%0%100%0%0%0%0%2
50%50%50%0%0%0%0%3
75%75%25%0%0%0%0%4
87.5%87.5%12.5%0%0%0%0%5
93.8%93.7%6.2%0%0%0%0%6
96.9%96.8%3.1%0%0%0%0%7
98.4%98.4%1.6%0%0%0%0%8
99.2%99.2%0.8%0%0%0%0%9
99.6%99.6%0.4%0%0%0%0%10
99.8%99.8%0.2%0%0%0%0%11
99.9%99.9%0.1%0%0%0%0%12
Compiler

Compiled 8 to 7 computations (12.5% saved)

sample1.3s (44.9%)

Results
1.3s8256×body256valid
0.0msbody256infinite
Bogosity

preprocess237.0ms (8%)

Algorithm
egg-herbie
Rules
2858×sqr-pow
1496×pow-sqr
1054×cube-prod
914×fabs-mul
794×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11417
23117
35117
410317
526017
694717
7154917
8166417
9183417
10203817
11231417
12266617
13309417
14359017
15418217
16489917
17515317
18540717
19554517
20559117
21561517
22654417
23767217
24799017
011
Stop Event
saturated
node limit
Calls
Call 1
Inputs
0
Outputs
0
Call 2
Inputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Outputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 8 to 7 computations (12.5% saved)

simplify227.0ms (7.7%)

Algorithm
egg-herbie
Rules
2858×sqr-pow
1496×pow-sqr
1054×cube-prod
914×fabs-mul
794×associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11417
23117
35117
410317
526017
694717
7154917
8166417
9183417
10203817
11231417
12266617
13309417
14359017
15418217
16489917
17515317
18540717
19554517
20559117
21561517
22654417
23767217
24799017
Stop Event
node limit
Counts
1 → 2
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
Outputs
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
(sqrt.f64 (*.f64 2 (*.f64 x x)))

eval0.0ms (0%)

Compiler

Compiled 13 to 10 computations (23.1% saved)

prune1.0ms (0%)

Pruning

1 alts after pruning (1 fresh and 0 done)

PrunedKeptTotal
New112
Fresh101
Picked000
Done000
Total213
Error
26.6b
Counts
3 → 1
Alt Table
Click to see full alt table
StatusErrorProgram
26.6b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 7 to 5 computations (28.6% saved)

localize6.0ms (0.2%)

Local error

Found 2 expressions with local error:

NewErrorProgram
0.0b
(*.f64 2 (*.f64 x x))
25.7b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 17 to 8 computations (52.9% saved)

series2.0ms (0.1%)

Counts
2 → 24
Calls

6 calls:

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

rewrite169.0ms (5.7%)

Algorithm
batch-egg-rewrite
Rules
1372×add-sqr-sqrt
1354×*-un-lft-identity
1256×add-cube-cbrt
1246×add-cbrt-cube
1234×add-exp-log
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
0830
115924
2182924
Stop Event
node limit
Counts
2 → 36
Calls
Call 1
Inputs
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(*.f64 2 (*.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 x (sqrt.f64 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 x (sqrt.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 2) x)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (*.f64 x x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 2)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (*.f64 x (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (*.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (sqrt.f64 2)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 (pow.f64 x 4) 4))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))))))

simplify101.0ms (3.4%)

Algorithm
egg-herbie
Rules
1326×distribute-lft-in
1310×distribute-rgt-in
1040×associate-+r+
954×associate-+l+
876×fma-def
Iterations

Useful iterations: 3 (0.0ms)

IterNodesCost
083816
1201816
2880816
32375688
Stop Event
node limit
Counts
60 → 46
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (pow.f64 x 2))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 x (sqrt.f64 2))
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(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))))
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
Outputs
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(neg.f64 (hypot.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(*.f64 2 (pow.f64 x 2))
(*.f64 2 (*.f64 x x))
(-.f64 (+.f64 1 (*.f64 x (sqrt.f64 2))) 1)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 x (sqrt.f64 2))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 1 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) (sqrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) (cbrt.f64 (*.f64 2 (*.f64 x x))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) (cbrt.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 2 x)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (pow.f64 1 1/2) (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(*.f64 (pow.f64 (cbrt.f64 (*.f64 (pow.f64 x 4) 4)) 1/2) (pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 1/2))
(*.f64 (sqrt.f64 (cbrt.f64 (*.f64 4 (pow.f64 x 4)))) (sqrt.f64 (cbrt.f64 (*.f64 2 (*.f64 x x)))))
(*.f64 (pow.f64 (*.f64 2 x) 1/2) (sqrt.f64 x))
(*.f64 (sqrt.f64 x) (sqrt.f64 (*.f64 2 x)))
(*.f64 (sqrt.f64 (*.f64 2 x)) (sqrt.f64 x))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/2)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (*.f64 x (sqrt.f64 2)) 1)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (sqrt.f64 (*.f64 x (sqrt.f64 2))) 2)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (cbrt.f64 (*.f64 x (sqrt.f64 2))) 3)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(pow.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3) 1/3)
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(fabs.f64 (*.f64 x (sqrt.f64 2)))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(log.f64 (pow.f64 (exp.f64 (sqrt.f64 2)) x))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (*.f64 x (sqrt.f64 2)) 3))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(exp.f64 (log.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (*.f64 x (sqrt.f64 2))))
(*.f64 (sqrt.f64 2) x)
(hypot.f64 x x)
(-.f64 (+.f64 1 (*.f64 2 (*.f64 x x))) 1)
(*.f64 2 (*.f64 x x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1)
(*.f64 2 (*.f64 x x))
(pow.f64 (*.f64 x (sqrt.f64 2)) 2)
(*.f64 2 (*.f64 x x))
(pow.f64 (cbrt.f64 (*.f64 2 (*.f64 x x))) 3)
(*.f64 2 (*.f64 x x))
(pow.f64 (*.f64 (pow.f64 x 4) 4) 1/2)
(*.f64 2 (*.f64 x x))
(pow.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3) 1/3)
(*.f64 2 (*.f64 x x))
(sqrt.f64 (*.f64 (pow.f64 x 4) 4))
(*.f64 2 (*.f64 x x))
(log.f64 (pow.f64 (pow.f64 (exp.f64 x) x) 2))
(*.f64 2 (*.f64 x x))
(cbrt.f64 (pow.f64 (*.f64 2 (*.f64 x x)) 3))
(*.f64 2 (*.f64 x x))
(expm1.f64 (log1p.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(exp.f64 (log.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))
(log1p.f64 (expm1.f64 (*.f64 2 (*.f64 x x))))
(*.f64 2 (*.f64 x x))

eval9.0ms (0.3%)

Compiler

Compiled 354 to 261 computations (26.3% saved)

prune6.0ms (0.2%)

Pruning

3 alts after pruning (2 fresh and 1 done)

PrunedKeptTotal
New44246
Fresh000
Picked011
Done000
Total44347
Error
0.0b
Counts
47 → 3
Alt Table
Click to see full alt table
StatusErrorProgram
0.0b
(hypot.f64 x x)
31.3b
(*.f64 (sqrt.f64 2) x)
26.6b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 16 to 11 computations (31.3% saved)

localize4.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.4b
(*.f64 (sqrt.f64 2) x)
Compiler

Compiled 9 to 7 computations (22.2% saved)

series0.0ms (0%)

Counts
1 → 0
Calls

3 calls:

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

rewrite56.0ms (1.9%)

Algorithm
batch-egg-rewrite
Rules
1198×add-sqr-sqrt
1182×*-un-lft-identity
1118×pow1
1096×add-cube-cbrt
1082×add-cbrt-cube
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0711
113711
2151111
Stop Event
node limit
Counts
1 → 11
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 (sqrt.f64 2) x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 2 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))))))

simplify59.0ms (2%)

Algorithm
egg-herbie
Rules
1066×*-commutative
886×log-prod
738×associate--l+
678×distribute-lft-out
632×distribute-lft-in
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
032253
179187
2273121
31642121
44568121
56886121
Stop Event
node limit
Counts
11 → 14
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
Outputs
(-.f64 (+.f64 1 (*.f64 (sqrt.f64 2) x)) 1)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (*.f64 (sqrt.f64 2) x) 1)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (sqrt.f64 (*.f64 (sqrt.f64 2) x)) 2)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (cbrt.f64 (*.f64 (sqrt.f64 2) x)) 3)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(pow.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3) 1/3)
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(log.f64 (pow.f64 (exp.f64 x) (sqrt.f64 2)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(cbrt.f64 (pow.f64 (*.f64 (sqrt.f64 2) x) 3))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(expm1.f64 (log1p.f64 (*.f64 (sqrt.f64 2) x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(exp.f64 (log.f64 (*.f64 (sqrt.f64 2) x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)
(log1p.f64 (expm1.f64 (*.f64 (sqrt.f64 2) x)))
(+.f64 1 (-.f64 (*.f64 (sqrt.f64 2) x) 1))
(+.f64 (*.f64 (sqrt.f64 2) x) 0)
(*.f64 (sqrt.f64 2) x)

localize2.0ms (0.1%)

Local error

Found 1 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 x x)
Compiler

Compiled 5 to 2 computations (60% saved)

series2.0ms (0.1%)

Counts
1 → 12
Calls

3 calls:

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

rewrite61.0ms (2.1%)

Algorithm
batch-egg-rewrite
Rules
918×associate-*r*
744×add-sqr-sqrt
738×*-un-lft-identity
696×pow1
682×add-cube-cbrt
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
1807
29167
Stop Event
node limit
Counts
1 → 36
Calls
Call 1
Inputs
(hypot.f64 x x)
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 (hypot.f64 x x) 1) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 x x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (sqrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (sqrt.f64 (hypot.f64 x x)))) (sqrt.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x))))) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (cbrt.f64 (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 x x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 x (+.f64 x x)) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 x (+.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 x x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 x x)))))))

simplify61.0ms (2%)

Algorithm
egg-herbie
Rules
1144×distribute-lft-in
1118×associate-*r*
1046×distribute-rgt-in
928×associate-*l*
836×*-commutative
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0881038
1194864
2596854
33338854
47923854
Stop Event
node limit
Counts
48 → 50
Calls
Call 1
Inputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(-.f64 (+.f64 (hypot.f64 x x) 1) 1)
(*.f64 (hypot.f64 x x) 1)
(*.f64 1 (hypot.f64 x x))
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (hypot.f64 x x))))
(*.f64 (sqrt.f64 (sqrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))
(*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (hypot.f64 x x))))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (sqrt.f64 (hypot.f64 x x)))) (sqrt.f64 (sqrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x))))) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (cbrt.f64 (cbrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x))))
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(pow.f64 (hypot.f64 x x) 1)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(pow.f64 (*.f64 x (+.f64 x x)) 1/2)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(exp.f64 (log.f64 (hypot.f64 x x)))
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
Outputs
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 (sqrt.f64 2) x)
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(*.f64 -1 (*.f64 (sqrt.f64 2) x))
(neg.f64 (*.f64 (sqrt.f64 2) x))
(*.f64 (sqrt.f64 2) (neg.f64 x))
(-.f64 (+.f64 (hypot.f64 x x) 1) 1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (hypot.f64 x x) 1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 1 (hypot.f64 x x))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (sqrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (cbrt.f64 (cbrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (cbrt.f64 (hypot.f64 x x)))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (cbrt.f64 (hypot.f64 x x)))))
(*.f64 (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (hypot.f64 x x))))
(*.f64 (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 4))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 4))))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (sqrt.f64 (hypot.f64 x x)))) (sqrt.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(*.f64 (sqrt.f64 (hypot.f64 x x)) (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 5/2))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x))))) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)))
(*.f64 (cbrt.f64 (*.f64 (hypot.f64 x x) (cbrt.f64 (hypot.f64 x x)))) (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 4))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 4))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (sqrt.f64 (cbrt.f64 (hypot.f64 x x)))) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (cbrt.f64 (cbrt.f64 (hypot.f64 x x))))
(*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (cbrt.f64 (hypot.f64 x x)))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (*.f64 (cbrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (cbrt.f64 (hypot.f64 x x)))))
(*.f64 (*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(*.f64 (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x))) (*.f64 (sqrt.f64 (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x))))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(*.f64 (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))) (*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x)))))
(pow.f64 (hypot.f64 x x) 1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (cbrt.f64 (hypot.f64 x x)) 3)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (pow.f64 (hypot.f64 x x) 3) 1/3)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(pow.f64 (*.f64 x (+.f64 x x)) 1/2)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(sqrt.f64 (*.f64 x (+.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(log.f64 (exp.f64 (hypot.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(exp.f64 (log.f64 (hypot.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)

eval10.0ms (0.3%)

Compiler

Compiled 753 to 283 computations (62.4% saved)

prune10.0ms (0.3%)

Pruning

4 alts after pruning (1 fresh and 3 done)

PrunedKeptTotal
New63164
Fresh000
Picked011
Done022
Total63467
Error
0b
Counts
67 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
0.0b
(hypot.f64 x x)
31.3b
(*.f64 (sqrt.f64 2) x)
26.6b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 23 to 16 computations (30.4% saved)

localize6.0ms (0.2%)

Local error

Found 3 expressions with local error:

NewErrorProgram
0.0b
(hypot.f64 x x)
0.2b
(sqrt.f64 (hypot.f64 x x))
0.5b
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
Compiler

Compiled 16 to 6 computations (62.5% saved)

series3.0ms (0.1%)

Counts
2 → 0
Calls

6 calls:

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

rewrite87.0ms (2.9%)

Algorithm
batch-egg-rewrite
Rules
1198×add-sqr-sqrt
1182×*-un-lft-identity
1116×pow1
1096×add-cube-cbrt
1086×add-cbrt-cube
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0818
116218
2155618
Stop Event
node limit
Counts
2 → 38
Calls
Call 1
Inputs
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
(sqrt.f64 (hypot.f64 x x))
Outputs
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (hypot.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (hypot.f64 x x) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (hypot.f64 x x))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 x x) 1/4) (*.f64 (pow.f64 (hypot.f64 x x) 1/4) (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 x x)) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (pow.f64 (hypot.f64 x x) 1/4)) (pow.f64 (hypot.f64 x x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x sqrt.f64 (*.f64 2 (*.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 x x) 3))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x hypot.f64 x x)))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (hypot.f64 x x)))))))
((#(struct:change #<rule egg-rr> (2) ((x -.f64 (+.f64 1 (sqrt.f64 (hypot.f64 x x))) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (hypot.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 1 (sqrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (hypot.f64 x x) 1/4) (pow.f64 (hypot.f64 x x) 1/4))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 1 1/2) (sqrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x *.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) 1/2) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 1/2))))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (hypot.f64 x x) 1/2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (sqrt.f64 (hypot.f64 x x)) 1)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 x x) 1/4) 2)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) 3)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (*.f64 2 (*.f64 x x)) 1/4)))) (#(struct:change #<rule egg-rr> (2) ((x pow.f64 (pow.f64 (hypot.f64 x x) 3/2) 1/3)))) (#(struct:change #<rule egg-rr> (2) ((x fabs.f64 (sqrt.f64 (hypot.f64 x x)))))) (#(struct:change #<rule egg-rr> (2) ((x log.f64 (exp.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x cbrt.f64 (pow.f64 (hypot.f64 x x) 3/2))))) (#(struct:change #<rule egg-rr> (2) ((x expm1.f64 (log1p.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x exp.f64 (log.f64 (sqrt.f64 (hypot.f64 x x))))))) (#(struct:change #<rule egg-rr> (2) ((x log1p.f64 (expm1.f64 (sqrt.f64 (hypot.f64 x x))))))))

simplify79.0ms (2.6%)

Algorithm
egg-herbie
Rules
778×associate-/l*
728×*-commutative
726×distribute-lft-out
702×unswap-sqr
676×associate-+r+
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
077800
1148584
2578368
32146368
46123368
Stop Event
node limit
Counts
38 → 45
Calls
Call 1
Inputs
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(*.f64 (hypot.f64 x x) 1)
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(*.f64 1 (hypot.f64 x x))
(*.f64 (pow.f64 (hypot.f64 x x) 1/4) (*.f64 (pow.f64 (hypot.f64 x x) 1/4) (sqrt.f64 (hypot.f64 x x))))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (pow.f64 (hypot.f64 x x) 1/4)) (pow.f64 (hypot.f64 x x) 1/4))
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(hypot.f64 x x)
(exp.f64 (log.f64 (hypot.f64 x x)))
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(-.f64 (+.f64 1 (sqrt.f64 (hypot.f64 x x))) 1)
(*.f64 (sqrt.f64 (hypot.f64 x x)) 1)
(*.f64 1 (sqrt.f64 (hypot.f64 x x)))
(*.f64 (pow.f64 (hypot.f64 x x) 1/4) (pow.f64 (hypot.f64 x x) 1/4))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x)))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (hypot.f64 x x)))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) 1/2) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 1/2))
(pow.f64 (hypot.f64 x x) 1/2)
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 1)
(pow.f64 (pow.f64 (hypot.f64 x x) 1/4) 2)
(pow.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) 3)
(pow.f64 (*.f64 2 (*.f64 x x)) 1/4)
(pow.f64 (pow.f64 (hypot.f64 x x) 3/2) 1/3)
(fabs.f64 (sqrt.f64 (hypot.f64 x x)))
(log.f64 (exp.f64 (sqrt.f64 (hypot.f64 x x))))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3/2))
(expm1.f64 (log1p.f64 (sqrt.f64 (hypot.f64 x x))))
(exp.f64 (log.f64 (sqrt.f64 (hypot.f64 x x))))
(log1p.f64 (expm1.f64 (sqrt.f64 (hypot.f64 x x))))
Outputs
(-.f64 (+.f64 1 (hypot.f64 x x)) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (hypot.f64 x x) 1)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (sqrt.f64 (hypot.f64 x x)) (sqrt.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 1 (hypot.f64 x x))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (pow.f64 (hypot.f64 x x) 1/4) (*.f64 (pow.f64 (hypot.f64 x x) 1/4) (sqrt.f64 (hypot.f64 x x))))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (hypot.f64 x x)) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (cbrt.f64 (hypot.f64 x x)) (*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (sqrt.f64 (hypot.f64 x x))))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) (cbrt.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (pow.f64 (hypot.f64 x x) 1/4)) (pow.f64 (hypot.f64 x x) 1/4))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(*.f64 (*.f64 (sqrt.f64 (hypot.f64 x x)) (cbrt.f64 (hypot.f64 x x))) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(sqrt.f64 (*.f64 2 (*.f64 x x)))
(sqrt.f64 (*.f64 x (*.f64 x 2)))
(log.f64 (exp.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(expm1.f64 (log1p.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(hypot.f64 x x)
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(exp.f64 (log.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(log1p.f64 (expm1.f64 (hypot.f64 x x)))
(+.f64 (+.f64 1 (hypot.f64 x x)) -1)
(+.f64 (hypot.f64 x x) 0)
(hypot.f64 x x)
(-.f64 (+.f64 1 (sqrt.f64 (hypot.f64 x x))) 1)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (sqrt.f64 (hypot.f64 x x)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 1 (sqrt.f64 (hypot.f64 x x)))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (pow.f64 (hypot.f64 x x) 1/4) (pow.f64 (hypot.f64 x x) 1/4))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (cbrt.f64 (hypot.f64 x x)) (cbrt.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) (cbrt.f64 (hypot.f64 x x)))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (sqrt.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2)) (sqrt.f64 (cbrt.f64 (hypot.f64 x x))))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (pow.f64 1 1/2) (sqrt.f64 (hypot.f64 x x)))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(*.f64 (pow.f64 (pow.f64 (cbrt.f64 (hypot.f64 x x)) 2) 1/2) (pow.f64 (cbrt.f64 (hypot.f64 x x)) 1/2))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(pow.f64 (hypot.f64 x x) 1/2)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 1)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(pow.f64 (pow.f64 (hypot.f64 x x) 1/4) 2)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(pow.f64 (cbrt.f64 (sqrt.f64 (hypot.f64 x x))) 3)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(pow.f64 (*.f64 2 (*.f64 x x)) 1/4)
(pow.f64 (*.f64 x (*.f64 x 2)) 1/4)
(pow.f64 (pow.f64 (hypot.f64 x x) 3/2) 1/3)
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(fabs.f64 (sqrt.f64 (hypot.f64 x x)))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(log.f64 (exp.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(cbrt.f64 (pow.f64 (hypot.f64 x x) 3/2))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(expm1.f64 (log1p.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(exp.f64 (log.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))
(log1p.f64 (expm1.f64 (sqrt.f64 (hypot.f64 x x))))
(+.f64 1 (-.f64 (sqrt.f64 (hypot.f64 x x)) 1))
(+.f64 (sqrt.f64 (hypot.f64 x x)) 0)
(sqrt.f64 (hypot.f64 x x))

eval19.0ms (0.6%)

Compiler

Compiled 1211 to 521 computations (57% saved)

prune11.0ms (0.4%)

Pruning

4 alts after pruning (0 fresh and 4 done)

PrunedKeptTotal
New95095
Fresh000
Picked011
Done033
Total95499
Error
0b
Counts
99 → 4
Alt Table
Click to see full alt table
StatusErrorProgram
0.5b
(pow.f64 (sqrt.f64 (hypot.f64 x x)) 2)
0.0b
(hypot.f64 x x)
31.3b
(*.f64 (sqrt.f64 2) x)
26.6b
(sqrt.f64 (*.f64 2 (*.f64 x x)))
Compiler

Compiled 23 to 16 computations (30.4% saved)

regimes17.0ms (0.6%)

Accuracy

Total -44.4b remaining (-283925.8%)

Threshold costs -44.4b (-283925.8%)

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

4 calls:

5.0ms
(pow.f64 x 2)
4.0ms
x
3.0ms
(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
3.0ms
(*.f64 2 (pow.f64 x 2))
Results
ErrorSegmentsBranch
0.0b1x
0.0b1(sqrt.f64 (*.f64 2 (pow.f64 x 2)))
0.0b1(*.f64 2 (pow.f64 x 2))
0.0b1(pow.f64 x 2)
Compiler

Compiled 45 to 32 computations (28.9% saved)

simplify3.0ms (0.1%)

Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
047
Stop Event
done
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
Outputs
(hypot.f64 x x)
Compiler

Compiled 4 to 2 computations (50% saved)

soundness375.0ms (12.6%)

Algorithm
egg-herbie
Rules
2858×sqr-pow
1496×pow-sqr
1326×distribute-lft-in
1310×distribute-rgt-in
1054×cube-prod
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0817
11417
23117
35117
410317
526017
694717
7154917
8166417
9183417
10203817
11231417
12266617
13309417
14359017
15418217
16489917
17515317
18540717
19554517
20559117
21561517
22654417
23767217
24799017
083816
1201816
2880816
32375688
Stop Event
node limit
node limit
Compiler

Compiled 105 to 73 computations (30.5% saved)

end10.0ms (0.3%)

Compiler

Compiled 4 to 2 computations (50% saved)

Profiling

Loading profile data...