Linear.Matrix:fromQuaternion from linear-1.19.1.3, A

Time bar (total: 4.5s)

start0.0ms (0%)

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

analyze0.0ms (0%)

Memory
0.9MiB live, 0.9MiB allocated; 0ms collecting garbage
Algorithm
search
Search
ProbabilityValidUnknownPreconditionInfiniteDomainCan'tIter
0%0%99.9%0.1%0%0%0%0
100%99.9%0%0.1%0%0%0%1
Compiler

Compiled 11 to 9 computations (18.2% saved)

sample1.2s (25.7%)

Memory
4.5MiB live, 1 345.0MiB allocated; 296ms collecting garbage
Samples
687.0ms8 256×0valid
Precisions
Click to see histograms. Total time spent on operations: 259.0ms
ival-mult: 207.0ms (79.9% of total)
ival-sub: 36.0ms (13.9% of total)
ival-true: 6.0ms (2.3% of total)
exact: 5.0ms (1.9% of total)
ival-assert: 3.0ms (1.2% of total)
adjust: 2.0ms (0.8% of total)
Bogosity

explain100.0ms (2.2%)

Memory
-31.1MiB live, 161.4MiB allocated; 21ms collecting garbage
FPErrors
Click to see full error table
Ground TruthOverpredictionsExampleUnderpredictionsExampleSubexpression
120-0-(-.f64 (*.f64 x x) (*.f64 x y))
00-0-#s(literal 2 binary64)
00-0-y
00-0-(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
00-0-(*.f64 x x)
00-0-(*.f64 x y)
00-0-x
Explanations
Click to see full explanations table
OperatorSubexpressionExplanationCount
-.f64(-.f64 (*.f64 x x) (*.f64 x y))nan-rescue120
(*.f64 x x)overflow60
(*.f64 x y)overflow25
Confusion
Predicted +Predicted -
+120
-0244
Precision
1.0
Recall
1.0
Confusion?
Predicted +Predicted MaybePredicted -
+1200
-00244
Precision?
1.0
Recall?
1.0
Freqs
test
numberfreq
0244
112
Total Confusion?
Predicted +Predicted MaybePredicted -
+100
-000
Precision?
1.0
Recall?
1.0
Samples
30.0ms512×0valid
Compiler

Compiled 63 to 25 computations (60.3% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-mult: 13.0ms (82.6% of total)
ival-sub: 2.0ms (12.7% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

preprocess255.0ms (5.6%)

Memory
32.3MiB live, 163.2MiB allocated; 19ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01939
16735
222235
374335
4204535
5371435
6464535
7521335
8565935
9601935
10628535
11729635
079
0117
1247
2737
32547
46727
513667
626837
742067
853297
957257
1058067
1159237
1259267
1359267
1462127
1564927
1666927
066927
Stop Event
iter limit
saturated
iter limit
node limit
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
Outputs
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 (*.f64 (-.f64 y x) #s(literal -2 binary64)) x)
Compiler

Compiled 9 to 7 computations (22.2% saved)

eval0.0ms (0%)

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

Compiled 0 to 2 computations (-∞% saved)

prune0.0ms (0%)

Memory
1.4MiB live, 1.4MiB allocated; 0ms collecting garbage
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.3%
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 9 to 7 computations (22.2% saved)

simplify163.0ms (3.6%)

Memory
-9.4MiB live, 94.1MiB allocated; 10ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x y)
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
cost-diff2
(-.f64 (*.f64 x x) (*.f64 x y))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
0725
01121
12421
27321
325421
467221
5136621
6268321
7420621
8532921
9572521
10580621
11592321
12592621
13592621
14621221
15649221
16669221
0669221
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
#s(literal 2 binary64)
(-.f64 (*.f64 x x) (*.f64 x y))
(*.f64 x x)
x
(*.f64 x y)
y
Outputs
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 (*.f64 (-.f64 y x) #s(literal -2 binary64)) x)
#s(literal 2 binary64)
(-.f64 (*.f64 x x) (*.f64 x y))
(*.f64 (-.f64 x y) x)
(*.f64 x x)
x
(*.f64 x y)
(*.f64 y x)
y

localize54.0ms (1.2%)

Memory
-26.4MiB live, 20.1MiB allocated; 4ms collecting garbage
Localize:

Found 4 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 x y)
accuracy0.0
(*.f64 x x)
accuracy0.00390625
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
accuracy2.699206364981235
(-.f64 (*.f64 x x) (*.f64 x y))
Samples
13.0ms256×0valid
Compiler

Compiled 27 to 9 computations (66.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 6.0ms
ival-mult: 5.0ms (80.7% of total)
ival-sub: 1.0ms (16.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series6.0ms (0.1%)

Memory
8.9MiB live, 8.9MiB allocated; 0ms collecting garbage
Counts
4 → 15
Calls
Call 1
Inputs
(-.f64 (*.f64 x x) (*.f64 x y))
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 x x)
(*.f64 x y)
Outputs
(* -1 (* x y))
(* x (- x y))
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(pow x 2)
(* x y)
(* (pow x 2) (+ 1 (* -1 (/ y x))))
(* 2 (pow x 2))
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(+ (* -1 (* x y)) (pow x 2))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(* y (- (/ (pow x 2) y) x))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) (* -1 x))))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
Calls

6 calls:

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

simplify136.0ms (3%)

Memory
-6.5MiB live, 100.5MiB allocated; 17ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
04290
114080
244680
3153380
4424280
5679880
0807880
Stop Event
iter limit
node limit
Counts
15 → 15
Calls
Call 1
Inputs
(* -1 (* x y))
(* x (- x y))
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(pow x 2)
(* x y)
(* (pow x 2) (+ 1 (* -1 (/ y x))))
(* 2 (pow x 2))
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(+ (* -1 (* x y)) (pow x 2))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(* y (- (/ (pow x 2) y) x))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) (* -1 x))))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
Outputs
(* -1 (* x y))
(*.f64 (neg.f64 y) x)
(* x (- x y))
(*.f64 (-.f64 x y) x)
(* -2 (* x y))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(* x (+ (* -2 y) (* 2 x)))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(* x y)
(*.f64 y x)
(* (pow x 2) (+ 1 (* -1 (/ y x))))
(*.f64 (-.f64 x y) x)
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(+ (* -1 (* x y)) (pow x 2))
(*.f64 (-.f64 x y) x)
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(* y (- (/ (pow x 2) y) x))
(*.f64 (-.f64 x y) x)
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(* -1 (* y (- (* -1 (/ (pow x 2) y)) (* -1 x))))
(*.f64 (-.f64 x y) x)
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))

rewrite137.0ms (3%)

Memory
15.0MiB live, 150.9MiB allocated; 11ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
0722
01118
13818
231012
3459212
0821912
Stop Event
iter limit
node limit
iter limit
Counts
4 → 100
Calls
Call 1
Inputs
(-.f64 (*.f64 x x) (*.f64 x y))
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
(*.f64 x x)
(*.f64 x y)
Outputs
(*.f64 (/.f64 (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64)) (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))
(*.f64 (/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (pow.f64 (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64))) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))
(*.f64 (/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (fma.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y (+.f64 y x)) #s(literal 3 binary64)) (pow.f64 x #s(literal 12 binary64)))) (fma.f64 (*.f64 (*.f64 (*.f64 y x) x) (-.f64 y x)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (pow.f64 x #s(literal 8 binary64))))
(*.f64 (/.f64 (*.f64 (+.f64 y x) x) (-.f64 x y)) (/.f64 (*.f64 (+.f64 y x) x) x))
(*.f64 (/.f64 (*.f64 (+.f64 y x) x) x) (/.f64 (*.f64 (+.f64 y x) x) (-.f64 x y)))
(*.f64 (/.f64 (*.f64 (+.f64 y x) x) x) (/.f64 (*.f64 (+.f64 y x) x) (+.f64 y x)))
(*.f64 (+.f64 y x) x)
(*.f64 #s(literal 1 binary64) (*.f64 (+.f64 y x) x))
(*.f64 (-.f64 x y) x)
(*.f64 (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (/.f64 (*.f64 (+.f64 y x) x) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(*.f64 (*.f64 (+.f64 y x) x) (/.f64 (*.f64 (+.f64 y x) x) (*.f64 (+.f64 y x) x)))
(*.f64 x (-.f64 x (neg.f64 y)))
(*.f64 x (+.f64 x (neg.f64 y)))
(*.f64 x (neg.f64 (+.f64 y x)))
(*.f64 x (+.f64 y x))
(*.f64 x (-.f64 x y))
(/.f64 (/.f64 (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64)) (-.f64 x y)) x)
(/.f64 (*.f64 (*.f64 (+.f64 y x) (-.f64 x y)) x) (+.f64 y x))
(/.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) x) (fma.f64 y (+.f64 y x) (*.f64 x x)))
(/.f64 (*.f64 x (*.f64 (+.f64 y x) (-.f64 x y))) (+.f64 y x))
(/.f64 (*.f64 x (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64)))) (fma.f64 y (+.f64 y x) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) #s(literal 2 binary64)) (pow.f64 (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))) #s(literal 2 binary64))) (*.f64 (+.f64 y x) x))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64)) (pow.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64))) (*.f64 (+.f64 y x) x))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (*.f64 (+.f64 y x) x))
(/.f64 (-.f64 (/.f64 (pow.f64 x #s(literal 9 binary64)) (pow.f64 (+.f64 y x) #s(literal 3 binary64))) (pow.f64 (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))) #s(literal 3 binary64))) (+.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) #s(literal 2 binary64)) (+.f64 (pow.f64 (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))) #s(literal 2 binary64)) (*.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x)))))))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 3 binary64)) (pow.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 3 binary64))) (+.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64)) (+.f64 (pow.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64)) (*.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))))))
(/.f64 (/.f64 (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64)) x) (+.f64 y x))
(/.f64 (/.f64 (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64)) x) (-.f64 x y))
(/.f64 (-.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (+.f64 y x) x)) (*.f64 (*.f64 (+.f64 y x) x) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))) (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64)))
(/.f64 (-.f64 (*.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (*.f64 (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (pow.f64 (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 12 binary64)) (pow.f64 (*.f64 y x) #s(literal 6 binary64))) (*.f64 (pow.f64 (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64)) (*.f64 (+.f64 y x) x)))
(/.f64 (-.f64 (pow.f64 x #s(literal 12 binary64)) (pow.f64 (*.f64 y x) #s(literal 6 binary64))) (*.f64 (fma.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 y (+.f64 y x)) #s(literal 2 binary64)) (pow.f64 x #s(literal 8 binary64))) (*.f64 (+.f64 y x) x)))
(/.f64 (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 4 binary64)) (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 3 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 18 binary64)) (pow.f64 (*.f64 y x) #s(literal 9 binary64))) (*.f64 (+.f64 (fma.f64 (pow.f64 x #s(literal 9 binary64)) (pow.f64 y #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 6 binary64))) (pow.f64 x #s(literal 12 binary64))) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (pow.f64 x #s(literal 3 binary64)) y))))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))
(/.f64 (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64)) (*.f64 (+.f64 y x) x))
(neg.f64 (*.f64 (+.f64 y x) x))
(fma.f64 (exp.f64 (log.f64 y)) x (*.f64 x x))
(fma.f64 (pow.f64 y #s(literal 1 binary64)) x (*.f64 x x))
(fma.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64))) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y (+.f64 y x)) #s(literal 3 binary64)) (pow.f64 x #s(literal 12 binary64)))) (fma.f64 (*.f64 (*.f64 (*.f64 y x) x) (-.f64 y x)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (pow.f64 x #s(literal 8 binary64))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 (+.f64 y x) x) #s(literal 2 binary64))) (*.f64 (+.f64 y x) x) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 (neg.f64 y) x (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (/.f64 x (*.f64 (+.f64 y x) x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 #s(literal 1 binary64) (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) (/.f64 (*.f64 x x) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 y x (*.f64 x x))
(fma.f64 (*.f64 x x) (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (*.f64 x x) (/.f64 (*.f64 x x) (*.f64 (+.f64 y x) x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 (*.f64 x x) (/.f64 x (+.f64 y x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 x (exp.f64 (log.f64 y)) (*.f64 x x))
(fma.f64 x (pow.f64 y #s(literal 1 binary64)) (*.f64 x x))
(fma.f64 x (/.f64 (pow.f64 x #s(literal 3 binary64)) (*.f64 (+.f64 y x) x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 x (/.f64 (*.f64 x x) (+.f64 y x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(fma.f64 x (neg.f64 y) (*.f64 x x))
(fma.f64 x y (*.f64 x x))
(fma.f64 x x (*.f64 (neg.f64 (neg.f64 y)) x))
(fma.f64 x x (*.f64 y x))
(-.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(-.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(-.f64 (*.f64 y x) (*.f64 x x))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 y)) x))
(-.f64 (*.f64 x x) (*.f64 y x))
(+.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) (*.f64 x (/.f64 (*.f64 y y) (+.f64 y x))))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 y x) x) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (*.f64 y x) (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 y)) x))
(+.f64 (*.f64 x x) (*.f64 y x))
#s(literal 0 binary64)
(*.f64 x x)
(pow.f64 (exp.f64 #s(literal 2 binary64)) (log.f64 x))
(pow.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 1/2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(/.f64 (pow.f64 x #s(literal 3 binary64)) x)
(neg.f64 (*.f64 x x))
(sqrt.f64 (pow.f64 x #s(literal 4 binary64)))
(fabs.f64 (*.f64 x x))
(exp.f64 (-.f64 (*.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)) #s(literal 3/2 binary64)) (log.f64 x)))
(exp.f64 (-.f64 (*.f64 (log.f64 x) #s(literal 3 binary64)) (log.f64 x)))
(exp.f64 (/.f64 (*.f64 #s(literal 4 binary64) (log.f64 x)) #s(literal 2 binary64)))
(exp.f64 (*.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)) #s(literal 1 binary64)))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
(*.f64 (exp.f64 (log.f64 y)) x)
(*.f64 (pow.f64 y #s(literal 1 binary64)) x)
(*.f64 (neg.f64 y) x)
(*.f64 y x)
(*.f64 x (exp.f64 (log.f64 y)))
(*.f64 x (pow.f64 y #s(literal 1 binary64)))
(*.f64 x (neg.f64 y))
(*.f64 x y)
(pow.f64 (*.f64 y x) #s(literal 1 binary64))
(neg.f64 (*.f64 y x))
(exp.f64 (*.f64 (log.f64 (*.f64 y x)) #s(literal 1 binary64)))
(exp.f64 (log.f64 (*.f64 y x)))
(+.f64 (cosh.f64 (log.f64 (*.f64 y x))) (sinh.f64 (log.f64 (*.f64 y x))))

eval12.0ms (0.3%)

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

Compiled 2 073 to 383 computations (81.5% saved)

prune25.0ms (0.6%)

Memory
-46.2MiB live, 10.0MiB allocated; 6ms collecting garbage
Pruning

5 alts after pruning (4 fresh and 1 done)

PrunedKeptTotal
New1034107
Fresh000
Picked011
Done000
Total1035108
Accuracy
100.0%
Counts
108 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.3%
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
100.0%
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
57.3%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
53.8%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
9.3%
#s(literal 0 binary64)
Compiler

Compiled 47 to 38 computations (19.1% saved)

simplify170.0ms (3.7%)

Memory
21.3MiB live, 67.7MiB allocated; 3ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
cost-diff0
(-.f64 x y)
cost-diff0
(*.f64 (-.f64 x y) x)
cost-diff0
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
cost-diff0
(*.f64 x x)
cost-diff0
(*.f64 (*.f64 x x) #s(literal 2 binary64))
cost-diff0
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
cost-diff0
(*.f64 y x)
cost-diff0
(*.f64 #s(literal -2 binary64) (*.f64 y x))
cost-diff0
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01870
02566
14666
211566
331266
476866
5152866
6296466
7462066
8561566
9603366
10608666
11612166
12613866
13613866
14641066
15668066
16688066
0688066
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
#s(literal -2 binary64)
(*.f64 y x)
y
x
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
#s(literal 2 binary64)
(*.f64 (-.f64 x y) x)
(-.f64 x y)
x
y
Outputs
#s(literal 0 binary64)
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 #s(literal -2 binary64) y) x))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(*.f64 (*.f64 #s(literal -2 binary64) y) x)
#s(literal -2 binary64)
(*.f64 y x)
y
x
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
x
#s(literal 2 binary64)
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
(*.f64 (*.f64 (-.f64 y x) #s(literal -2 binary64)) x)
#s(literal 2 binary64)
(*.f64 (-.f64 x y) x)
(-.f64 x y)
x
y

localize58.0ms (1.3%)

Memory
-26.3MiB live, 20.2MiB allocated; 4ms collecting garbage
Localize:

Found 9 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(-.f64 x y)
accuracy0.00390625
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
accuracy0.0078125
(*.f64 (-.f64 x y) x)
accuracy0.0
(*.f64 x x)
accuracy0.0078125
(*.f64 (*.f64 x x) #s(literal 2 binary64))
accuracy27.326977696445528
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
accuracy0.0
(*.f64 y x)
accuracy0.00390625
(*.f64 #s(literal -2 binary64) (*.f64 y x))
accuracy29.581204567485074
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
Samples
24.0ms256×0valid
Compiler

Compiled 60 to 17 computations (71.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 14.0ms
ival-mult: 11.0ms (77.1% of total)
ival-sub: 2.0ms (14% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series9.0ms (0.2%)

Memory
4.5MiB live, 4.5MiB allocated; 0ms collecting garbage
Counts
9 → 23
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(*.f64 y x)
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
(*.f64 (-.f64 x y) x)
(-.f64 x y)
Outputs
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(* x y)
(* 2 (pow x 2))
(pow x 2)
(* -1 (* x y))
(* x (+ x (* -1 y)))
(* -1 y)
(- x y)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(* (pow x 2) (+ 1 (* -1 (/ y x))))
x
(* x (+ 1 (* -1 (/ y x))))
(* -1 (* x (- (/ y x) 1)))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(+ (* -1 (* x y)) (pow x 2))
(+ x (* -1 y))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* y (+ (* -1 x) (/ (pow x 2) y)))
(* y (- (/ x y) 1))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
(* -1 (* y (+ x (* -1 (/ (pow x 2) y)))))
(* -1 (* y (+ 1 (* -1 (/ x y)))))
Calls

6 calls:

TimeVariablePointExpression
2.0ms
y
@0
((* 2 (- (* x x) (* x y))) (* -2 (* y x)) (* y x) (* 2 (- (* x x) (* x y))) (* (* x x) 2) (* x x) (* 2 (* (- x y) x)) (* (- x y) x) (- x y))
2.0ms
x
@-inf
((* 2 (- (* x x) (* x y))) (* -2 (* y x)) (* y x) (* 2 (- (* x x) (* x y))) (* (* x x) 2) (* x x) (* 2 (* (- x y) x)) (* (- x y) x) (- x y))
2.0ms
x
@inf
((* 2 (- (* x x) (* x y))) (* -2 (* y x)) (* y x) (* 2 (- (* x x) (* x y))) (* (* x x) 2) (* x x) (* 2 (* (- x y) x)) (* (- x y) x) (- x y))
1.0ms
x
@0
((* 2 (- (* x x) (* x y))) (* -2 (* y x)) (* y x) (* 2 (- (* x x) (* x y))) (* (* x x) 2) (* x x) (* 2 (* (- x y) x)) (* (- x y) x) (- x y))
1.0ms
y
@-inf
((* 2 (- (* x x) (* x y))) (* -2 (* y x)) (* y x) (* 2 (- (* x x) (* x y))) (* (* x x) 2) (* x x) (* 2 (* (- x y) x)) (* (- x y) x) (- x y))

simplify191.0ms (4.2%)

Memory
6.7MiB live, 145.4MiB allocated; 17ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
055122
1200101
2614101
32008101
44965101
57148101
08042101
Stop Event
iter limit
node limit
Counts
23 → 22
Calls
Call 1
Inputs
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(* x y)
(* 2 (pow x 2))
(pow x 2)
(* -1 (* x y))
(* x (+ x (* -1 y)))
(* -1 y)
(- x y)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(* (pow x 2) (+ 1 (* -1 (/ y x))))
x
(* x (+ 1 (* -1 (/ y x))))
(* -1 (* x (- (/ y x) 1)))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(+ (* -1 (* x y)) (pow x 2))
(+ x (* -1 y))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* y (+ (* -1 x) (/ (pow x 2) y)))
(* y (- (/ x y) 1))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
(* -1 (* y (+ x (* -1 (/ (pow x 2) y)))))
(* -1 (* y (+ 1 (* -1 (/ x y)))))
Outputs
(* -2 (* x y))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(* x (+ (* -2 y) (* 2 x)))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(* x y)
(*.f64 y x)
(* 2 (pow x 2))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(pow x 2)
(*.f64 x x)
(* -1 (* x y))
(*.f64 (neg.f64 x) y)
(* x (+ x (* -1 y)))
(*.f64 (-.f64 x y) x)
(* -1 y)
(neg.f64 y)
(- x y)
(-.f64 x y)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(* (pow x 2) (+ 1 (* -1 (/ y x))))
(*.f64 (-.f64 x y) x)
x
(* x (+ 1 (* -1 (/ y x))))
(-.f64 x y)
(* -1 (* x (- (/ y x) 1)))
(-.f64 x y)
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(+ (* -1 (* x y)) (pow x 2))
(*.f64 (-.f64 x y) x)
(+ x (* -1 y))
(-.f64 x y)
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(* y (+ (* -1 x) (/ (pow x 2) y)))
(*.f64 (-.f64 x y) x)
(* y (- (/ x y) 1))
(-.f64 x y)
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
(*.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))
(* -1 (* y (+ x (* -1 (/ (pow x 2) y)))))
(*.f64 (-.f64 x y) x)
(* -1 (* y (+ 1 (* -1 (/ x y)))))
(-.f64 x y)

rewrite249.0ms (5.5%)

Memory
12.2MiB live, 197.4MiB allocated; 32ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01761
02457
17057
245039
3640139
0825439
Stop Event
iter limit
node limit
iter limit
Counts
9 → 213
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(*.f64 y x)
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x x)
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
(*.f64 (-.f64 x y) x)
(-.f64 x y)
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
(*.f64 (*.f64 #s(literal -2 binary64) x) y)
(*.f64 (*.f64 #s(literal -2 binary64) y) x)
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(*.f64 (*.f64 y x) #s(literal -2 binary64))
(*.f64 y (*.f64 #s(literal -2 binary64) x))
(*.f64 x (*.f64 #s(literal -2 binary64) y))
(*.f64 y x)
(*.f64 x y)
(neg.f64 (*.f64 (neg.f64 x) y))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 (*.f64 (neg.f64 x) #s(literal 2 binary64)) (neg.f64 x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 (neg.f64 x) (*.f64 (neg.f64 x) #s(literal 2 binary64)))
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64))) (-.f64 (*.f64 x x) (*.f64 x x)))
(/.f64 (+.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 x #s(literal 6 binary64))) (+.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 x #s(literal 4 binary64)))))
(neg.f64 (fma.f64 (neg.f64 x) x (*.f64 (neg.f64 x) x)))
(neg.f64 (*.f64 (*.f64 (neg.f64 x) #s(literal 2 binary64)) x))
(neg.f64 (*.f64 #s(literal 2 binary64) (*.f64 (neg.f64 x) x)))
(neg.f64 (*.f64 x (*.f64 (neg.f64 x) #s(literal 2 binary64))))
(neg.f64 (*.f64 (*.f64 (neg.f64 x) x) #s(literal 2 binary64)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 x x))
(fma.f64 x x (*.f64 x x))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 x) x))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)))
(*.f64 (neg.f64 x) (neg.f64 x))
(*.f64 x x)
(pow.f64 (exp.f64 (log.f64 x)) #s(literal 2 binary64))
(pow.f64 (*.f64 (neg.f64 x) x) #s(literal 1 binary64))
(pow.f64 (pow.f64 x #s(literal 4 binary64)) #s(literal 1/2 binary64))
(pow.f64 (neg.f64 x) #s(literal 2 binary64))
(pow.f64 (*.f64 x x) #s(literal 1 binary64))
(pow.f64 x #s(literal 2 binary64))
(neg.f64 (*.f64 (neg.f64 x) x))
(sqrt.f64 (pow.f64 x #s(literal 4 binary64)))
(fabs.f64 (*.f64 (neg.f64 x) x))
(fabs.f64 (*.f64 x x))
(exp.f64 (*.f64 (*.f64 (log.f64 (neg.f64 x)) #s(literal 2 binary64)) #s(literal 1 binary64)))
(exp.f64 (*.f64 (/.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)) #s(literal 2 binary64)) #s(literal 2 binary64)))
(exp.f64 (*.f64 (*.f64 (log.f64 x) #s(literal 1 binary64)) #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 (exp.f64 (log.f64 x))) #s(literal 2 binary64)))
(exp.f64 (*.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)) #s(literal 1 binary64)))
(exp.f64 (*.f64 (log.f64 (neg.f64 x)) #s(literal 2 binary64)))
(exp.f64 (*.f64 (log.f64 x) #s(literal 2 binary64)))
(+.f64 (cosh.f64 (*.f64 (log.f64 (neg.f64 x)) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 (neg.f64 x)) #s(literal 2 binary64))))
(+.f64 (cosh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))) (sinh.f64 (*.f64 (log.f64 x) #s(literal 2 binary64))))
#s(literal 0 binary64)
(*.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) x)) (fma.f64 (-.f64 x y) x (*.f64 y y)))
(*.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (*.f64 (+.f64 y x) (*.f64 (-.f64 x y) x))) (+.f64 y x))
(*.f64 (/.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) x) (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 2 binary64)))) (-.f64 (*.f64 (-.f64 x y) x) (*.f64 y y)))
(*.f64 (/.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) x) (+.f64 (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (fma.f64 (*.f64 (+.f64 y x) y) (-.f64 (*.f64 (+.f64 y x) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(*.f64 (/.f64 (*.f64 (+.f64 y x) (*.f64 (-.f64 x y) x)) (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 y (-.f64 y x) (*.f64 x x)))
(*.f64 (/.f64 (*.f64 (+.f64 y x) (*.f64 (-.f64 x y) x)) (*.f64 (+.f64 y x) (-.f64 x y))) (-.f64 x y))
(*.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))
(*.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))) (*.f64 (-.f64 x y) x))
(*.f64 (/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (pow.f64 (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64))) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))
(*.f64 (/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (fma.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 3 binary64)) (pow.f64 x #s(literal 12 binary64)))) (fma.f64 (*.f64 (*.f64 (*.f64 x x) y) (-.f64 y x)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (pow.f64 x #s(literal 8 binary64))))
(*.f64 (/.f64 (*.f64 (-.f64 x y) x) (neg.f64 x)) (/.f64 (*.f64 (-.f64 x y) x) (+.f64 y x)))
(*.f64 (/.f64 (*.f64 (-.f64 x y) x) (-.f64 x y)) (/.f64 (*.f64 (-.f64 x y) x) x))
(*.f64 (/.f64 (*.f64 (-.f64 x y) x) x) (/.f64 (*.f64 (-.f64 x y) x) (-.f64 x y)))
(*.f64 (/.f64 (*.f64 (-.f64 x y) x) x) (/.f64 (*.f64 (-.f64 x y) x) (+.f64 y x)))
(*.f64 (neg.f64 (-.f64 x y)) x)
(*.f64 (+.f64 y x) (neg.f64 x))
(*.f64 (+.f64 y x) x)
(*.f64 (*.f64 (+.f64 y x) (-.f64 x y)) (/.f64 x (+.f64 y x)))
(*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (/.f64 x (fma.f64 (-.f64 x y) x (*.f64 y y))))
(*.f64 (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (/.f64 (*.f64 (-.f64 x y) x) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(*.f64 (neg.f64 x) (+.f64 y x))
(*.f64 (neg.f64 x) (-.f64 x y))
(*.f64 (*.f64 (-.f64 x y) x) (/.f64 (*.f64 (-.f64 x y) x) (*.f64 (-.f64 x y) x)))
(*.f64 (-.f64 x y) (neg.f64 x))
(*.f64 (-.f64 x y) x)
(*.f64 x (-.f64 x (neg.f64 y)))
(*.f64 x (+.f64 x (neg.f64 y)))
(*.f64 x (neg.f64 (-.f64 x y)))
(*.f64 x (neg.f64 (+.f64 y x)))
(*.f64 x (+.f64 y x))
(*.f64 x (-.f64 x y))
(/.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (neg.f64 x)) (+.f64 y x))
(/.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (-.f64 x y)) x)
(/.f64 (*.f64 (fma.f64 (neg.f64 x) x (*.f64 y y)) x) (neg.f64 (+.f64 y x)))
(/.f64 (*.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64)))) x) (neg.f64 (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (*.f64 x (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 y (-.f64 y x) (*.f64 x x)))
(/.f64 (*.f64 x (fma.f64 (neg.f64 x) x (*.f64 y y))) (neg.f64 (+.f64 y x)))
(/.f64 (*.f64 x (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))))) (neg.f64 (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (*.f64 (neg.f64 x) (fma.f64 (neg.f64 x) x (*.f64 y y))) (neg.f64 (+.f64 y x)))
(/.f64 (*.f64 (neg.f64 x) (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))))) (neg.f64 (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (*.f64 (neg.f64 x) (*.f64 (+.f64 y x) (-.f64 x y))) (+.f64 y x))
(/.f64 (*.f64 (neg.f64 x) (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64)))) (fma.f64 (-.f64 x y) x (*.f64 y y)))
(/.f64 (-.f64 (pow.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) x) (+.f64 y x)) #s(literal 2 binary64)) (pow.f64 (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)) #s(literal 2 binary64))) (*.f64 (-.f64 x y) x))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64)) (pow.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64))) (*.f64 (-.f64 x y) x))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (-.f64 (*.f64 (neg.f64 x) y) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (pow.f64 x #s(literal 4 binary64))) (-.f64 (*.f64 y x) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) x) (+.f64 y x)) #s(literal 3 binary64)) (pow.f64 (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)) #s(literal 3 binary64))) (+.f64 (pow.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) x) (+.f64 y x)) #s(literal 2 binary64)) (+.f64 (pow.f64 (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)) #s(literal 2 binary64)) (*.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) x) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x))))))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 3 binary64)) (pow.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 3 binary64))) (+.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64)) (+.f64 (pow.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) #s(literal 2 binary64)) (*.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))))))
(/.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) x) (+.f64 y x))
(/.f64 (/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) x) (-.f64 x y))
(/.f64 (neg.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) x)) (neg.f64 (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (neg.f64 (*.f64 (+.f64 y x) (*.f64 (-.f64 x y) x))) (neg.f64 (+.f64 y x)))
(/.f64 (-.f64 (*.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (-.f64 x y) x)) (*.f64 (*.f64 (-.f64 x y) x) (pow.f64 (*.f64 y x) #s(literal 2 binary64)))) (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)))
(/.f64 (-.f64 (*.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (*.f64 (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (pow.f64 (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64)))
(/.f64 (*.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) x) (fma.f64 (-.f64 x y) x (*.f64 y y)))
(/.f64 (*.f64 (+.f64 y x) (*.f64 (-.f64 x y) x)) (+.f64 y x))
(/.f64 (*.f64 (+.f64 y x) (*.f64 (-.f64 x y) x)) (-.f64 x y))
(/.f64 (pow.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) #s(literal 2 binary64)) (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 3 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 12 binary64)) (pow.f64 (*.f64 y x) #s(literal 6 binary64))) (*.f64 (fma.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 2 binary64)) (pow.f64 x #s(literal 8 binary64))) (*.f64 (-.f64 x y) x)))
(/.f64 (-.f64 (pow.f64 x #s(literal 12 binary64)) (pow.f64 (*.f64 y x) #s(literal 6 binary64))) (*.f64 (pow.f64 (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64)) (*.f64 (-.f64 x y) x)))
(/.f64 (-.f64 (pow.f64 x #s(literal 18 binary64)) (pow.f64 (*.f64 y x) #s(literal 9 binary64))) (*.f64 (+.f64 (pow.f64 x #s(literal 12 binary64)) (fma.f64 (pow.f64 x #s(literal 9 binary64)) (pow.f64 y #s(literal 3 binary64)) (pow.f64 (*.f64 y x) #s(literal 6 binary64)))) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(/.f64 (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64)) (*.f64 (-.f64 x y) x))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) (-.f64 (pow.f64 x #s(literal 4 binary64)) (*.f64 (pow.f64 x #s(literal 3 binary64)) y))))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))))
(neg.f64 (fma.f64 y x (*.f64 (neg.f64 x) x)))
(neg.f64 (fma.f64 (neg.f64 x) x (*.f64 y x)))
(neg.f64 (*.f64 (-.f64 x y) x))
(fma.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) #s(literal 2 binary64))) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 3 binary64)) (pow.f64 x #s(literal 12 binary64)))) (fma.f64 (*.f64 (*.f64 (*.f64 x x) y) (-.f64 y x)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (pow.f64 x #s(literal 8 binary64))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64)))) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64))) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 (-.f64 x y) x) #s(literal 2 binary64))) (*.f64 (-.f64 x y) x) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 (*.f64 (neg.f64 x) x) x) (/.f64 (*.f64 (neg.f64 x) x) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) x) (/.f64 (neg.f64 x) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) x) (/.f64 x (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 (neg.f64 x) x) (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 (*.f64 x x) x) (*.f64 x (/.f64 x (+.f64 y x))) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (/.f64 x x) (/.f64 (pow.f64 x #s(literal 3 binary64)) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 (neg.f64 (neg.f64 y)) x))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 (neg.f64 y) (neg.f64 x)))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 (neg.f64 x) y))
(fma.f64 (exp.f64 (log.f64 x)) (exp.f64 (log.f64 x)) (*.f64 y x))
(fma.f64 (*.f64 (neg.f64 x) x) (/.f64 (*.f64 (neg.f64 x) x) (*.f64 (-.f64 x y) x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (neg.f64 y) x (*.f64 (neg.f64 x) x))
(fma.f64 (neg.f64 y) x (*.f64 x x))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (/.f64 (neg.f64 x) (*.f64 (-.f64 x y) x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (pow.f64 x #s(literal 3 binary64)) (/.f64 x (*.f64 (-.f64 x y) x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (pow.f64 x #s(literal 4 binary64)) (/.f64 (*.f64 x x) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (neg.f64 x) (/.f64 (pow.f64 x #s(literal 3 binary64)) (*.f64 (-.f64 x y) x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 (neg.f64 (neg.f64 y)) x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 (neg.f64 y) (neg.f64 x)))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 (neg.f64 x) y))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 y x))
(fma.f64 (neg.f64 x) y (*.f64 (neg.f64 x) x))
(fma.f64 (neg.f64 x) y (*.f64 x x))
(fma.f64 (neg.f64 x) x (*.f64 (neg.f64 x) y))
(fma.f64 (*.f64 x x) (/.f64 (pow.f64 x #s(literal 4 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(fma.f64 (*.f64 x x) (/.f64 (*.f64 x x) (*.f64 (-.f64 x y) x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 y (neg.f64 x) (*.f64 (neg.f64 x) x))
(fma.f64 y (neg.f64 x) (*.f64 x x))
(fma.f64 y x (*.f64 x x))
(fma.f64 x (/.f64 (pow.f64 x #s(literal 3 binary64)) (*.f64 (-.f64 x y) x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(fma.f64 x (neg.f64 y) (*.f64 (neg.f64 x) x))
(fma.f64 x (neg.f64 y) (*.f64 x x))
(fma.f64 x (neg.f64 x) (*.f64 (neg.f64 x) y))
(fma.f64 x y (*.f64 x x))
(fma.f64 x x (*.f64 (neg.f64 (neg.f64 y)) x))
(fma.f64 x x (*.f64 (neg.f64 y) (neg.f64 x)))
(fma.f64 x x (*.f64 (neg.f64 x) y))
(fma.f64 x x (*.f64 y x))
(-.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) x) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(-.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(-.f64 (*.f64 (neg.f64 x) y) (*.f64 (neg.f64 x) x))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 y)) x))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 y) (neg.f64 x)))
(-.f64 (*.f64 x x) (*.f64 (neg.f64 x) y))
(-.f64 (*.f64 x x) (*.f64 y x))
(-.f64 (*.f64 y x) (*.f64 (neg.f64 x) x))
(+.f64 (*.f64 (neg.f64 x) x) (*.f64 (neg.f64 x) y))
(+.f64 (/.f64 (/.f64 (pow.f64 x #s(literal 4 binary64)) x) (+.f64 y x)) (/.f64 (/.f64 (pow.f64 (*.f64 y x) #s(literal 2 binary64)) x) (+.f64 y x)))
(+.f64 (/.f64 (pow.f64 x #s(literal 6 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))) (/.f64 (pow.f64 (*.f64 y x) #s(literal 3 binary64)) (fma.f64 (*.f64 (*.f64 x x) y) (-.f64 y x) (pow.f64 x #s(literal 4 binary64)))))
(+.f64 (*.f64 (neg.f64 x) y) (*.f64 (neg.f64 x) x))
(+.f64 (*.f64 (neg.f64 x) y) (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 (neg.f64 (neg.f64 y)) x))
(+.f64 (*.f64 x x) (*.f64 (neg.f64 y) (neg.f64 x)))
(+.f64 (*.f64 x x) (*.f64 (neg.f64 x) y))
(+.f64 (*.f64 x x) (*.f64 y x))
(+.f64 (*.f64 y x) (*.f64 x x))
(*.f64 (/.f64 (*.f64 (+.f64 y x) (-.f64 x y)) (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 y (-.f64 y x) (*.f64 x x)))
(*.f64 (/.f64 (*.f64 (+.f64 y x) (-.f64 x y)) (*.f64 (+.f64 y x) (-.f64 x y))) (-.f64 x y))
(*.f64 (/.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 2 binary64)))) (-.f64 (*.f64 (-.f64 x y) x) (*.f64 y y)))
(*.f64 (/.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 (+.f64 y x) y) #s(literal 3 binary64)) (pow.f64 x #s(literal 6 binary64)))) (fma.f64 (*.f64 (+.f64 y x) y) (-.f64 (*.f64 (+.f64 y x) y) (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))))
(*.f64 (+.f64 y x) (/.f64 (-.f64 x y) (+.f64 y x)))
(*.f64 (fma.f64 (-.f64 x y) x (*.f64 y y)) (/.f64 (-.f64 x y) (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (-.f64 (pow.f64 (*.f64 x (/.f64 x (+.f64 y x))) #s(literal 2 binary64)) (pow.f64 (*.f64 y (/.f64 y (+.f64 y x))) #s(literal 2 binary64))) (fma.f64 x (/.f64 x (+.f64 y x)) (*.f64 y (/.f64 y (+.f64 y x)))))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) #s(literal 2 binary64)) (pow.f64 (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) #s(literal 2 binary64))) (+.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y)))))
(/.f64 (-.f64 (pow.f64 (*.f64 x (/.f64 x (+.f64 y x))) #s(literal 3 binary64)) (pow.f64 (*.f64 y (/.f64 y (+.f64 y x))) #s(literal 3 binary64))) (+.f64 (pow.f64 (*.f64 x (/.f64 x (+.f64 y x))) #s(literal 2 binary64)) (+.f64 (pow.f64 (*.f64 y (/.f64 y (+.f64 y x))) #s(literal 2 binary64)) (*.f64 (*.f64 x (/.f64 x (+.f64 y x))) (*.f64 y (/.f64 y (+.f64 y x)))))))
(/.f64 (-.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) #s(literal 3 binary64)) (pow.f64 (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) #s(literal 3 binary64))) (+.f64 (pow.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) #s(literal 2 binary64)) (+.f64 (pow.f64 (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) #s(literal 2 binary64)) (*.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y)))))))
(/.f64 (neg.f64 (fma.f64 (neg.f64 x) x (*.f64 y y))) (neg.f64 (neg.f64 (+.f64 y x))))
(/.f64 (neg.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))))) (neg.f64 (neg.f64 (fma.f64 (-.f64 x y) x (*.f64 y y)))))
(/.f64 (-.f64 (*.f64 (*.f64 x x) (+.f64 y x)) (*.f64 (+.f64 y x) (*.f64 y y))) (pow.f64 (+.f64 y x) #s(literal 2 binary64)))
(/.f64 (-.f64 (*.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) (*.f64 (fma.f64 (-.f64 x y) x (*.f64 y y)) (pow.f64 y #s(literal 3 binary64)))) (pow.f64 (fma.f64 (-.f64 x y) x (*.f64 y y)) #s(literal 2 binary64)))
(/.f64 (-.f64 (pow.f64 x #s(literal 4 binary64)) (pow.f64 y #s(literal 4 binary64))) (*.f64 (fma.f64 y y (*.f64 x x)) (+.f64 y x)))
(/.f64 (-.f64 (pow.f64 x #s(literal 9 binary64)) (pow.f64 y #s(literal 9 binary64))) (*.f64 (+.f64 (-.f64 (pow.f64 y #s(literal 6 binary64)) (pow.f64 (*.f64 y x) #s(literal 3 binary64))) (pow.f64 x #s(literal 6 binary64))) (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 6 binary64))) (*.f64 (fma.f64 (*.f64 y y) (fma.f64 y y (*.f64 x x)) (pow.f64 x #s(literal 4 binary64))) (+.f64 y x)))
(/.f64 (-.f64 (pow.f64 x #s(literal 6 binary64)) (pow.f64 y #s(literal 6 binary64))) (*.f64 (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (fma.f64 (neg.f64 x) x (*.f64 y y)) (neg.f64 (+.f64 y x)))
(/.f64 (neg.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64)))) (neg.f64 (fma.f64 (-.f64 x y) x (*.f64 y y))))
(/.f64 (*.f64 (+.f64 y x) (-.f64 x y)) (+.f64 y x))
(/.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 y (-.f64 y x) (*.f64 x x)))
(/.f64 (-.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 y #s(literal 3 binary64))) (fma.f64 (-.f64 x y) x (*.f64 y y)))
(neg.f64 (neg.f64 (-.f64 x y)))
(fma.f64 (/.f64 (*.f64 x x) (+.f64 (pow.f64 y #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 y (-.f64 y x) (*.f64 x x)) (/.f64 (*.f64 (neg.f64 y) y) (+.f64 y x)))
(fma.f64 (/.f64 (*.f64 x x) (*.f64 (+.f64 y x) (-.f64 x y))) (-.f64 x y) (/.f64 (*.f64 (neg.f64 y) y) (+.f64 y x)))
(fma.f64 (neg.f64 x) (/.f64 (neg.f64 x) (+.f64 y x)) (/.f64 (*.f64 (neg.f64 y) y) (+.f64 y x)))
(fma.f64 x (/.f64 x (+.f64 y x)) (/.f64 (*.f64 (neg.f64 y) y) (+.f64 y x)))
(-.f64 (*.f64 x (/.f64 x (+.f64 y x))) (*.f64 y (/.f64 y (+.f64 y x))))
(-.f64 (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))) (/.f64 (pow.f64 y #s(literal 3 binary64)) (fma.f64 (-.f64 x y) x (*.f64 y y))))
(-.f64 (neg.f64 x) y)
(-.f64 x y)
(+.f64 (*.f64 x (/.f64 x (+.f64 y x))) (/.f64 (*.f64 (neg.f64 y) y) (+.f64 y x)))

eval74.0ms (1.6%)

Memory
-4.2MiB live, 41.5MiB allocated; 4ms collecting garbage
Compiler

Compiled 4 568 to 758 computations (83.4% saved)

prune6.0ms (0.1%)

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

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New2201221
Fresh000
Picked134
Done011
Total2215226
Accuracy
100.0%
Counts
226 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.3%
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
100.0%
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
57.3%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
53.8%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
9.3%
#s(literal 0 binary64)
Compiler

Compiled 47 to 38 computations (19.1% saved)

simplify197.0ms (4.3%)

Memory
-13.4MiB live, 90.6MiB allocated; 29ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
cost-diff0
(*.f64 x #s(literal 2 binary64))
cost-diff0
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
cost-diff0
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
01025
01223
12823
27923
324923
466523
5135923
6267823
7420523
8532623
9572223
10580323
11592023
12592323
13592323
14620923
15648923
16668923
0668923
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x #s(literal 2 binary64))
x
#s(literal 2 binary64)

localize21.0ms (0.5%)

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

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
accuracy0.0
(*.f64 x #s(literal 2 binary64))
accuracy27.326977696445528
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
Samples
15.0ms256×0valid
Compiler

Compiled 21 to 11 computations (47.6% saved)

Precisions
Click to see histograms. Total time spent on operations: 9.0ms
ival-mult: 8.0ms (88.4% of total)
ival-sub: 1.0ms (11% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series4.0ms (0.1%)

Memory
4.6MiB live, 4.6MiB allocated; 0ms collecting garbage
Counts
3 → 8
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x #s(literal 2 binary64))
Outputs
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(* 2 (pow x 2))
(* 2 x)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
Calls

6 calls:

TimeVariablePointExpression
1.0ms
x
@-inf
((* 2 (- (* x x) (* x y))) (* (* x 2) x) (* x 2))
1.0ms
x
@0
((* 2 (- (* x x) (* x y))) (* (* x 2) x) (* x 2))
1.0ms
x
@inf
((* 2 (- (* x x) (* x y))) (* (* x 2) x) (* x 2))
0.0ms
y
@-inf
((* 2 (- (* x x) (* x y))) (* (* x 2) x) (* x 2))
0.0ms
y
@inf
((* 2 (- (* x x) (* x y))) (* (* x 2) x) (* x 2))

simplify123.0ms (2.7%)

Memory
10.8MiB live, 101.5MiB allocated; 17ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02758
19148
229648
398448
4381648
5772648
0908248
Stop Event
iter limit
node limit
Counts
8 → 8
Calls
Call 1
Inputs
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(* 2 (pow x 2))
(* 2 x)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
Outputs
(* -2 (* x y))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(* x (+ (* -2 y) (* 2 x)))
(*.f64 (*.f64 (-.f64 y 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))
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))

rewrite160.0ms (3.5%)

Memory
-10.3MiB live, 86.1MiB allocated; 15ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01023
01221
14221
231615
3457715
0822615
Stop Event
iter limit
node limit
iter limit
Counts
3 → 15
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x #s(literal 2 binary64))
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 (*.f64 x x) #s(literal 2 binary64))
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(neg.f64 (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(fma.f64 x x (*.f64 x x))
(+.f64 (*.f64 x x) (*.f64 x x))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) x)
(/.f64 (-.f64 (*.f64 x x) (*.f64 x x)) (-.f64 x x))
(/.f64 (+.f64 (pow.f64 x #s(literal 3 binary64)) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x (-.f64 (*.f64 x x) (*.f64 x x))))
(fma.f64 (pow.f64 (sqrt.f64 x) #s(literal 1 binary64)) (pow.f64 (sqrt.f64 x) #s(literal 1 binary64)) x)
(fma.f64 (sqrt.f64 x) (sqrt.f64 x) x)
(+.f64 x x)

eval2.0ms (0%)

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

Compiled 334 to 66 computations (80.2% saved)

prune2.0ms (0.1%)

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

5 alts after pruning (1 fresh and 4 done)

PrunedKeptTotal
New18119
Fresh000
Picked101
Done044
Total19524
Accuracy
100.0%
Counts
24 → 5
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.3%
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
100.0%
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
57.3%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
53.8%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
9.3%
#s(literal 0 binary64)
Compiler

Compiled 47 to 37 computations (21.3% saved)

simplify152.0ms (3.4%)

Memory
3.7MiB live, 49.5MiB allocated; 4ms collecting garbage
Algorithm
egg-herbie
Localize:

Found 3 expressions of interest:

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

Useful iterations: 0 (0.0ms)

IterNodesCost
01024
01222
12722
27822
327322
471722
5144822
6287722
7455622
8555422
9597622
10602922
11606422
12608122
13608122
14635322
15662322
16682322
0682322
Stop Event
iter limit
saturated
iter limit
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
(+.f64 x x)
x
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
(*.f64 (+.f64 x x) x)
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(+.f64 x x)
(*.f64 x #s(literal 2 binary64))
x

localize29.0ms (0.6%)

Memory
-8.5MiB live, 36.9MiB allocated; 3ms collecting garbage
Localize:

Found 3 expressions of interest:

NewMetricScoreProgram
accuracy0.0
(+.f64 x x)
accuracy0.0
(*.f64 (+.f64 x x) x)
accuracy27.326977696445528
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
Samples
23.0ms256×0valid
Compiler

Compiled 20 to 11 computations (45% saved)

Precisions
Click to see histograms. Total time spent on operations: 16.0ms
ival-add: 9.0ms (54.8% of total)
ival-mult: 6.0ms (36.5% of total)
ival-sub: 1.0ms (6.1% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

series3.0ms (0.1%)

Memory
5.8MiB live, 5.8MiB allocated; 0ms collecting garbage
Counts
3 → 8
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
(+.f64 x x)
Outputs
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(* 2 (pow x 2))
(* 2 x)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
Calls

6 calls:

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

simplify140.0ms (3.1%)

Memory
-9.1MiB live, 133.9MiB allocated; 10ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
02758
19148
229648
398448
4381648
5772648
0908248
Stop Event
iter limit
node limit
Counts
8 → 8
Calls
Call 1
Inputs
(* -2 (* x y))
(* x (+ (* -2 y) (* 2 x)))
(* 2 (pow x 2))
(* 2 x)
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
Outputs
(* -2 (* x y))
(*.f64 #s(literal -2 binary64) (*.f64 y x))
(* x (+ (* -2 y) (* 2 x)))
(*.f64 (*.f64 (-.f64 y 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))
(* (pow x 2) (+ 2 (* -2 (/ y x))))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))
(+ (* -2 (* x y)) (* 2 (pow x 2)))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))
(* y (+ (* -2 x) (* 2 (/ (pow x 2) y))))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))
(* -1 (* y (+ (* -2 (/ (pow x 2) y)) (* 2 x))))
(*.f64 (*.f64 (-.f64 y x) x) #s(literal -2 binary64))

rewrite45.0ms (1%)

Memory
3.9MiB live, 50.5MiB allocated; 2ms collecting garbage
Iterations

Useful iterations: 1 (0.0ms)

IterNodesCost
01023
01219
14817
042217
Stop Event
iter limit
iter limit
iter limit
unsound
iter limit
Counts
3 → 45
Calls
Call 1
Inputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
(*.f64 (+.f64 x x) x)
(+.f64 x x)
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 x #s(literal 2 binary64)))
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 #s(literal 2 binary64) x)
(/.f64 (*.f64 #s(literal 0 binary64) x) #s(literal 0 binary64))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) x) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 x (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 x x #s(literal 0 binary64))))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x #s(literal 0 binary64)))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 x x))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 x x))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 x x))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 x x))
(fma.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 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x #s(literal 0 binary64))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x #s(literal 0 binary64))))
(+.f64 (*.f64 x x) (*.f64 x x))
(+.f64 x x)
(*.f64 (*.f64 x #s(literal 2 binary64)) x)
(*.f64 x (*.f64 x #s(literal 2 binary64)))
(*.f64 x #s(literal 2 binary64))
(*.f64 #s(literal 2 binary64) (*.f64 x x))
(*.f64 #s(literal 2 binary64) x)
(/.f64 (*.f64 #s(literal 0 binary64) x) #s(literal 0 binary64))
(/.f64 (*.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) x) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (*.f64 x (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (fma.f64 x x #s(literal 0 binary64)))
(/.f64 (neg.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64)))) (neg.f64 (fma.f64 x x #s(literal 0 binary64))))
(/.f64 #s(literal 0 binary64) #s(literal 0 binary64))
(/.f64 (*.f64 #s(literal 2 binary64) (pow.f64 x #s(literal 3 binary64))) (fma.f64 x x #s(literal 0 binary64)))
(fma.f64 (pow.f64 x #s(literal 1 binary64)) (pow.f64 x #s(literal 1 binary64)) (*.f64 x x))
(fma.f64 (neg.f64 (neg.f64 x)) (neg.f64 (neg.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 (fabs.f64 x)) (neg.f64 (fabs.f64 x)) (*.f64 x x))
(fma.f64 (fabs.f64 (fabs.f64 x)) (fabs.f64 (fabs.f64 x)) (*.f64 x x))
(fma.f64 (neg.f64 x) (neg.f64 x) (*.f64 x x))
(fma.f64 (fabs.f64 x) (fabs.f64 x) (*.f64 x x))
(fma.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 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x #s(literal 0 binary64))) (/.f64 (pow.f64 x #s(literal 3 binary64)) (fma.f64 x x #s(literal 0 binary64))))
(+.f64 (*.f64 x x) (*.f64 x x))
(+.f64 x x)

eval3.0ms (0.1%)

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

Compiled 480 to 88 computations (81.7% saved)

prune3.0ms (0.1%)

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

6 alts after pruning (1 fresh and 5 done)

PrunedKeptTotal
New26127
Fresh000
Picked011
Done044
Total26632
Accuracy
100.0%
Counts
32 → 6
Alt Table
Click to see full alt table
StatusAccuracyProgram
95.3%
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
100.0%
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
4.4%
#s(approx (* 2 (- (* x x) (* x y))) (+.f64 x x))
57.3%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
53.8%
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
9.3%
#s(literal 0 binary64)
Compiler

Compiled 150 to 75 computations (50% saved)

regimes16.0ms (0.4%)

Memory
-21.8MiB live, 24.9MiB allocated; 2ms collecting garbage
Counts
8 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (* 2 (- (* x x) (* x y))) (+.f64 x x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
Outputs
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
Calls

4 calls:

7.0ms
y
3.0ms
x
3.0ms
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
3.0ms
(-.f64 (*.f64 x x) (*.f64 x y))
Results
AccuracySegmentsBranch
100.0%1(-.f64 (*.f64 x x) (*.f64 x y))
100.0%1(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
100.0%1x
100.0%1y
Compiler

Compiled 18 to 16 computations (11.1% saved)

regimes10.0ms (0.2%)

Memory
18.7MiB live, 18.7MiB allocated; 0ms collecting garbage
Counts
6 → 3
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (* 2 (- (* x x) (* x y))) (+.f64 x x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x #s(literal 2 binary64)) x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (*.f64 x x) #s(literal 2 binary64)))
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))
Calls

4 calls:

2.0ms
y
2.0ms
x
2.0ms
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
2.0ms
(-.f64 (*.f64 x x) (*.f64 x y))
Results
AccuracySegmentsBranch
76.7%2(-.f64 (*.f64 x x) (*.f64 x y))
76.7%2(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
80.3%3x
85.4%3y
Compiler

Compiled 18 to 16 computations (11.1% saved)

regimes58.0ms (1.3%)

Memory
-22.2MiB live, 28.8MiB allocated; 3ms collecting garbage
Counts
3 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (* 2 (- (* x x) (* x y))) (+.f64 x x))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
Outputs
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
Calls

4 calls:

52.0ms
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
2.0ms
x
2.0ms
(-.f64 (*.f64 x x) (*.f64 x y))
2.0ms
y
Results
AccuracySegmentsBranch
57.3%1(-.f64 (*.f64 x x) (*.f64 x y))
57.3%1(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
57.3%1x
57.3%1y
Compiler

Compiled 18 to 16 computations (11.1% saved)

regimes6.0ms (0.1%)

Memory
12.6MiB live, 12.6MiB allocated; 0ms collecting garbage
Accuracy

Total -4.3b remaining (-7.5%)

Threshold costs -4.3b (-7.5%)

Counts
2 → 1
Calls
Call 1
Inputs
#s(literal 0 binary64)
#s(approx (* 2 (- (* x x) (* x y))) (+.f64 x x))
Outputs
#s(literal 0 binary64)
Calls

4 calls:

1.0ms
y
1.0ms
(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
1.0ms
(-.f64 (*.f64 x x) (*.f64 x y))
1.0ms
x
Results
AccuracySegmentsBranch
9.3%1y
9.3%1x
9.3%1(-.f64 (*.f64 x x) (*.f64 x y))
9.3%1(*.f64 #s(literal 2 binary64) (-.f64 (*.f64 x x) (*.f64 x y)))
Compiler

Compiled 18 to 16 computations (11.1% saved)

bsearch24.0ms (0.5%)

Memory
-15.3MiB live, 31.6MiB allocated; 2ms collecting garbage
Algorithm
binary-search
Stop Event
narrow-enough
narrow-enough
Steps
TimeLeftRight
7.0ms
1.180176719508342e+52
3.2044746867439526e+52
15.0ms
-10689210521.160595
-3454.3018676884226
Samples
10.0ms224×0valid
Compiler

Compiled 432 to 334 computations (22.7% saved)

Precisions
Click to see histograms. Total time spent on operations: 5.0ms
ival-mult: 4.0ms (73.6% of total)
ival-sub: 1.0ms (18.4% of total)
ival-true: 0.0ms (0% of total)
adjust: 0.0ms (0% of total)
exact: 0.0ms (0% of total)
ival-assert: 0.0ms (0% of total)

simplify56.0ms (1.2%)

Memory
1.3MiB live, 44.1MiB allocated; 4ms collecting garbage
Algorithm
egg-herbie
Iterations

Useful iterations: 0 (0.0ms)

IterNodesCost
02456
14256
29356
327256
469756
5142856
6290156
7600556
Stop Event
node limit
Calls
Call 1
Inputs
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
(if (<=.f64 y #s(literal -72000000 binary64)) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x))) (if (<=.f64 y #s(literal 11999999999999999918651384092339535717540501303328768 binary64)) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x)) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
#s(literal 0 binary64)
Outputs
(*.f64 #s(literal 2 binary64) (*.f64 (-.f64 x y) x))
(if (<=.f64 y #s(literal -72000000 binary64)) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x))) (if (<=.f64 y #s(literal 11999999999999999918651384092339535717540501303328768 binary64)) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x)) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x)))))
(if (or (<=.f64 y #s(literal -72000000 binary64)) (not (<=.f64 y #s(literal 11999999999999999918651384092339535717540501303328768 binary64)))) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 #s(literal -2 binary64) (*.f64 y x))) #s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x)))
#s(approx (* 2 (- (* x x) (* x y))) (*.f64 (+.f64 x x) x))
#s(literal 0 binary64)

derivations636.0ms (14%)

Memory
10.2MiB live, 616.1MiB allocated; 96ms collecting garbage
Iterations

Useful iterations: 2 (0.0ms)

IterNodesCost
01761
02457
17057
245039
3640139
0825439
01023
01221
14221
231615
3457715
0822615
04290
114080
244680
3153380
4424280
5679880
0807880
0722
01118
13818
231012
3459212
0821912
Stop Event
fuel
iter limit
node limit
iter limit
iter limit
node limit
iter limit
node limit
iter limit
iter limit
node limit
iter limit
Compiler

Compiled 62 to 26 computations (58.1% saved)

preprocess41.0ms (0.9%)

Memory
2.4MiB live, 96.5MiB allocated; 8ms collecting garbage
Compiler

Compiled 156 to 78 computations (50% saved)

end0.0ms (0%)

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

Profiling

Loading profile data...