/*
 * GaussianKernel.java
 * Created on Apr 11, 2005
 */
package kernel;

import javax.vecmath.GVector;

/**
 * A Gaussian kernel.
 */
public class GaussianKernel implements Kernel {
    
    private final double coeff;

    /**
     * Construct a Gaussian kernel with the given variance.
     */
    public GaussianKernel(double variance) {
        this.coeff = -1.0 / (variance * variance);
    }
    
    public double eval(GVector v1, GVector v2) {
        GVector temp = new GVector(v1.getSize());
        v1.sub(v2, temp);
        return Math.exp(coeff * temp.normSquared());
    }

}
