mirror of
https://github.com/pgvector/pgvector.git
synced 2026-07-14 08:36:54 +08:00
Improved variable scoping
This commit is contained in:
@@ -183,8 +183,6 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
FmgrInfo *procinfo;
|
FmgrInfo *procinfo;
|
||||||
FmgrInfo *normprocinfo;
|
FmgrInfo *normprocinfo;
|
||||||
Oid collation;
|
Oid collation;
|
||||||
Vector *vec;
|
|
||||||
Vector *newCenter;
|
|
||||||
int dimensions = centers->dim;
|
int dimensions = centers->dim;
|
||||||
int numCenters = centers->maxlen;
|
int numCenters = centers->maxlen;
|
||||||
int numSamples = samples->length;
|
int numSamples = samples->length;
|
||||||
@@ -250,7 +248,8 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
newCenters = VectorArrayInit(numCenters, dimensions);
|
newCenters = VectorArrayInit(numCenters, dimensions);
|
||||||
for (int64 j = 0; j < numCenters; j++)
|
for (int64 j = 0; j < numCenters; j++)
|
||||||
{
|
{
|
||||||
vec = VectorArrayGet(newCenters, j);
|
Vector *vec = VectorArrayGet(newCenters, j);
|
||||||
|
|
||||||
SET_VARSIZE(vec, VECTOR_SIZE(dimensions));
|
SET_VARSIZE(vec, VECTOR_SIZE(dimensions));
|
||||||
vec->dim = dimensions;
|
vec->dim = dimensions;
|
||||||
}
|
}
|
||||||
@@ -297,7 +296,7 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
/* Step 1: For all centers, compute distance */
|
/* Step 1: For all centers, compute distance */
|
||||||
for (int64 j = 0; j < numCenters; j++)
|
for (int64 j = 0; j < numCenters; j++)
|
||||||
{
|
{
|
||||||
vec = VectorArrayGet(centers, j);
|
Vector *vec = VectorArrayGet(centers, j);
|
||||||
|
|
||||||
for (int64 k = j + 1; k < numCenters; k++)
|
for (int64 k = j + 1; k < numCenters; k++)
|
||||||
{
|
{
|
||||||
@@ -342,6 +341,7 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
|
|
||||||
for (int64 k = 0; k < numCenters; k++)
|
for (int64 k = 0; k < numCenters; k++)
|
||||||
{
|
{
|
||||||
|
Vector *vec;
|
||||||
float dxcx;
|
float dxcx;
|
||||||
|
|
||||||
/* Step 3: For all remaining points x and centers c */
|
/* Step 3: For all remaining points x and centers c */
|
||||||
@@ -394,7 +394,8 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
/* Step 4: For each center c, let m(c) be mean of all points assigned */
|
/* Step 4: For each center c, let m(c) be mean of all points assigned */
|
||||||
for (int64 j = 0; j < numCenters; j++)
|
for (int64 j = 0; j < numCenters; j++)
|
||||||
{
|
{
|
||||||
vec = VectorArrayGet(newCenters, j);
|
Vector *vec = VectorArrayGet(newCenters, j);
|
||||||
|
|
||||||
for (int64 k = 0; k < dimensions; k++)
|
for (int64 k = 0; k < dimensions; k++)
|
||||||
vec->x[k] = 0.0;
|
vec->x[k] = 0.0;
|
||||||
|
|
||||||
@@ -403,13 +404,11 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
|
|
||||||
for (int64 j = 0; j < numSamples; j++)
|
for (int64 j = 0; j < numSamples; j++)
|
||||||
{
|
{
|
||||||
int closestCenter;
|
int closestCenter = closestCenters[j];
|
||||||
|
Vector *vec = VectorArrayGet(samples, j);
|
||||||
vec = VectorArrayGet(samples, j);
|
Vector *newCenter = VectorArrayGet(newCenters, closestCenter);
|
||||||
closestCenter = closestCenters[j];
|
|
||||||
|
|
||||||
/* Increment sum and count of closest center */
|
/* Increment sum and count of closest center */
|
||||||
newCenter = VectorArrayGet(newCenters, closestCenter);
|
|
||||||
for (int64 k = 0; k < dimensions; k++)
|
for (int64 k = 0; k < dimensions; k++)
|
||||||
newCenter->x[k] += vec->x[k];
|
newCenter->x[k] += vec->x[k];
|
||||||
|
|
||||||
@@ -418,7 +417,7 @@ ElkanKmeans(Relation index, VectorArray samples, VectorArray centers)
|
|||||||
|
|
||||||
for (int64 j = 0; j < numCenters; j++)
|
for (int64 j = 0; j < numCenters; j++)
|
||||||
{
|
{
|
||||||
vec = VectorArrayGet(newCenters, j);
|
Vector *vec = VectorArrayGet(newCenters, j);
|
||||||
|
|
||||||
if (centerCounts[j] > 0)
|
if (centerCounts[j] > 0)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user