internal double k(double[] x, double[] y)
{
Locals m = locals.Value;
double[] sx = snorm(x);
double[] sy = snorm(y);
// if (!m.vectors.TryGetValue(x, out sx))
// m.vectors[x] = sx = snorm(x);
//if (!m.vectors.TryGetValue(y, out sy))
// m.vectors[y] = sy = snorm(y);
// Compute the cosine of the global distance
double distance = D(m, sx, sy);
return System.Math.Cos(distance);
}