sqrt A (should all be same)

Time bar (total: 2.6s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated

analyze0.0ms (0%)

Memory
0.5MiB live, 0.5MiB allocated
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%100%0%0%0%0%0
100%100%0%0%0%0%0%1
Compiler

Compiled 10 to 4 computations (60% saved)

sample1.1s (42%)

Memory
0.0MiB live, 731.4MiB allocated
Samples
885.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 218.0ms
ival-hypot: 210.0ms (96.3% of total)
ival-true: 5.0ms (2.3% of total)
ival-assert: 4.0ms (1.8% of total)
Bogosity

explain103.0ms (4%)

Memory
-4.7MiB live, 73.2MiB allocated
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
1250-6(1.1409386054263518e-160)(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
00-0-(+.f64 (*.f64 x x) (*.f64 x x))
00-0-(*.f64 x x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))oflow-rescue600
(+.f64 (*.f64 x x) (*.f64 x x))overflow60
(*.f64 x x)overflow120
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))uflow-rescue590
(+.f64 (*.f64 x x) (*.f64 x x))underflow59
(*.f64 x x)underflow118
Confusion
Predicted +Predicted -
+1196
-0131
Precision
1.0
Recall
0.952
Confusion?
Predicted +Predicted MaybePredicted -
+11906
-00131
Precision?
1.0
Recall?
0.952
Freqs
test
numberfreq
0137
1119
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
61.0ms512×0valid
Compiler

Compiled 51 to 16 computations (68.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 51.0ms
ival-add: 39.0ms (76.4% of total)
ival-hypot: 8.0ms (15.7% of total)
ival-mult: 3.0ms (5.9% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess16.0ms (0.6%)

Memory
21.3MiB live, 21.3MiB allocated
Algorithm
egg-herbie
Rules
42×associate-*r*
32×distribute-lft-neg-in
32×sub-neg
24×neg-sub0
22×distribute-lft-in
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0613
12113
26613
316613
424713
525613
625813
048
076
1116
2146
3176
0173
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (*.f64 x (+.f64 x x)))
Symmetry

(abs x)

Compiler

Compiled 9 to 4 computations (55.6% saved)

eval0.0ms (0%)

Memory
0.4MiB live, 0.4MiB allocated
Compiler

Compiled 1 to 1 computations (0% saved)

prune20.0ms (0.8%)

Memory
-36.3MiB live, 1.2MiB allocated
Alt Table
Click to see full alt table
StatusAccuracyProgram
55.7%
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Compiler

Compiled 9 to 4 computations (55.6% saved)

simplify4.0ms (0.2%)

Memory
6.0MiB live, 6.0MiB allocated
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
cost-diff320
(+.f64 (*.f64 x x) (*.f64 x x))
Rules
14×lower-*.f32
12×lower-*.f64
*-commutative
count-2
associate-*r*
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0419
0715
11115
21415
31715
01712
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x x)
x
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x (+.f64 x x))
(*.f64 x x)
x

localize17.0ms (0.7%)

Memory
25.4MiB live, 25.4MiB allocated
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0
(*.f64 x x)
accuracy0.01171875
(+.f64 (*.f64 x x) (*.f64 x x))
accuracy28.35311497398119
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Samples
11.0ms256×0valid
Compiler

Compiled 21 to 6 computations (71.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 7.0ms
ival-hypot: 4.0ms (59.3% of total)
ival-mult: 2.0ms (29.6% of total)
ival-add: 1.0ms (14.8% of total)
ival-true: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
3.5MiB live, 3.5MiB allocated
Counts
3 → 36
Calls
Call 1
Inputs
#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())
#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())
#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())
Outputs
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (+.f64 (*.f64 x x) (*.f64 x x)) (patch (+.f64 (*.f64 x x) (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) (patch (sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor 0 x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 2) (taylor -inf x) (#s(alt (*.f64 x x) (patch (*.f64 x x) #<representation binary64>) () ())) ())
Calls

9 calls:

TimeVariablePointExpression
1.0ms
x
@0
(sqrt (+ (* x x) (* x x)))
1.0ms
x
@inf
(sqrt (+ (* x x) (* x x)))
0.0ms
x
@0
(+ (* x x) (* x x))
0.0ms
x
@inf
(+ (* x x) (* x x))
0.0ms
x
@-inf
(+ (* x x) (* x x))

simplify13.0ms (0.5%)

Memory
-29.4MiB live, 6.1MiB allocated
Algorithm
egg-herbie
Rules
38×lower-*.f64
38×lower-fma.f64
38×lower-fma.f32
38×lower-*.f32
36×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
08148
115148
232148
337148
441148
553148
665148
776148
896148
9101148
0101148
Stop Event
iter limit
saturated
Counts
36 → 36
Calls
Call 1
Inputs
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
(pow x 2)
Outputs
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* 2 (pow x 2))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)
(pow x 2)
(*.f64 x x)

rewrite31.0ms (1.2%)

Memory
34.9MiB live, 34.9MiB allocated
Rules
66×lower-*.f32
64×lower-*.f64
42×lower-fma.f64
42×lower-fma.f32
34×lower-/.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0418
0714
12310
01609
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 33
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) (*.f64 x x))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(*.f64 x x)
Outputs
(+.f64 (*.f64 x x) (*.f64 x x))
(-.f64 (/.f64 (*.f64 (*.f64 x x) (*.f64 x x)) #s(literal 0 binary64)) (/.f64 (*.f64 (*.f64 x x) (*.f64 x x)) #s(literal 0 binary64)))
(fma.f64 x x (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 x x))
(/.f64 (*.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)) (*.f64 x (+.f64 x x))) (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (neg.f64 (*.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)) (*.f64 x (+.f64 x x)))) (neg.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (*.f64 x (+.f64 x x)))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)) (*.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)) (*.f64 x (+.f64 x x)))))
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (*.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)) (*.f64 x (+.f64 x x))) (/.f64 #s(literal 1 binary64) (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (+.f64 x x) x)
(exp.f64 (*.f64 (log.f64 (*.f64 x (+.f64 x x))) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(hypot.f64 x (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) x)
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64)) (*.f64 x (+.f64 x x)))) (sqrt.f64 (fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/2 binary64))
(*.f64 (pow.f64 x #s(literal 1/2 binary64)) (pow.f64 (+.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 (*.f64 x (+.f64 x x)) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(pow.f64 x #s(literal 2 binary64))
(*.f64 x x)
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))

eval33.0ms (1.3%)

Memory
-51.8MiB live, 10.2MiB allocated
Compiler

Compiled 750 to 94 computations (87.5% saved)

prune7.0ms (0.3%)

Memory
8.9MiB live, 8.9MiB allocated
Pruning

4 alts after pruning (4 fresh and 0 done)

PrunedKeptTotal
New81485
Fresh000
Picked101
Done000
Total82486
Accuracy
100.0%
Counts
86 → 4
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
55.7%
(sqrt.f64 (*.f64 (+.f64 x x) x))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Compiler

Compiled 25 to 15 computations (40% saved)

simplify5.0ms (0.2%)

Memory
3.2MiB live, 3.2MiB allocated
Algorithm
egg-herbie
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
cost-diff5312
(hypot.f64 x x)
cost-diff0
(+.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 x x))
cost-diff0
(sqrt.f64 x)
cost-diff0
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
cost-diff0
(+.f64 x x)
cost-diff0
(*.f64 (+.f64 x x) x)
cost-diff0
(sqrt.f64 (*.f64 (+.f64 x x) x))
cost-diff0
(sqrt.f64 #s(literal 2 binary64))
cost-diff0
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
cost-diff0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Rules
22×lower-*.f32
16×lower-*.f64
10×*-commutative
lift-sqrt.f64
lower-sqrt.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01552
02349
12849
23149
03149
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
x
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(sqrt.f64 (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
(+.f64 x x)
x
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(hypot.f64 x x)
x
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
x
(sqrt.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
(sqrt.f64 (*.f64 (+.f64 x x) x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (+.f64 x x) x)
(*.f64 x (+.f64 x x))
(+.f64 x x)
x
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
x
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(hypot.f64 x x)
(sqrt.f64 (*.f64 x (+.f64 x x)))
x

localize39.0ms (1.5%)

Memory
-11.6MiB live, 65.4MiB allocated
Localize:

Found 11 expressions of interest:

NewMetricScoreProgram
accuracy0.01953125
(hypot.f64 x x)
accuracy0
(+.f64 x x)
accuracy0
(sqrt.f64 (+.f64 x x))
accuracy0
(sqrt.f64 x)
accuracy0.35384750976844204
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
accuracy0
(+.f64 x x)
accuracy0
(*.f64 (+.f64 x x) x)
accuracy28.35311497398119
(sqrt.f64 (*.f64 (+.f64 x x) x))
accuracy0
(sqrt.f64 #s(literal 2 binary64))
accuracy0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
accuracy0.44921875
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
Samples
25.0ms256×0valid
Compiler

Compiled 59 to 13 computations (78% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-sqrt: 6.0ms (36.4% of total)
ival-mult: 5.0ms (30.3% of total)
ival-hypot: 4.0ms (24.2% of total)
ival-add: 1.0ms (6.1% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series6.0ms (0.2%)

Memory
14.5MiB live, 14.5MiB allocated
Counts
10 → 108
Calls
Call 1
Inputs
#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())
#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())
#s(alt (sqrt.f64 #s(literal 2 binary64)) (patch (sqrt.f64 #s(literal 2 binary64)) #<representation binary64>) () ())
#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())
#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())
#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())
#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())
#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())
#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())
#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())
Outputs
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (sqrt.f64 #s(literal 2 binary64))) (patch (*.f64 x (sqrt.f64 #s(literal 2 binary64))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (+.f64 x x) x)) (patch (sqrt.f64 (*.f64 (+.f64 x x) x)) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor 0 x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 (pow x 2)) (taylor -inf x) (#s(alt (*.f64 (+.f64 x x) x) (patch (*.f64 (+.f64 x x) x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) (patch (*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor 0 x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (sqrt x) (taylor inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (pow (sqrt -1) 2))) (taylor -inf x) (#s(alt (sqrt.f64 x) (patch (sqrt.f64 x) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (hypot.f64 x x) (patch (hypot.f64 x x) #<representation binary64>) () ())) ())
Calls

27 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
(* (sqrt x) (sqrt (+ x x)))
0.0ms
x
@inf
(* (+ x x) x)
0.0ms
x
@-inf
(sqrt (+ x x))
0.0ms
x
@-inf
(sqrt x)
0.0ms
x
@-inf
(* x (sqrt 2))

simplify142.0ms (5.5%)

Memory
-10.3MiB live, 69.1MiB allocated
Algorithm
egg-herbie
Rules
1 478×associate-*r*
1 232×lower-*.f64
1 232×lower-fma.f64
1 232×lower-fma.f32
1 232×lower-*.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022464
150464
2136464
3265464
4490464
5809464
61411464
71537464
81592464
91630464
101808464
112022464
122068464
132096464
142100464
152100464
162246464
172430464
183585464
193703464
203727464
213735464
223739464
233743464
243855464
253903464
263903464
274085464
04085464
Stop Event
iter limit
saturated
Counts
108 → 108
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 (pow x 2))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(sqrt x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 x (sqrt.f64 #s(literal -1 binary64)))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 x (sqrt.f64 #s(literal -1 binary64)))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 x (sqrt.f64 #s(literal -1 binary64)))))
(* -1 (* x (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 x (sqrt.f64 #s(literal -1 binary64)))))
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(sqrt x)
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* -1 (* (sqrt x) (pow (sqrt -1) 2)))
(sqrt.f64 x)
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 x) (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(*.f64 (sqrt.f64 #s(literal -2 binary64)) (neg.f64 (*.f64 (sqrt.f64 #s(literal -1 binary64)) (sqrt.f64 x))))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))

rewrite32.0ms (1.3%)

Memory
3.2MiB live, 42.2MiB allocated
Rules
98×lower-*.f32
92×lower-*.f64
68×lower-fma.f64
68×lower-fma.f32
58×lower-/.f64
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01544
02338
15134
025534
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
10 → 127
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
(+.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 x)
(sqrt.f64 (+.f64 x x))
(hypot.f64 x x)
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (log.f64 (+.f64 x x)) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(hypot.f64 x (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) x)
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(sqrt.f64 (+.f64 x x))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x x #s(literal 0 binary64))))
(pow.f64 (+.f64 x x) #s(literal 1/2 binary64))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)) (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)))
(+.f64 x x)
(+.f64 (*.f64 x x) (*.f64 x x))
(-.f64 (/.f64 (*.f64 x x) #s(literal 0 binary64)) (/.f64 (*.f64 x x) #s(literal 0 binary64)))
(-.f64 (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)))
(fma.f64 x x (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 x x))
(/.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x)) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)) (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)))
(/.f64 (neg.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (neg.f64 (fma.f64 x x #s(literal 0 binary64))))
(/.f64 (neg.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (neg.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (+.f64 x x))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x x #s(literal 0 binary64)) (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
(/.f64 (*.f64 x (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x)) x) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 #s(literal 0 binary64) x) #s(literal 0 binary64))
(*.f64 x #s(literal 2 binary64))
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (+.f64 x x) x)
(*.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x)) (/.f64 #s(literal 1 binary64) (fma.f64 x x #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)) (/.f64 #s(literal 1 binary64) (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(+.f64 x x)
(+.f64 (*.f64 x x) (*.f64 x x))
(-.f64 (/.f64 (*.f64 x x) #s(literal 0 binary64)) (/.f64 (*.f64 x x) #s(literal 0 binary64)))
(-.f64 (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)) (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64)))
(fma.f64 x x (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 x x))
(/.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x)) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)) (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)))
(/.f64 (neg.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (neg.f64 (fma.f64 x x #s(literal 0 binary64))))
(/.f64 (neg.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (neg.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(/.f64 #s(literal 1 binary64) (+.f64 x x))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x x #s(literal 0 binary64)) (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
(/.f64 (*.f64 x (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x)) x) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 #s(literal 0 binary64) x) #s(literal 0 binary64))
(*.f64 x #s(literal 2 binary64))
(*.f64 x (+.f64 x x))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 (+.f64 x x) x)
(*.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x)) (/.f64 #s(literal 1 binary64) (fma.f64 x x #s(literal 0 binary64))))
(*.f64 #s(literal 0 binary64) (/.f64 #s(literal 1 binary64) #s(literal 0 binary64)))
(*.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)) (/.f64 #s(literal 1 binary64) (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(exp.f64 (*.f64 (log.f64 (+.f64 x x)) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(hypot.f64 x (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) x)
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(sqrt.f64 (+.f64 x x))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x x #s(literal 0 binary64))))
(pow.f64 (+.f64 x x) #s(literal 1/2 binary64))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)) (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (log.f64 x) #s(literal 1/2 binary64)))
(sqrt.f64 x)
(pow.f64 x #s(literal 1/2 binary64))
(*.f64 (pow.f64 x #s(literal 1/4 binary64)) (pow.f64 x #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (log.f64 (+.f64 x x)) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(hypot.f64 x (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) x)
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(sqrt.f64 (+.f64 x x))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x x #s(literal 0 binary64))))
(pow.f64 (+.f64 x x) #s(literal 1/2 binary64))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)) (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)))
(exp.f64 (*.f64 (log.f64 (+.f64 x x)) #s(literal 1/2 binary64)))
(hypot.f64 x x)
(hypot.f64 x (pow.f64 x #s(literal 1 binary64)))
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) x)
(hypot.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(sqrt.f64 (+.f64 x x))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))))
(/.f64 (sqrt.f64 #s(literal 0 binary64)) (sqrt.f64 #s(literal 0 binary64)))
(/.f64 (sqrt.f64 (*.f64 (fma.f64 x x #s(literal 0 binary64)) (+.f64 x x))) (sqrt.f64 (fma.f64 x x #s(literal 0 binary64))))
(pow.f64 (+.f64 x x) #s(literal 1/2 binary64))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (pow.f64 (*.f64 x x) #s(literal 1/2 binary64)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(*.f64 (sqrt.f64 (+.f64 x x)) (sqrt.f64 x))
(*.f64 (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)) (pow.f64 (+.f64 x x) #s(literal 1/4 binary64)))

eval24.0ms (0.9%)

Memory
7.4MiB live, 45.4MiB allocated
Compiler

Compiled 2 492 to 231 computations (90.7% saved)

prune21.0ms (0.8%)

Memory
2.0MiB live, 41.0MiB allocated
Pruning

7 alts after pruning (3 fresh and 4 done)

PrunedKeptTotal
New2703273
Fresh000
Picked044
Done000
Total2707277
Accuracy
100.0%
Counts
277 → 7
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
7.1%
(sqrt.f64 (+.f64 x x))
21.2%
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
55.7%
(sqrt.f64 (*.f64 (+.f64 x x) x))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
99.1%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
Compiler

Compiled 66 to 37 computations (43.9% saved)

simplify188.0ms (7.3%)

Memory
13.3MiB live, 286.3MiB allocated
Algorithm
egg-herbie
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
cost-diff0
(+.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 x x))
cost-diff0
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
cost-diff64
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
cost-diff1216
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
cost-diff2432
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))
cost-diff0
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
cost-diff0
(*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
cost-diff0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
cost-diff12480
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
Rules
7 530×lower-fma.f32
7 528×lower-fma.f64
6 908×lower-*.f32
6 896×lower-*.f64
1 970×cube-prod
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
023174
038148
16679
219571
3131071
4352171
5505271
6656471
7792671
0805165
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
(*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
x
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(log.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(literal 1/2 binary64)
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
(*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
#s(literal 1 binary64)
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
x
(*.f64 x (*.f64 x x))
(*.f64 x x)
#s(literal 0 binary64)
(*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))
(+.f64 x x)
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
x
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
x
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(log.f64 #s(literal 2 binary64))
#s(literal 2 binary64)
#s(literal 1/2 binary64)
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)
(*.f64 x (+.f64 x x))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
(+.f64 x x)
#s(literal 1 binary64)
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))
(/.f64 #s(literal 1/2 binary64) x)
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
(*.f64 x (*.f64 x (*.f64 x x)))
x
(*.f64 x (*.f64 x x))
(*.f64 x x)
#s(literal 0 binary64)
(*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))
(*.f64 x (*.f64 x (*.f64 x (*.f64 x (+.f64 x x)))))
(+.f64 x x)
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
x

localize67.0ms (2.6%)

Memory
-3.2MiB live, 84.0MiB allocated
Localize:

Found 10 expressions of interest:

NewMetricScoreProgram
accuracy0
(+.f64 x x)
accuracy0
(sqrt.f64 (+.f64 x x))
accuracy0.1015625
(*.f64 x (*.f64 x x))
accuracy0.15234375
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
accuracy28.35311497398119
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
accuracy48.65235395301359
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))
accuracy0
(log.f64 #s(literal 2 binary64))
accuracy0
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
accuracy0.44921875
(*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
accuracy1.0
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
Samples
46.0ms256×0valid
Compiler

Compiled 178 to 23 computations (87.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 30.0ms
ival-mult: 9.0ms (30% of total)
ival-log: 5.0ms (16.7% of total)
ival-hypot: 4.0ms (13.3% of total)
ival-div: 3.0ms (10% of total)
ival-sqrt: 3.0ms (10% of total)
ival-add: 2.0ms (6.7% of total)
ival-exp: 2.0ms (6.7% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series6.0ms (0.2%)

Memory
9.3MiB live, 9.3MiB allocated
Counts
12 → 108
Calls
Call 1
Inputs
#s(alt (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) (patch (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))) #<representation binary64>) () ())
#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())
#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())
#s(alt (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)) (patch (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)) #<representation binary64>) () ())
#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())
#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())
#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())
#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())
#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())
#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())
#s(alt (log.f64 #s(literal 2 binary64)) (patch (log.f64 #s(literal 2 binary64)) #<representation binary64>) () ())
#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())
Outputs
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) (patch #s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor -inf x) (#s(alt (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) (patch (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* (sqrt x) (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1)))) (taylor -inf x) (#s(alt (sqrt.f64 (+.f64 x x)) (patch (sqrt.f64 (+.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (+.f64 x x) (patch (+.f64 x x) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
Calls

27 calls:

TimeVariablePointExpression
0.0ms
x
@0
(/ (+ (* x (* x (* x x))) 0) (* (+ (* x (* x (* x x))) 0) (+ x x)))
0.0ms
x
@-inf
(* x (* x x))
0.0ms
x
@-inf
(/ 1 (/ (+ (* x (* x (* x x))) 0) (* (+ (* x (* x (* x x))) 0) (+ x x))))
0.0ms
x
@0
(* x (* x x))
0.0ms
x
@0
(+ (* x (* x (* x x))) 0)

simplify19.0ms (0.7%)

Memory
-23.2MiB live, 12.8MiB allocated
Algorithm
egg-herbie
Rules
138×lower-*.f64
138×lower-fma.f64
138×lower-fma.f32
138×lower-*.f32
96×lower-+.f64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
021408
139408
283408
3140408
4156408
5202408
6247408
7278408
8339408
9353408
10353408
0353408
Stop Event
iter limit
saturated
Counts
108 → 108
Calls
Call 1
Inputs
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* (sqrt x) (sqrt 2))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
Outputs
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* -1 (* x (sqrt 2)))
(neg.f64 (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* (sqrt x) (sqrt 2))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (sqrt.f64 x))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(neg.f64 (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 #s(literal -2 binary64)) (sqrt.f64 #s(literal -1 binary64)))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(neg.f64 (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 #s(literal -2 binary64)) (sqrt.f64 #s(literal -1 binary64)))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(neg.f64 (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 #s(literal -2 binary64)) (sqrt.f64 #s(literal -1 binary64)))))
(* -1 (* (sqrt x) (* (sqrt -2) (sqrt -1))))
(neg.f64 (*.f64 (sqrt.f64 x) (*.f64 (sqrt.f64 #s(literal -2 binary64)) (sqrt.f64 #s(literal -1 binary64)))))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))

rewrite50.0ms (1.9%)

Memory
17.9MiB live, 54.4MiB allocated
Rules
174×lower-*.f32
166×lower-*.f64
148×lower-/.f64
148×lower-/.f32
146×lower-fma.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
023124
03864
111829
0104429
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
12 → 45
Calls
Call 1
Inputs
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
(*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x))))
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
(sqrt.f64 (+.f64 x x))
(+.f64 x x)
(log.f64 #s(literal 2 binary64))
(*.f64 x (*.f64 x x))
Outputs
(exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))
(sqrt.f64 #s(literal 2 binary64))
(pow.f64 #s(literal 2 binary64) #s(literal 1/2 binary64))
(pow.f64 (exp.f64 #s(literal 1/2 binary64)) (log.f64 #s(literal 2 binary64)))
(*.f64 (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)) (pow.f64 #s(literal 2 binary64) #s(literal 1/4 binary64)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 (sqrt.f64 #s(literal 2 binary64)) x))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) x)
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64))
(*.f64 #s(literal 1/2 binary64) (log.f64 #s(literal 2 binary64)))
#s(literal 0 binary64)
#s(literal 0 binary64)
(+.f64 #s(literal 0 binary64) (*.f64 x (*.f64 x (*.f64 x x))))
(+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))
(-.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))
(-.f64 (fma.f64 x (*.f64 x (*.f64 x x)) (*.f64 x (*.f64 x (*.f64 x x)))) (*.f64 x (*.f64 x (*.f64 x x))))
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
(fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64))
(fma.f64 (*.f64 x (*.f64 x x)) x #s(literal 0 binary64))
(fma.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (/.f64 #s(literal 1 binary64) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) #s(literal 0 binary64))
(fma.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (/.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x (*.f64 x x)))) #s(literal 0 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))))
(/.f64 #s(literal 1 binary64) (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))))
(/.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))
(/.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (*.f64 x (*.f64 x (*.f64 x x))))
(/.f64 (neg.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))) (neg.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))))
(/.f64 (neg.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (neg.f64 (*.f64 x (*.f64 x (*.f64 x x)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (neg.f64 (*.f64 x (*.f64 x (*.f64 x x)))))
(/.f64 (-.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) #s(literal 0 binary64)) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))
(pow.f64 x #s(literal 4 binary64))
(pow.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 x x))
(*.f64 (*.f64 x (*.f64 x x)) x)
(*.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (/.f64 #s(literal 1 binary64) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))))
(*.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (/.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x (*.f64 x x)))))
#s(literal 0 binary64)
#s(literal 0 binary64)
#s(literal 0 binary64)
(log.f64 #s(literal 2 binary64))
(exp.f64 (*.f64 (log.f64 x) #s(literal 3 binary64)))
(pow.f64 x #s(literal 3 binary64))
(*.f64 x (*.f64 x x))
(*.f64 (*.f64 x x) x)
(*.f64 (pow.f64 x #s(literal 3/2 binary64)) (pow.f64 x #s(literal 3/2 binary64)))

eval21.0ms (0.8%)

Memory
3.0MiB live, 40.2MiB allocated
Compiler

Compiled 4 273 to 359 computations (91.6% saved)

prune34.0ms (1.3%)

Memory
-6.0MiB live, 38.3MiB allocated
Pruning

8 alts after pruning (2 fresh and 6 done)

PrunedKeptTotal
New2172219
Fresh000
Picked123
Done044
Total2188226
Accuracy
100.0%
Counts
226 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
7.1%
(sqrt.f64 (+.f64 x x))
21.2%
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
55.7%
(sqrt.f64 (*.f64 (+.f64 x x) x))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
99.1%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
3.8%
#s(literal 0 binary64)
Compiler

Compiled 67 to 40 computations (40.3% saved)

simplify226.0ms (8.8%)

Memory
10.3MiB live, 234.8MiB allocated
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
cost-diff64
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
cost-diff1216
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))))
cost-diff2432
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))
Rules
7 760×lower-fma.f32
7 758×lower-fma.f64
6 470×lower-*.f32
6 460×lower-*.f64
1 884×cube-prod
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013132
024117
15047
218841
3115641
4334341
5492941
6652341
7692641
8702941
9712641
10736641
11747041
0809238
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(literal 0 binary64)
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))))
#s(literal 1 binary64)
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
x
(*.f64 x (*.f64 x x))
(*.f64 x x)
#s(literal 0 binary64)
(*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))
(*.f64 (*.f64 x (*.f64 x x)) x)
(+.f64 x x)
Outputs
#s(literal 0 binary64)
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(sqrt.f64 (*.f64 x (+.f64 x x)))
(*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)
(*.f64 x (+.f64 x x))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))))
(+.f64 x x)
#s(literal 1 binary64)
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))
(/.f64 #s(literal 1/2 binary64) x)
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
(*.f64 x (*.f64 x (*.f64 x x)))
x
(*.f64 x (*.f64 x x))
(*.f64 x x)
#s(literal 0 binary64)
(*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))
(*.f64 (*.f64 x x) (*.f64 (*.f64 x x) (+.f64 x x)))
(*.f64 (*.f64 x (*.f64 x x)) x)
(*.f64 x (*.f64 x (*.f64 x x)))
(+.f64 x x)

localize43.0ms (1.7%)

Memory
-15.1MiB live, 72.0MiB allocated
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.1015625
(*.f64 x (*.f64 x x))
accuracy0.15234375
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))))
accuracy28.35311497398119
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
accuracy48.65235395301359
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))
Samples
25.0ms256×0valid
Compiler

Compiled 139 to 16 computations (88.5% saved)

Precisions
Click to see histograms. Total time spent on operations: 17.0ms
ival-mult: 8.0ms (47.8% of total)
ival-div: 4.0ms (23.9% of total)
ival-add: 2.0ms (11.9% of total)
ival-sqrt: 2.0ms (11.9% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
5.3MiB live, 5.3MiB allocated
Counts
5 → 60
Calls
Call 1
Inputs
#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())
#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())
#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())
#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())
#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())
Outputs
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor 0 x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (/ 1/2 x) (taylor -inf x) (#s(alt (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) (patch (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor 0 x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (* 2 x) (taylor -inf x) (#s(alt (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) (patch (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor 0 x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (pow x 4) (taylor -inf x) (#s(alt (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (patch (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor 0 x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* x (sqrt 2)) (taylor inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (* -1 (* x (sqrt 2))) (taylor -inf x) (#s(alt (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) (patch (sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor 0 x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
#s(alt (pow x 3) (taylor -inf x) (#s(alt (*.f64 x (*.f64 x x)) (patch (*.f64 x (*.f64 x x)) #<representation binary64>) () ())) ())
Calls

15 calls:

TimeVariablePointExpression
0.0ms
x
@0
(/ (+ (* x (* x (* x x))) 0) (* (* (* x (* x x)) x) (+ x x)))
0.0ms
x
@inf
(/ (+ (* x (* x (* x x))) 0) (* (* (* x (* x x)) x) (+ x x)))
0.0ms
x
@-inf
(/ (+ (* x (* x (* x x))) 0) (* (* (* x (* x x)) x) (+ x x)))
0.0ms
x
@-inf
(sqrt (* (/ 1 (/ (+ (* x (* x (* x x))) 0) (* (* (* x (* x x)) x) (+ x x)))) x))
0.0ms
x
@inf
(sqrt (* (/ 1 (/ (+ (* x (* x (* x x))) 0) (* (* (* x (* x x)) x) (+ x x)))) x))

simplify7.0ms (0.3%)

Memory
11.6MiB live, 11.6MiB allocated
Algorithm
egg-herbie
Rules
36×lower-+.f64
36×lower-+.f32
34×lower-*.f64
34×lower-fma.f64
34×lower-fma.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
013196
122196
235196
339196
443196
555196
667196
778196
898196
9103196
0103196
Stop Event
iter limit
saturated
Counts
60 → 60
Calls
Call 1
Inputs
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(/ 1/2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(* 2 x)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(pow x 4)
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* x (sqrt 2))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(* -1 (* x (sqrt 2)))
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
(pow x 3)
Outputs
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(* 2 x)
(*.f64 x #s(literal 2 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(pow x 4)
(pow.f64 x #s(literal 4 binary64))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* x (sqrt 2))
(*.f64 x (sqrt.f64 #s(literal 2 binary64)))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(* -1 (* x (sqrt 2)))
(*.f64 (sqrt.f64 #s(literal 2 binary64)) (neg.f64 x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))
(pow x 3)
(*.f64 x (*.f64 x x))

rewrite42.0ms (1.6%)

Memory
8.4MiB live, 46.1MiB allocated
Rules
166×lower-*.f32
160×lower-*.f64
148×lower-/.f64
148×lower-/.f32
96×lower-fma.f32
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01380
02453
1959
08919
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
5 → 31
Calls
Call 1
Inputs
(/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))
(/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x))))
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(*.f64 x (*.f64 x x))
Outputs
#s(literal 0 binary64)
#s(literal 0 binary64)
(+.f64 #s(literal 0 binary64) (*.f64 x (*.f64 x (*.f64 x x))))
(+.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))
(-.f64 (*.f64 x (*.f64 x (*.f64 x x))) #s(literal 0 binary64))
(fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64))
(fma.f64 (*.f64 x x) (*.f64 x x) #s(literal 0 binary64))
(fma.f64 (*.f64 x (*.f64 x x)) x #s(literal 0 binary64))
(fma.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (/.f64 #s(literal 1 binary64) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) #s(literal 0 binary64))
(fma.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (/.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x (*.f64 x x)))) #s(literal 0 binary64))
(/.f64 #s(literal 1 binary64) (/.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))))
(/.f64 #s(literal 1 binary64) (/.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))))
(/.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))
(/.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (*.f64 x (*.f64 x (*.f64 x x))))
(/.f64 (neg.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))) (neg.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))))
(/.f64 (neg.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (neg.f64 (*.f64 x (*.f64 x (*.f64 x x)))))
(/.f64 (-.f64 #s(literal 0 binary64) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (neg.f64 (*.f64 x (*.f64 x (*.f64 x x)))))
(/.f64 (-.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) #s(literal 0 binary64)) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))))
(pow.f64 x #s(literal 4 binary64))
(pow.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x (*.f64 x x)))
(*.f64 (*.f64 x x) (*.f64 x x))
(*.f64 (*.f64 x (*.f64 x x)) x)
(*.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))) (/.f64 #s(literal 1 binary64) (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x))))))
(*.f64 (*.f64 (*.f64 x (*.f64 x (*.f64 x x))) (*.f64 x (*.f64 x (*.f64 x x)))) (/.f64 #s(literal 1 binary64) (*.f64 x (*.f64 x (*.f64 x x)))))
#s(literal 0 binary64)
(exp.f64 (*.f64 (log.f64 x) #s(literal 3 binary64)))
(pow.f64 x #s(literal 3 binary64))
(*.f64 x (*.f64 x x))
(*.f64 (*.f64 x x) x)
(*.f64 (pow.f64 x #s(literal 3/2 binary64)) (pow.f64 x #s(literal 3/2 binary64)))

eval22.0ms (0.9%)

Memory
-22.4MiB live, 14.6MiB allocated
Compiler

Compiled 2 260 to 205 computations (90.9% saved)

prune10.0ms (0.4%)

Memory
14.6MiB live, 14.6MiB allocated
Pruning

8 alts after pruning (1 fresh and 7 done)

PrunedKeptTotal
New1071108
Fresh000
Picked112
Done066
Total1088116
Accuracy
100.0%
Counts
116 → 8
Alt Table
Click to see full alt table
StatusAccuracyProgram
100.0%
(hypot.f64 x x)
99.4%
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
7.1%
(sqrt.f64 (+.f64 x x))
21.2%
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
55.7%
(sqrt.f64 (*.f64 (+.f64 x x) x))
99.3%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
99.1%
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
3.8%
#s(literal 0 binary64)
Compiler

Compiled 184 to 76 computations (58.7% saved)

regimes15.0ms (0.6%)

Memory
16.8MiB live, 16.8MiB allocated
Counts
11 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
(sqrt.f64 (+.f64 x x))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
(hypot.f64 x x)
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (exp.f64 (*.f64 (log.f64 #s(literal 2 binary64)) #s(literal 1/2 binary64)))))
Outputs
(hypot.f64 x x)
Calls

4 calls:

4.0ms
x
4.0ms
(*.f64 x x)
3.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
3.0ms
(sqrt.f64 (+.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 23 to 10 computations (56.5% saved)

regimes20.0ms (0.8%)

Memory
-19.7MiB live, 19.1MiB allocated
Counts
9 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
(sqrt.f64 (+.f64 x x))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (*.f64 (*.f64 x (*.f64 x x)) x) (+.f64 x x)))) x))
(sqrt.f64 (*.f64 (/.f64 #s(literal 1 binary64) (/.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (*.f64 (fma.f64 x (*.f64 x (*.f64 x x)) #s(literal 0 binary64)) (+.f64 x x)))) x))
Outputs
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
Calls

4 calls:

9.0ms
(*.f64 x x)
4.0ms
x
3.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
3.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Results
AccuracySegmentsBranch
99.4%1x
99.4%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
99.4%1(+.f64 (*.f64 x x) (*.f64 x x))
99.4%1(*.f64 x x)
Compiler

Compiled 23 to 10 computations (56.5% saved)

regimes9.0ms (0.3%)

Memory
17.1MiB live, 17.1MiB allocated
Counts
5 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
(sqrt.f64 (+.f64 x x))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (*.f64 (+.f64 x x) x))
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
Outputs
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
Calls

4 calls:

2.0ms
x
2.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
2.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
2.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
99.3%1x
99.3%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
99.3%1(+.f64 (*.f64 x x) (*.f64 x x))
99.3%1(*.f64 x x)
Compiler

Compiled 23 to 10 computations (56.5% saved)

regimes23.0ms (0.9%)

Memory
-26.6MiB live, 22.9MiB allocated
Counts
2 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
(sqrt.f64 (+.f64 x x))
Outputs
(sqrt.f64 (+.f64 x x))
Calls

4 calls:

18.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
2.0ms
x
1.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
7.1%1x
7.1%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
7.1%1(+.f64 (*.f64 x x) (*.f64 x x))
7.1%1(*.f64 x x)
Compiler

Compiled 23 to 10 computations (56.5% saved)

regimes5.0ms (0.2%)

Memory
11.3MiB live, 11.3MiB allocated
Accuracy

Total -0.0b remaining (-0%)

Threshold costs -0b (-0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
Outputs
#s(literal 0 binary64)
Calls

4 calls:

1.0ms
x
1.0ms
(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
1.0ms
(+.f64 (*.f64 x x) (*.f64 x x))
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
3.8%1(sqrt.f64 (+.f64 (*.f64 x x) (*.f64 x x)))
3.8%1(+.f64 (*.f64 x x) (*.f64 x x))
3.8%1(*.f64 x x)
3.8%1x
Compiler

Compiled 23 to 10 computations (56.5% saved)

simplify5.0ms (0.2%)

Memory
10.0MiB live, 10.0MiB allocated
Algorithm
egg-herbie
Rules
*-commutative_binary64
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01428
11628
Stop Event
saturated
Calls
Call 1
Inputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (+.f64 x x))
#s(literal 0 binary64)
Outputs
(hypot.f64 x x)
(*.f64 (sqrt.f64 x) (sqrt.f64 (+.f64 x x)))
#s(approx (sqrt (+ (* x x) (* x x))) (*.f64 x (sqrt.f64 #s(literal 2 binary64))))
(sqrt.f64 (+.f64 x x))
#s(literal 0 binary64)

soundness131.0ms (5.1%)

Memory
-17.0MiB live, 138.3MiB allocated
Rules
174×lower-*.f32
166×lower-*.f64
148×lower-/.f64
148×lower-/.f32
146×lower-fma.f32
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01544
02338
15134
025534
023124
03864
111829
0104429
0418
0714
12310
01609
08148
115148
232148
337148
441148
553148
665148
776148
896148
9101148
0101148
Stop Event
fuel
iter limit
saturated
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
iter limit
iter limit
unsound
iter limit
iter limit
iter limit
iter limit
unsound
iter limit
Compiler

Compiled 102 to 50 computations (51% saved)

preprocess31.0ms (1.2%)

Memory
-10.2MiB live, 65.1MiB allocated
Remove

(abs x)

Compiler

Compiled 68 to 32 computations (52.9% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated

Profiling

Loading profile data...