Linear.Quaternion:$clog from linear-1.19.1.3

Time bar (total: 2.5s)

start0.0ms (0%)

Memory
0.1MiB live, 0.1MiB allocated; 0ms collecting garbage

analyze48.0ms (1.9%)

Memory
-13.5MiB live, 30.4MiB allocated; 15ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
0%0%99.9%0.1%0%0%0%1
0%0%99.9%0.1%0%0%0%2
50%50%50%0.1%0%0%0%3
50%50%50%0.1%0%0%0%4
62.5%62.4%37.5%0.1%0%0%0%5
66.7%62.4%31.2%0.1%0%6.2%0%6
75%65.6%21.9%0.1%0%12.5%0%7
80%68.7%17.2%0.1%0%14%0%8
85.7%70.2%11.7%0.1%0%18%0%9
88.9%71.8%9%0.1%0%19.1%0%10
92.3%72.6%6%0.1%0%21.3%0%11
94.1%73.4%4.6%0.1%0%22%0%12
Compiler

Compiled 8 to 7 computations (12.5% saved)

sample1.0s (40.4%)

Memory
63.1MiB live, 1 319.8MiB allocated; 364ms collecting garbage
Samples
679.0ms8 256×0valid
50.0ms315×0invalid
Precisions
Click to see histograms. Total time spent on operations: 355.0ms
ival-mult: 149.0ms (41.9% of total)
ival-add: 141.0ms (39.7% of total)
ival-sqrt: 55.0ms (15.5% of total)
ival-true: 5.0ms (1.4% of total)
ival-assert: 3.0ms (0.8% of total)
adjust: 2.0ms (0.6% of total)
Bogosity

explain68.0ms (2.7%)

Memory
-41.4MiB live, 150.7MiB allocated; 15ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
810-0-(sqrt.f64 (+.f64 (*.f64 x x) y))
00-0-(+.f64 (*.f64 x x) y)
00-0-y
00-0-(*.f64 x x)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
sqrt.f64(sqrt.f64 (+.f64 (*.f64 x x) y))oflow-rescue810
(+.f64 (*.f64 x x) y)overflow81
(*.f64 x x)overflow81
Confusion
Predicted +Predicted -
+810
-0175
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+8100
-00175
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0175
181
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
27.0ms512×0valid
Compiler

Compiled 42 to 19 computations (54.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 11.0ms
ival-mult: 4.0ms (37.8% of total)
ival-sqrt: 3.0ms (28.4% of total)
ival-add: 2.0ms (18.9% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess20.0ms (0.8%)

Memory
0.2MiB live, 47.0MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01534
13234
28634
313234
417834
518034
056
086
1136
2326
3596
4746
0745
Stop Event
iter limit
saturated
iter limit
saturated
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) y))
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) y))
(sqrt.f64 (fma.f64 x x y))
Symmetry

(abs x)

Compiler

Compiled 6 to 5 computations (16.7% saved)

eval0.0ms (0%)

Memory
0.2MiB live, 0.2MiB allocated; 0ms collecting garbage
Compiler

Compiled 0 to 2 computations (-∞% saved)

prune1.0ms (0%)

Memory
3.1MiB live, 3.1MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
70.6%
(sqrt.f64 (+.f64 (*.f64 x x) y))
Compiler

Compiled 6 to 5 computations (16.7% saved)

simplify5.0ms (0.2%)

Memory
11.9MiB live, 11.9MiB allocated; 0ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
(sqrt.f64 (+.f64 (*.f64 x x) y))
cost-diff1
(+.f64 (*.f64 x x) y)
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0516
0816
11316
23216
35916
47416
07414
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sqrt.f64 (+.f64 (*.f64 x x) y))
(+.f64 (*.f64 x x) y)
(*.f64 x x)
x
y
Outputs
(sqrt.f64 (+.f64 (*.f64 x x) y))
(sqrt.f64 (fma.f64 x x y))
(+.f64 (*.f64 x x) y)
(fma.f64 x x y)
(*.f64 x x)
x
y

localize19.0ms (0.7%)

Memory
-5.5MiB live, 41.0MiB allocated; 4ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy0.0078125
(+.f64 (*.f64 x x) y)
accuracy18.840298536312535
(sqrt.f64 (+.f64 (*.f64 x x) y))
Samples
12.0ms256×0valid
Compiler

Compiled 18 to 7 computations (61.1% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 2.0ms (39.9% of total)
ival-sqrt: 2.0ms (39.9% of total)
ival-add: 1.0ms (20% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series5.0ms (0.2%)

Memory
11.4MiB live, 11.4MiB allocated; 0ms collecting garbage
Counts
3 → 28
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) y)
(sqrt.f64 (+.f64 (*.f64 x x) y))
(*.f64 x x)
Outputs
y
(+ y (pow x 2))
(sqrt y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(pow x 2)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(* -1 x)
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(+ x (* 1/2 (/ y x)))
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(* y (+ 1 (/ (pow x 2) y)))
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
Calls

6 calls:

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

simplify167.0ms (6.6%)

Memory
-1.0MiB live, 189.5MiB allocated; 38ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0133524
1418509
21711488
06415449
Stop Event
iter limit
iter limit
node limit
Counts
28 → 26
Calls
Call 1
Inputs
y
(+ y (pow x 2))
(sqrt y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(pow x 2)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(* -1 x)
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(+ x (* 1/2 (/ y x)))
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(* y (+ 1 (/ (pow x 2) y)))
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
Outputs
y
(+ y (pow x 2))
(fma.f64 x x y)
(sqrt y)
(sqrt.f64 y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(fma.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) (sqrt.f64 y))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(fma.f64 (fma.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) #s(literal 1/2 binary64))) (*.f64 x x) (sqrt.f64 y))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 (*.f64 #s(literal 1/16 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) #s(literal -1/8 binary64))) (fma.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) (sqrt.f64 y)))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(*.f64 (fma.f64 (/.f64 y (*.f64 x x)) x x) x)
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(*.f64 (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64)) x)
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(*.f64 (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64))) x)
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(*.f64 (fma.f64 (pow.f64 y #s(literal 3 binary64)) (/.f64 #s(literal 1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64)))) x)
(* -1 x)
(neg.f64 x)
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(*.f64 (fma.f64 (/.f64 #s(literal -1/2 binary64) x) (/.f64 y x) #s(literal -1 binary64)) x)
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(*.f64 (fma.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 y (pow.f64 x #s(literal 4 binary64))) y) (fma.f64 (/.f64 #s(literal -1/2 binary64) x) (/.f64 y x) #s(literal -1 binary64))) x)
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(*.f64 (neg.f64 x) (fma.f64 (pow.f64 y #s(literal 3 binary64)) (/.f64 #s(literal 1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64)))))
(+ x (* 1/2 (/ y x)))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(fma.f64 (fma.f64 (/.f64 y (pow.f64 x #s(literal 3 binary64))) #s(literal -1/8 binary64) (/.f64 #s(literal 1/2 binary64) x)) y x)
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(fma.f64 (fma.f64 (fma.f64 (/.f64 y (pow.f64 x #s(literal 5 binary64))) #s(literal 1/16 binary64) (/.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 3 binary64)))) y (/.f64 #s(literal 1/2 binary64) x)) y x)
(* y (+ 1 (/ (pow x 2) y)))
(fma.f64 (/.f64 (*.f64 x x) y) y y)
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(*.f64 (fma.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))) y)
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)))) y)
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 6 binary64)) #s(literal 1/16 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 7 binary64)))) (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal 1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))))) y)
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(sqrt.f64 y)
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(*.f64 (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))) y)
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)))) y)
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(*.f64 (fma.f64 (*.f64 #s(literal -1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 7 binary64)))) (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))))) y)

rewrite42.0ms (1.6%)

Memory
26.3MiB live, 72.0MiB allocated; 4ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0514
0814
13014
021512
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 41
Calls
Call 1
Inputs
(+.f64 (*.f64 x x) y)
(sqrt.f64 (+.f64 (*.f64 x x) y))
(*.f64 x x)
Outputs
(/.f64 (-.f64 (*.f64 y y) (pow.f64 x #s(literal 4 binary64))) (-.f64 y (*.f64 x x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (*.f64 x x) y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) (-.f64 (*.f64 x x) y))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 y y (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y (*.f64 x x)))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) y)
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) y)
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) y)
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) y)
(fma.f64 (neg.f64 x) (neg.f64 x) y)
(fma.f64 (fabs.f64 x) (fabs.f64 x) y)
(fma.f64 x x y)
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) y)) (/.f64 (*.f64 y y) (-.f64 (*.f64 x x) y)))
(-.f64 y (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 y (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 y (*.f64 (neg.f64 x) x))
(-.f64 y (*.f64 x (neg.f64 x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 y (*.f64 x x))
(+.f64 (*.f64 x x) y)
(*.f64 (pow.f64 (fma.f64 x x y) #s(literal 1/4 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 1/4 binary64)))
(pow.f64 (fma.f64 x x y) #s(literal 1/2 binary64))
(/.f64 (sqrt.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (sqrt.f64 (-.f64 (*.f64 x x) y)))
(/.f64 (hypot.f64 (pow.f64 y #s(literal 3/2 binary64)) (pow.f64 x #s(literal 3 binary64))) (sqrt.f64 (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(sqrt.f64 (fma.f64 x x y))
(exp.f64 (*.f64 (log.f64 (fma.f64 x x y)) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 x x)
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(neg.f64 (*.f64 x (neg.f64 x)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))

eval16.0ms (0.6%)

Memory
-15.5MiB live, 37.9MiB allocated; 7ms collecting garbage
Compiler

Compiled 1 053 to 255 computations (75.8% saved)

prune4.0ms (0.1%)

Memory
9.9MiB live, 9.9MiB allocated; 0ms collecting garbage
Pruning

5 alts after pruning (5 fresh and 0 done)

PrunedKeptTotal
New61566
Fresh000
Picked101
Done000
Total62567
Accuracy
100.0%
Counts
67 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
70.6%
(sqrt.f64 (fma.f64 x x y))
60.8%
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
71.7%
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
31.4%
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
1.2%
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
Compiler

Compiled 106 to 78 computations (26.4% saved)

simplify147.0ms (5.8%)

Memory
-25.9MiB live, 164.7MiB allocated; 16ms collecting garbage
Localize:

Found 13 expressions of interest:

NewMetricScoreProgram
cost-diff0
(neg.f64 y)
cost-diff0
#s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))))
cost-diff0
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
cost-diff6
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
cost-diff0
(fma.f64 x x y)
cost-diff0
(sqrt.f64 (fma.f64 x x y))
cost-diff0
(sqrt.f64 y)
cost-diff0
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
cost-diff0
(neg.f64 x)
cost-diff0
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
cost-diff0
(/.f64 #s(literal 1/2 binary64) x)
cost-diff0
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
cost-diff0
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
Iterations

Useful iterations: 4 (0.0ms)

IterNodesCost
022115
035109
158109
2143107
3342107
4100897
5222297
6511597
0830497
Stop Event
iter limit
node limit
iter limit
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(/.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
x
y
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
(neg.f64 x)
x
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 y)
y
(sqrt.f64 (fma.f64 x x y))
(fma.f64 x x y)
x
y
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
#s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))))
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
(neg.f64 y)
y
(fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))
(neg.f64 x)
x
(/.f64 x y)
#s(literal -1 binary64)
Outputs
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(/.f64 #s(literal 1/2 binary64) x)
#s(literal 1/2 binary64)
x
y
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
(neg.f64 x)
x
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 y)
y
(sqrt.f64 (fma.f64 x x y))
(fma.f64 x x y)
x
y
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
(sqrt.f64 #s(approx (+ (* x x) y) (fma.f64 x x y)))
#s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))))
#s(approx (+ (* x x) y) (fma.f64 x x y))
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
(fma.f64 x x y)
(neg.f64 y)
y
(fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))
(fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64))
(neg.f64 x)
x
(/.f64 x y)
#s(literal -1 binary64)

localize48.0ms (1.9%)

Memory
34.3MiB live, 127.4MiB allocated; 6ms collecting garbage
Localize:

Found 13 expressions of interest:

NewMetricScoreProgram
accuracy0.0
#s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))))
accuracy0.0546875
(fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))
accuracy2.6491135735657863
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
accuracy8.850274488527038
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
accuracy0.0
(fma.f64 x x y)
accuracy8.850274488527038
(sqrt.f64 (fma.f64 x x y))
accuracy0.0
(sqrt.f64 y)
accuracy20.125230757785896
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
accuracy0.0
(neg.f64 x)
accuracy39.649808592407744
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
accuracy0.0
(/.f64 #s(literal 1/2 binary64) x)
accuracy0.05078125
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
accuracy18.117463402132667
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
Samples
24.0ms161×0valid
12.0ms95×0invalid
Compiler

Compiled 92 to 19 computations (79.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 23.0ms
ival-mult: 9.0ms (38.5% of total)
ival-div: 4.0ms (17.1% of total)
ival-add: 4.0ms (17.1% of total)
ival-sqrt: 4.0ms (17.1% of total)
ival-neg: 2.0ms (8.6% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)
ival-true: 0.0ms (0% of total)
exact: 0.0ms (0% of total)

series14.0ms (0.5%)

Memory
-22.3MiB live, 24.2MiB allocated; 3ms collecting garbage
Counts
14 → 40
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(/.f64 #s(literal 1/2 binary64) x)
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
(neg.f64 x)
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 y)
(sqrt.f64 (fma.f64 x x y))
(fma.f64 x x y)
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
#s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))))
(neg.f64 y)
(fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))
Outputs
(sqrt y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(* 1/2 (/ y x))
(/ (+ (* 1/2 y) (pow x 2)) x)
(/ 1/2 x)
(* -1 x)
y
(+ y (pow x 2))
-1
(- (* -1 (/ (pow x 2) y)) 1)
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(pow x 2)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* -1 (/ (pow x 2) y))
(* -1 (* (pow x 2) (+ (/ 1 y) (/ 1 (pow x 2)))))
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(* -1 (* x (- (* -1/2 (/ y (pow x 2))) 1)))
(+ x (* 1/2 (/ y x)))
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(* -1 y)
(/ (+ (* -1 y) (* -1 (pow x 2))) y)
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(* y (+ (* 1/2 (/ 1 x)) (/ x y)))
(* y (+ 1 (/ (pow x 2) y)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(* -1 (* y (- (* -1 (/ x y)) (* 1/2 (/ 1 x)))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
Calls

6 calls:

TimeVariablePointExpression
4.0ms
x
@0
((sqrt (+ (* x x) y)) (+ (* (/ 1/2 x) y) x) (/ 1/2 x) (sqrt (+ (* x x) y)) (neg x) (sqrt (+ (* x x) y)) (sqrt y) (sqrt (+ (* x x) y)) (+ (* x x) y) (* (neg y) (+ (* (neg x) (/ x y)) -1)) (sqrt (+ (* x x) y)) (+ (* x x) y) (neg y) (+ (* (neg x) (/ x y)) -1))
2.0ms
y
@0
((sqrt (+ (* x x) y)) (+ (* (/ 1/2 x) y) x) (/ 1/2 x) (sqrt (+ (* x x) y)) (neg x) (sqrt (+ (* x x) y)) (sqrt y) (sqrt (+ (* x x) y)) (+ (* x x) y) (* (neg y) (+ (* (neg x) (/ x y)) -1)) (sqrt (+ (* x x) y)) (+ (* x x) y) (neg y) (+ (* (neg x) (/ x y)) -1))
2.0ms
x
@inf
((sqrt (+ (* x x) y)) (+ (* (/ 1/2 x) y) x) (/ 1/2 x) (sqrt (+ (* x x) y)) (neg x) (sqrt (+ (* x x) y)) (sqrt y) (sqrt (+ (* x x) y)) (+ (* x x) y) (* (neg y) (+ (* (neg x) (/ x y)) -1)) (sqrt (+ (* x x) y)) (+ (* x x) y) (neg y) (+ (* (neg x) (/ x y)) -1))
2.0ms
y
@-inf
((sqrt (+ (* x x) y)) (+ (* (/ 1/2 x) y) x) (/ 1/2 x) (sqrt (+ (* x x) y)) (neg x) (sqrt (+ (* x x) y)) (sqrt y) (sqrt (+ (* x x) y)) (+ (* x x) y) (* (neg y) (+ (* (neg x) (/ x y)) -1)) (sqrt (+ (* x x) y)) (+ (* x x) y) (neg y) (+ (* (neg x) (/ x y)) -1))
2.0ms
y
@inf
((sqrt (+ (* x x) y)) (+ (* (/ 1/2 x) y) x) (/ 1/2 x) (sqrt (+ (* x x) y)) (neg x) (sqrt (+ (* x x) y)) (sqrt y) (sqrt (+ (* x x) y)) (+ (* x x) y) (* (neg y) (+ (* (neg x) (/ x y)) -1)) (sqrt (+ (* x x) y)) (+ (* x x) y) (neg y) (+ (* (neg x) (/ x y)) -1))

simplify164.0ms (6.5%)

Memory
19.4MiB live, 206.0MiB allocated; 16ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0157585
1486570
21936524
07431481
Stop Event
iter limit
iter limit
node limit
Counts
40 → 38
Calls
Call 1
Inputs
(sqrt y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(* 1/2 (/ y x))
(/ (+ (* 1/2 y) (pow x 2)) x)
(/ 1/2 x)
(* -1 x)
y
(+ y (pow x 2))
-1
(- (* -1 (/ (pow x 2) y)) 1)
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(pow x 2)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* -1 (/ (pow x 2) y))
(* -1 (* (pow x 2) (+ (/ 1 y) (/ 1 (pow x 2)))))
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(* -1 (* x (- (* -1/2 (/ y (pow x 2))) 1)))
(+ x (* 1/2 (/ y x)))
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(* -1 y)
(/ (+ (* -1 y) (* -1 (pow x 2))) y)
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(* y (+ (* 1/2 (/ 1 x)) (/ x y)))
(* y (+ 1 (/ (pow x 2) y)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(* -1 (* y (- (* -1 (/ x y)) (* 1/2 (/ 1 x)))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
Outputs
(sqrt y)
(sqrt.f64 y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) (sqrt.f64 y))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(fma.f64 (fma.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) #s(literal 1/2 binary64))) (*.f64 x x) (sqrt.f64 y))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 (*.f64 #s(literal 1/16 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) #s(literal -1/8 binary64))) (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) (sqrt.f64 y)))
(* 1/2 (/ y x))
(*.f64 (/.f64 #s(literal 1/2 binary64) x) y)
(/ (+ (* 1/2 y) (pow x 2)) x)
(fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x)
(/ 1/2 x)
(/.f64 #s(literal 1/2 binary64) x)
(* -1 x)
(neg.f64 x)
y
(+ y (pow x 2))
(fma.f64 x x y)
-1
#s(literal -1 binary64)
(- (* -1 (/ (pow x 2) y)) 1)
(-.f64 #s(literal -1 binary64) (/.f64 (*.f64 x x) y))
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x)
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(fma.f64 (*.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64)))) x (fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(fma.f64 (fma.f64 (pow.f64 y #s(literal 3 binary64)) (/.f64 #s(literal 1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) #s(literal 1 binary64))) x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y))
(pow x 2)
(*.f64 x x)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(fma.f64 x x y)
(* -1 (/ (pow x 2) y))
(*.f64 (/.f64 (neg.f64 x) y) x)
(* -1 (* (pow x 2) (+ (/ 1 y) (/ 1 (pow x 2)))))
(-.f64 #s(literal -1 binary64) (/.f64 (*.f64 x x) y))
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(fma.f64 (/.f64 #s(literal -1/2 binary64) x) y (neg.f64 x))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(fma.f64 (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) #s(literal 1 binary64)) (neg.f64 x) (*.f64 (/.f64 #s(literal -1/2 binary64) x) y))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(fma.f64 (fma.f64 (pow.f64 y #s(literal 3 binary64)) (/.f64 #s(literal 1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) #s(literal 1 binary64))) (neg.f64 x) (*.f64 (/.f64 #s(literal -1/2 binary64) x) y))
(* -1 (* x (- (* -1/2 (/ y (pow x 2))) 1)))
(fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x)
(+ x (* 1/2 (/ y x)))
(fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x)
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(fma.f64 (fma.f64 (/.f64 y (pow.f64 x #s(literal 3 binary64))) #s(literal -1/8 binary64) (/.f64 #s(literal 1/2 binary64) x)) y x)
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(fma.f64 (fma.f64 (fma.f64 (/.f64 y (pow.f64 x #s(literal 5 binary64))) #s(literal 1/16 binary64) (/.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 3 binary64)))) y (/.f64 #s(literal 1/2 binary64) x)) y x)
(* -1 y)
(neg.f64 y)
(/ (+ (* -1 y) (* -1 (pow x 2))) y)
(-.f64 #s(literal -1 binary64) (/.f64 (*.f64 x x) y))
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(*.f64 (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))) y)
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)))) y)
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 6 binary64)) #s(literal 1/16 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 7 binary64)))) (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))))) y)
(* y (+ (* 1/2 (/ 1 x)) (/ x y)))
(fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x)
(* y (+ 1 (/ (pow x 2) y)))
(fma.f64 x x y)
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(sqrt.f64 y)
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(*.f64 (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))) y)
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)))) y)
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal -1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 7 binary64)))) (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))))) y)
(* -1 (* y (- (* -1 (/ x y)) (* 1/2 (/ 1 x)))))
(fma.f64 (/.f64 y x) #s(literal 1/2 binary64) x)
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(fma.f64 x x y)

rewrite130.0ms (5.1%)

Memory
-29.3MiB live, 79.5MiB allocated; 106ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
022100
035100
1104100
0701100
Stop Event
iter limit
iter limit
node limit
iter limit
Counts
14 → 99
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(/.f64 #s(literal 1/2 binary64) x)
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
(neg.f64 x)
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 y)
(sqrt.f64 (fma.f64 x x y))
(fma.f64 x x y)
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
#s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))))
(neg.f64 y)
(fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))
Outputs
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
(/.f64 (-.f64 (*.f64 x x) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64))) (-.f64 x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y)))
(/.f64 (neg.f64 (-.f64 (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)) (*.f64 x x))) (neg.f64 (-.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) x)))
(/.f64 (neg.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 3 binary64)))) (neg.f64 (fma.f64 x (-.f64 x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)))))
(/.f64 (-.f64 (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)) (*.f64 x x)) (-.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 3 binary64))) (fma.f64 x x (-.f64 (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)) (*.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) x))))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 3 binary64))) (fma.f64 x (-.f64 x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64))))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(fma.f64 #s(literal 1/2 binary64) (/.f64 y x) x)
(fma.f64 y (/.f64 #s(literal 1/2 binary64) x) x)
(-.f64 (/.f64 (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)) (-.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) x)) (/.f64 (*.f64 x x) (-.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) x)))
(-.f64 x (*.f64 (neg.f64 (/.f64 #s(literal 1/2 binary64) x)) y))
(-.f64 x (*.f64 (neg.f64 y) (/.f64 #s(literal 1/2 binary64) x)))
(+.f64 (/.f64 (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 3 binary64)) (fma.f64 x (-.f64 x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x (-.f64 x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y)) (pow.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) #s(literal 2 binary64)))))
(+.f64 (*.f64 (/.f64 #s(literal 1/2 binary64) x) y) x)
(+.f64 x (*.f64 (/.f64 #s(literal 1/2 binary64) x) y))
(/.f64 #s(literal -1/2 binary64) (neg.f64 x))
(/.f64 #s(literal 1/2 binary64) (neg.f64 (neg.f64 x)))
(/.f64 #s(literal 1/2 binary64) x)
(neg.f64 (/.f64 #s(literal -1/2 binary64) x))
(neg.f64 (/.f64 #s(literal 1/2 binary64) (neg.f64 x)))
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
(neg.f64 x)
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(*.f64 (pow.f64 y #s(literal 1/4 binary64)) (pow.f64 y #s(literal 1/4 binary64)))
(pow.f64 y #s(literal 1/2 binary64))
(sqrt.f64 y)
(exp.f64 (*.f64 (log.f64 y) #s(literal 1/2 binary64)))
(*.f64 (pow.f64 (fma.f64 x x y) #s(literal 1/4 binary64)) (pow.f64 (fma.f64 x x y) #s(literal 1/4 binary64)))
(pow.f64 (fma.f64 x x y) #s(literal 1/2 binary64))
(/.f64 (sqrt.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (sqrt.f64 (-.f64 (*.f64 x x) y)))
(/.f64 (hypot.f64 (pow.f64 y #s(literal 3/2 binary64)) (pow.f64 x #s(literal 3 binary64))) (sqrt.f64 (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(sqrt.f64 (fma.f64 x x y))
(exp.f64 (*.f64 (log.f64 (fma.f64 x x y)) #s(literal 1/2 binary64)))
(/.f64 (-.f64 (*.f64 y y) (pow.f64 x #s(literal 4 binary64))) (-.f64 y (*.f64 x x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (neg.f64 (-.f64 (*.f64 x x) y)))
(/.f64 (neg.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (neg.f64 (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) (-.f64 (*.f64 x x) y))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 y y (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y (*.f64 x x)))))
(/.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64))) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) y)
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) y)
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) y)
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) y)
(fma.f64 (fabs.f64 x) (fabs.f64 x) y)
(fma.f64 (neg.f64 x) (neg.f64 x) y)
(fma.f64 x x y)
(-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (*.f64 x x) y)) (/.f64 (*.f64 y y) (-.f64 (*.f64 x x) y)))
(-.f64 y (*.f64 (neg.f64 (fabs.f64 x)) (fabs.f64 x)))
(-.f64 y (*.f64 (neg.f64 (neg.f64 x)) (neg.f64 x)))
(-.f64 y (*.f64 (neg.f64 x) x))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 y (-.f64 y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 y (*.f64 x x))
(+.f64 (*.f64 x x) y)
(*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y))
(*.f64 (neg.f64 y) (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)))
(*.f64 y (neg.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64))))
(/.f64 (*.f64 (-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) #s(literal 1 binary64)) (neg.f64 y)) (-.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64)))
(/.f64 (*.f64 (+.f64 (neg.f64 (pow.f64 (*.f64 (/.f64 x y) x) #s(literal 3 binary64))) #s(literal -1 binary64)) (neg.f64 y)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 (*.f64 (/.f64 x y) x) #s(literal -1 binary64))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))))
(/.f64 (*.f64 (neg.f64 y) (-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) #s(literal 1 binary64))) (-.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64)))
(/.f64 (*.f64 (neg.f64 y) (+.f64 (neg.f64 (pow.f64 (*.f64 (/.f64 x y) x) #s(literal 3 binary64))) #s(literal -1 binary64))) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 (*.f64 (/.f64 x y) x) #s(literal -1 binary64))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))))
(/.f64 (-.f64 (*.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y))) (*.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y)))) (-.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (neg.f64 (neg.f64 y))))
(/.f64 (+.f64 (pow.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) #s(literal 3 binary64)) (pow.f64 (neg.f64 (neg.f64 y)) #s(literal 3 binary64))) (fma.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (-.f64 (*.f64 (neg.f64 (neg.f64 y)) (neg.f64 (neg.f64 y))) (*.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (neg.f64 (neg.f64 y))))))
(neg.f64 (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) y))
(fma.f64 (*.f64 (neg.f64 y) (/.f64 x y)) (neg.f64 x) (neg.f64 (neg.f64 y)))
(fma.f64 (*.f64 (neg.f64 y) (neg.f64 x)) (/.f64 x y) (neg.f64 (neg.f64 y)))
(fma.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y) (neg.f64 (neg.f64 y)))
(fma.f64 #s(literal -1 binary64) (neg.f64 y) (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)))
(fma.f64 (/.f64 x y) (*.f64 (neg.f64 x) (neg.f64 y)) (neg.f64 (neg.f64 y)))
(fma.f64 (neg.f64 y) (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 (neg.f64 y)))
(fma.f64 (neg.f64 y) #s(literal -1 binary64) (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)))
(fma.f64 (neg.f64 x) (*.f64 (/.f64 x y) (neg.f64 y)) (neg.f64 (neg.f64 y)))
(-.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (*.f64 y #s(literal -1 binary64)))
(-.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (*.f64 #s(literal 1 binary64) (neg.f64 y)))
(-.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (*.f64 (neg.f64 (neg.f64 y)) #s(literal -1 binary64)))
(+.f64 (neg.f64 (neg.f64 y)) (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)))
(+.f64 (*.f64 (*.f64 (/.f64 x y) (neg.f64 x)) (neg.f64 y)) (neg.f64 (neg.f64 y)))
(*.f64 (pow.f64 #s(approx (+ (* x x) y) (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y))) #s(literal 1/4 binary64)) (pow.f64 #s(approx (+ (* x x) y) (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y))) #s(literal 1/4 binary64)))
(pow.f64 #s(approx (+ (* x x) y) (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y))) #s(literal 1/2 binary64))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y))))
(exp.f64 (*.f64 (log.f64 #s(approx (+ (* x x) y) (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y)))) #s(literal 1/2 binary64)))
#s(approx (+ (* x x) y) (*.f64 (fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64)) (neg.f64 y)))
(neg.f64 y)
(/.f64 (-.f64 #s(literal 1 binary64) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))) (-.f64 #s(literal -1 binary64) (*.f64 (/.f64 x y) (neg.f64 x))))
(/.f64 (neg.f64 (-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) #s(literal 1 binary64))) (neg.f64 (-.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64))))
(/.f64 (neg.f64 (+.f64 (neg.f64 (pow.f64 (*.f64 (/.f64 x y) x) #s(literal 3 binary64))) #s(literal -1 binary64))) (neg.f64 (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 (*.f64 (/.f64 x y) x) #s(literal -1 binary64))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)))))
(/.f64 (-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) #s(literal 1 binary64)) (-.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64)))
(/.f64 (+.f64 (neg.f64 (pow.f64 (*.f64 (/.f64 x y) x) #s(literal 3 binary64))) #s(literal -1 binary64)) (+.f64 #s(literal 1 binary64) (-.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) (*.f64 (/.f64 x y) (*.f64 (neg.f64 x) #s(literal -1 binary64))))))
(/.f64 (+.f64 (neg.f64 (pow.f64 (*.f64 (/.f64 x y) x) #s(literal 3 binary64))) #s(literal -1 binary64)) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 (*.f64 (/.f64 x y) x) #s(literal -1 binary64))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y))))
(fma.f64 (/.f64 x y) (neg.f64 x) #s(literal -1 binary64))
(fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64))
(fma.f64 x (neg.f64 (/.f64 x y)) #s(literal -1 binary64))
(-.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)) (-.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64))) (/.f64 #s(literal 1 binary64) (-.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64))))
(-.f64 #s(literal -1 binary64) (*.f64 (neg.f64 (/.f64 x y)) (neg.f64 x)))
(-.f64 #s(literal -1 binary64) (*.f64 (neg.f64 (neg.f64 x)) (/.f64 x y)))
(-.f64 #s(literal -1 binary64) (*.f64 (/.f64 x y) x))
(+.f64 (/.f64 (neg.f64 (pow.f64 (*.f64 (/.f64 x y) x) #s(literal 3 binary64))) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 (*.f64 (/.f64 x y) x) #s(literal -1 binary64))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)))) (/.f64 #s(literal -1 binary64) (+.f64 (+.f64 #s(literal 1 binary64) (*.f64 (*.f64 (/.f64 x y) x) #s(literal -1 binary64))) (/.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 y y)))))
(+.f64 (*.f64 (/.f64 x y) (neg.f64 x)) #s(literal -1 binary64))
(+.f64 #s(literal -1 binary64) (*.f64 (/.f64 x y) (neg.f64 x)))

eval17.0ms (0.7%)

Memory
-13.4MiB live, 31.7MiB allocated; 6ms collecting garbage
Compiler

Compiled 2 699 to 500 computations (81.5% saved)

prune4.0ms (0.2%)

Memory
13.0MiB live, 13.0MiB allocated; 0ms collecting garbage
Pruning

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New1271128
Fresh000
Picked055
Done000
Total1276133
Accuracy
100.0%
Counts
133 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
70.6%
(sqrt.f64 (fma.f64 x x y))
60.8%
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
41.9%
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
71.7%
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
31.4%
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
1.2%
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
Compiler

Compiled 63 to 46 computations (27% saved)

simplify6.0ms (0.2%)

Memory
8.5MiB live, 8.5MiB allocated; 0ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x x)
cost-diff0
#s(approx (+ (* x x) y) (*.f64 x x))
cost-diff0
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0723
0923
11423
23323
36023
47523
07521
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
#s(approx (+ (* x x) y) (*.f64 x x))
(*.f64 x x)
x
Outputs
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
#s(approx (+ (* x x) y) (*.f64 x x))
(*.f64 x x)
x

localize19.0ms (0.8%)

Memory
-11.8MiB live, 33.3MiB allocated; 5ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x x)
accuracy18.47792948985183
#s(approx (+ (* x x) y) (*.f64 x x))
accuracy18.840298536312535
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
Samples
15.0ms256×0valid
Compiler

Compiled 17 to 7 computations (58.8% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-mult: 6.0ms (67.9% of total)
ival-sqrt: 2.0ms (22.6% of total)
ival-add: 1.0ms (11.3% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series2.0ms (0.1%)

Memory
5.2MiB live, 5.2MiB allocated; 0ms collecting garbage
Counts
3 → 28
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
#s(approx (+ (* x x) y) (*.f64 x x))
(*.f64 x x)
Outputs
(sqrt y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
y
(+ y (pow x 2))
(pow x 2)
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* -1 x)
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(+ x (* 1/2 (/ y x)))
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(* y (+ 1 (/ (pow x 2) y)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
Calls

6 calls:

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

simplify182.0ms (7.2%)

Memory
1.9MiB live, 186.3MiB allocated; 48ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0133524
1418509
21706488
06419449
Stop Event
iter limit
iter limit
node limit
Counts
28 → 26
Calls
Call 1
Inputs
(sqrt y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
y
(+ y (pow x 2))
(pow x 2)
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(* -1 x)
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(+ x (* 1/2 (/ y x)))
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(* y (+ 1 (/ (pow x 2) y)))
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
Outputs
(sqrt y)
(sqrt.f64 y)
(+ (sqrt y) (* 1/2 (* (pow x 2) (sqrt (/ 1 y)))))
(fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) (sqrt.f64 y))
(+ (sqrt y) (* (pow x 2) (+ (* -1/8 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* 1/2 (sqrt (/ 1 y))))))
(fma.f64 (fma.f64 (*.f64 #s(literal -1/8 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) #s(literal 1/2 binary64))) (*.f64 x x) (sqrt.f64 y))
(+ (sqrt y) (* (pow x 2) (+ (* 1/2 (sqrt (/ 1 y))) (* (pow x 2) (+ (* -1/8 (sqrt (/ 1 (pow y 3)))) (* 1/16 (* (pow x 2) (sqrt (/ 1 (pow y 5))))))))))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 (*.f64 #s(literal 1/16 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (*.f64 (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) #s(literal -1/8 binary64))) (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)) (sqrt.f64 y)))
y
(+ y (pow x 2))
(fma.f64 x x y)
(pow x 2)
(*.f64 x x)
x
(* x (+ 1 (* 1/2 (/ y (pow x 2)))))
(*.f64 (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64)) x)
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2))))))
(*.f64 (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64))) x)
(* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2)))))))
(*.f64 (fma.f64 (pow.f64 y #s(literal 3 binary64)) (/.f64 #s(literal 1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64)))) x)
(* (pow x 2) (+ 1 (/ y (pow x 2))))
(*.f64 (fma.f64 (/.f64 y (*.f64 x x)) x x) x)
(* -1 x)
(neg.f64 x)
(* -1 (* x (+ 1 (* 1/2 (/ y (pow x 2))))))
(*.f64 (fma.f64 (/.f64 #s(literal -1/2 binary64) x) (/.f64 y x) #s(literal -1 binary64)) x)
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (* 1/2 (/ y (pow x 2)))))))
(*.f64 (fma.f64 #s(literal 1/8 binary64) (*.f64 (/.f64 y (pow.f64 x #s(literal 4 binary64))) y) (fma.f64 (/.f64 #s(literal -1/2 binary64) x) (/.f64 y x) #s(literal -1 binary64))) x)
(* -1 (* x (+ 1 (+ (* -1/8 (/ (pow y 2) (pow x 4))) (+ (* 1/16 (/ (pow y 3) (pow x 6))) (* 1/2 (/ y (pow x 2))))))))
(*.f64 (neg.f64 x) (fma.f64 (pow.f64 y #s(literal 3 binary64)) (/.f64 #s(literal 1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (*.f64 #s(literal -1/8 binary64) y) (/.f64 y (pow.f64 x #s(literal 4 binary64))) (fma.f64 (/.f64 y (*.f64 x x)) #s(literal 1/2 binary64) #s(literal 1 binary64)))))
(+ x (* 1/2 (/ y x)))
(fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)
(+ x (* y (+ (* -1/8 (/ y (pow x 3))) (* 1/2 (/ 1 x)))))
(fma.f64 (fma.f64 (/.f64 y (pow.f64 x #s(literal 3 binary64))) #s(literal -1/8 binary64) (/.f64 #s(literal 1/2 binary64) x)) y x)
(+ x (* y (+ (* y (- (* 1/16 (/ y (pow x 5))) (* 1/8 (/ 1 (pow x 3))))) (* 1/2 (/ 1 x)))))
(fma.f64 (fma.f64 (fma.f64 (/.f64 y (pow.f64 x #s(literal 5 binary64))) #s(literal 1/16 binary64) (/.f64 #s(literal -1/8 binary64) (pow.f64 x #s(literal 3 binary64)))) y (/.f64 #s(literal 1/2 binary64) x)) y x)
(* y (+ (sqrt (/ 1 y)) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))
(*.f64 (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))) y)
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)))) y)
(* y (+ (sqrt (/ 1 y)) (+ (* -1/8 (* (pow x 4) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (pow x 6) (sqrt (/ 1 (pow y 7))))) (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3)))))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 6 binary64)) #s(literal 1/16 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 7 binary64)))) (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 (*.f64 x x) #s(literal 1/2 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))))) y)
(* y (+ 1 (/ (pow x 2) y)))
(fma.f64 (/.f64 (*.f64 x x) y) y y)
(* -1 (* (sqrt y) (pow (sqrt -1) 2)))
(sqrt.f64 y)
(* -1 (* y (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))
(*.f64 (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))) y)
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y)))) y)
(* -1 (* y (+ (* -1/8 (* (/ (pow x 4) (pow (sqrt -1) 2)) (sqrt (/ 1 (pow y 5))))) (+ (* 1/16 (* (/ (pow x 6) (pow (sqrt -1) 4)) (sqrt (/ 1 (pow y 7))))) (+ (* 1/2 (* (pow x 2) (sqrt (/ 1 (pow y 3))))) (* (sqrt (/ 1 y)) (pow (sqrt -1) 2)))))))
(*.f64 (fma.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal -1/8 binary64)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 5 binary64)))) (fma.f64 (*.f64 #s(literal -1/16 binary64) (pow.f64 x #s(literal 6 binary64))) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 7 binary64)))) (fma.f64 (*.f64 #s(literal -1/2 binary64) (*.f64 x x)) (sqrt.f64 (/.f64 #s(literal 1 binary64) (pow.f64 y #s(literal 3 binary64)))) (sqrt.f64 (/.f64 #s(literal 1 binary64) y))))) y)
(* -1 (* y (- (* -1 (/ (pow x 2) y)) 1)))
(*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))

rewrite53.0ms (2.1%)

Memory
-17.9MiB live, 39.4MiB allocated; 10ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0722
0922
13122
021020
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 19
Calls
Call 1
Inputs
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
#s(approx (+ (* x x) y) (*.f64 x x))
(*.f64 x x)
Outputs
(*.f64 (pow.f64 #s(approx (+ (* x x) y) (*.f64 x x)) #s(literal 1/4 binary64)) (pow.f64 #s(approx (+ (* x x) y) (*.f64 x x)) #s(literal 1/4 binary64)))
(pow.f64 #s(approx (+ (* x x) y) (*.f64 x x)) #s(literal 1/2 binary64))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
(exp.f64 (*.f64 (log.f64 #s(approx (+ (* x x) y) (*.f64 x x))) #s(literal 1/2 binary64)))
#s(approx (+ (* x x) y) (*.f64 x x))
(*.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)))
(*.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)))
(*.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)))
(*.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 (fabs.f64 x) (fabs.f64 x))
(*.f64 x x)
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (fabs.f64 x) #s(literal 2 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(neg.f64 (*.f64 x (neg.f64 x)))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))

eval13.0ms (0.5%)

Memory
23.9MiB live, 23.9MiB allocated; 0ms collecting garbage
Compiler

Compiled 860 to 189 computations (78% saved)

prune4.0ms (0.2%)

Memory
9.7MiB live, 9.7MiB allocated; 0ms collecting garbage
Pruning

6 alts after pruning (0 fresh and 6 done)

PrunedKeptTotal
New44044
Fresh000
Picked011
Done055
Total44650
Accuracy
100.0%
Counts
50 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
70.6%
(sqrt.f64 (fma.f64 x x y))
60.8%
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
41.9%
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
71.7%
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
31.4%
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
1.2%
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
Compiler

Compiled 132 to 73 computations (44.7% saved)

regimes48.0ms (1.9%)

Memory
-10.8MiB live, 33.6MiB allocated; 7ms collecting garbage
Counts
7 → 2
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
(sqrt.f64 (fma.f64 x x y))
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
(sqrt.f64 (+.f64 (*.f64 x x) y))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 (neg.f64 y) (fma.f64 (neg.f64 x) (/.f64 x y) #s(literal -1 binary64)))))
Outputs
(sqrt.f64 (fma.f64 x x y))
#s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x))
Calls

5 calls:

37.0ms
(sqrt.f64 (+.f64 (*.f64 x x) y))
3.0ms
x
3.0ms
y
3.0ms
(+.f64 (*.f64 x x) y)
2.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
100.0%2(*.f64 x x)
100.0%2(+.f64 (*.f64 x x) y)
100.0%2(sqrt.f64 (+.f64 (*.f64 x x) y))
100.0%2x
86.2%2y
Compiler

Compiled 16 to 16 computations (0% saved)

regimes10.0ms (0.4%)

Memory
25.7MiB live, 25.7MiB allocated; 0ms collecting garbage
Counts
4 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
(sqrt.f64 (fma.f64 x x y))
Outputs
(sqrt.f64 (fma.f64 x x y))
Calls

5 calls:

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

Compiled 16 to 16 computations (0% saved)

regimes12.0ms (0.5%)

Memory
-23.3MiB live, 22.3MiB allocated; 6ms collecting garbage
Counts
3 → 2
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
Outputs
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
(sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x)))
Calls

5 calls:

5.0ms
(sqrt.f64 (+.f64 (*.f64 x x) y))
2.0ms
(+.f64 (*.f64 x x) y)
2.0ms
x
2.0ms
y
1.0ms
(*.f64 x x)
Results
AccuracySegmentsBranch
60.0%2x
58.0%2y
60.0%2(*.f64 x x)
45.0%2(+.f64 (*.f64 x x) y)
45.0%2(sqrt.f64 (+.f64 (*.f64 x x) y))
Compiler

Compiled 16 to 16 computations (0% saved)

regimes7.0ms (0.3%)

Memory
19.0MiB live, 19.0MiB allocated; 0ms collecting garbage
Counts
2 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
Outputs
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
Calls

5 calls:

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

Compiled 16 to 16 computations (0% saved)

regimes9.0ms (0.4%)

Memory
-24.0MiB live, 20.4MiB allocated; 6ms collecting garbage
Accuracy

Total 0.0b remaining (0%)

Threshold costs 0b (0%)

Counts
1 → 1
Calls
Call 1
Inputs
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
Outputs
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
Calls

5 calls:

4.0ms
(*.f64 x x)
1.0ms
x
1.0ms
y
1.0ms
(sqrt.f64 (+.f64 (*.f64 x x) y))
1.0ms
(+.f64 (*.f64 x x) y)
Results
AccuracySegmentsBranch
1.2%1x
1.2%1y
1.2%1(*.f64 x x)
1.2%1(+.f64 (*.f64 x x) y)
1.2%1(sqrt.f64 (+.f64 (*.f64 x x) y))
Compiler

Compiled 16 to 16 computations (0% saved)

bsearch2.0ms (0.1%)

Memory
4.9MiB live, 4.9MiB allocated; 0ms collecting garbage
Algorithm
binary-search
Stop Event
predicate-same
Steps
TimeLeftRight
1.0ms
1.336951901645307e+139
1.1345771939687099e+141
Samples
1.0ms16×0valid
Compiler

Compiled 27 to 25 computations (7.4% saved)

Precisions
Click to see histograms. Total time spent on operations: 0.0ms
ival-true: 0.0ms (0% of total)
ival-add: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
ival-mult: 0.0ms (0% of total)
ival-sqrt: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

bsearch0.0ms (0%)

Memory
0.8MiB live, 0.8MiB allocated; 0ms collecting garbage
Algorithm
left-value
Steps
TimeLeftRight
0.0ms
5.49521539324436e-164
1.3083645849342579e-148
Compiler

Compiled 9 to 10 computations (-11.1% saved)

simplify11.0ms (0.5%)

Memory
21.0MiB live, 21.0MiB allocated; 0ms collecting garbage
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02470
13370
25370
38070
49570
Stop Event
saturated
Calls
Call 1
Inputs
(if (<=.f64 x #s(literal 20000000000000000656831249784098521579740251327192233910246268525174940137975759910880026312554548253678990095686448711572969812684229836800 binary64)) (sqrt.f64 (fma.f64 x x y)) #s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)))
(sqrt.f64 (fma.f64 x x y))
(if (<=.f64 (*.f64 x x) #s(literal 6483618076376551/64836180763765514976756372870174392984569472378788076562432145776416450178326689787495422639798496785753091978301574830974924235553308989185732419283030682610330965678148586307584 binary64)) #s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y)) (sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x))))
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))
Outputs
(if (<=.f64 x #s(literal 20000000000000000656831249784098521579740251327192233910246268525174940137975759910880026312554548253678990095686448711572969812684229836800 binary64)) (sqrt.f64 (fma.f64 x x y)) #s(approx (sqrt (+ (* x x) y)) (fma.f64 (/.f64 #s(literal 1/2 binary64) x) y x)))
(sqrt.f64 (fma.f64 x x y))
(if (<=.f64 (*.f64 x x) #s(literal 6483618076376551/64836180763765514976756372870174392984569472378788076562432145776416450178326689787495422639798496785753091978301574830974924235553308989185732419283030682610330965678148586307584 binary64)) #s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y)) (sqrt.f64 #s(approx (+ (* x x) y) (*.f64 x x))))
#s(approx (sqrt (+ (* x x) y)) (sqrt.f64 y))
#s(approx (sqrt (+ (* x x) y)) (neg.f64 x))

derivations148.0ms (5.8%)

Memory
-27.5MiB live, 114.0MiB allocated; 25ms collecting garbage
Stop Event
done
Compiler

Compiled 70 to 24 computations (65.7% saved)

preprocess64.0ms (2.5%)

Memory
3.9MiB live, 92.3MiB allocated; 50ms collecting garbage
Compiler

Compiled 254 to 118 computations (53.5% saved)

end0.0ms (0%)

Memory
0.0MiB live, 0.0MiB allocated; 0ms collecting garbage

Profiling

Loading profile data...