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

    @Override
    public LogProbGraph logProbGraph() {
        final DoublePlaceholderVertex xPlaceholder = new DoublePlaceholderVertex(this.getShape());
        final DoublePlaceholderVertex thetaPlaceholder = new DoublePlaceholderVertex(theta.getShape());
        final DoublePlaceholderVertex kPlaceholder = new DoublePlaceholderVertex(k.getShape());

        return LogProbGraph.builder()
            .input(this, xPlaceholder)
            .input(theta, thetaPlaceholder)
            .input(k, kPlaceholder)
            .logProbOutput(Gamma.logProbOutput(xPlaceholder, thetaPlaceholder, kPlaceholder))
            .build();
    }

    public  GammaVertex(@LoadShape long[] tensorShape,
                       @LoadVertexParam(THETA_NAME) Vertex<DoubleTensor, ?> theta,
                       @LoadVertexParam(K_NAME) Vertex<DoubleTensor, ?> k);
    @ExportVertexToPythonBindings public  GammaVertex(Vertex<DoubleTensor, ?> theta,
                       Vertex<DoubleTensor, ?> k);
    public  GammaVertex(Vertex<DoubleTensor, ?> theta, double k);
    public  GammaVertex(double theta, Vertex<DoubleTensor, ?> k);
    public  GammaVertex(double theta, double k);

}