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

    @Override
    public LogProbGraph logProbGraph() {
        final DoublePlaceholderVertex xPlaceholder = new DoublePlaceholderVertex(this.getShape());
        final DoublePlaceholderVertex xMinPlaceholder = new DoublePlaceholderVertex(xMin.getShape());
        final DoublePlaceholderVertex xMaxPlaceholder = new DoublePlaceholderVertex(xMax.getShape());

        return LogProbGraph.builder()
            .input(this, xPlaceholder)
            .input(xMin, xMinPlaceholder)
            .input(xMax, xMaxPlaceholder)
            .logProbOutput(Uniform.logProbOutput(xPlaceholder, xMinPlaceholder, xMaxPlaceholder))
            .build();
    }

    public  UniformVertex(@LoadShape long[] tensorShape,
                         @LoadVertexParam(X_MIN_NAME) Vertex<DoubleTensor, ?> xMin,
                         @LoadVertexParam(X_MAX_NAME) Vertex<DoubleTensor, ?> xMax);
    @ExportVertexToPythonBindings public  UniformVertex(Vertex<DoubleTensor, ?> xMin, Vertex<DoubleTensor, ?> xMax);
    public  UniformVertex(Vertex<DoubleTensor, ?> xMin, double xMax);
    public  UniformVertex(double xMin, Vertex<DoubleTensor, ?> xMax);
    public  UniformVertex(double xMin, double xMax);
    public  UniformVertex(long[] tensorShape, Vertex<DoubleTensor, ?> xMin, double xMax);
    public  UniformVertex(long[] tensorShape, double xMin, Vertex<DoubleTensor, ?> xMax);
    public  UniformVertex(long[] tensorShape, double xMin, double xMax);

}