class GaussianVertex extends VertexImpl<DoubleTensor, DoubleVertex> implements DoubleVertex, Differentiable, ProbabilisticDouble, SamplableWithManyScalars<DoubleTensor>, LogProbGraphSupplier {

    @Override
    public double logProb(DoubleTensor value) {

        DoubleTensor muValues = mu.getValue();
        DoubleTensor sigmaValues = sigma.getValue();

        DoubleTensor logPdfs = Gaussian.withParameters(muValues, sigmaValues).logProb(value);

        return logPdfs.sumNumber();
    }

    public  GaussianVertex(@LoadShape long[] shape,
                          @LoadVertexParam(MU_NAME) Vertex<DoubleTensor, ?> mu,
                          @LoadVertexParam(SIGMA_NAME) Vertex<DoubleTensor, ?> sigma);
    @ExportVertexToPythonBindings public  GaussianVertex(Vertex<DoubleTensor, ?> mu, Vertex<DoubleTensor, ?> sigma);
    public  GaussianVertex(Vertex<DoubleTensor, ?> mu, double sigma);
    public  GaussianVertex(double mu, Vertex<DoubleTensor, ?> sigma);
    public  GaussianVertex(double mu, double sigma);
    public  GaussianVertex(long[] tensorShape, Vertex<DoubleTensor, ?> mu, double sigma);
    public  GaussianVertex(long[] tensorShape, double mu, Vertex<DoubleTensor, ?> sigma);
    public  GaussianVertex(long[] tensorShape, double mu, double sigma);
    public  GaussianVertex(long[] tensorShape, DoubleTensor mu, DoubleTensor sigma);
    public  GaussianVertex(DoubleTensor mu, DoubleTensor sigma);

}