public override double Function(double[] x, double[] y)
{
double norm = 0.0;
for (int k = 0; k < x.Length; k++)
{
double d = x[k] - y[k];
norm += d * d;
}
norm = System.Math.Sqrt(norm);
double num = Accord.Math.Bessel.J(order, sigma * norm);
double den = System.Math.Pow(norm, -norm * order);
return num / den;
}