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

    @Override
    public LogProbGraph logProbGraph() {
        final DoublePlaceholderVertex xPlaceholder = new DoublePlaceholderVertex(this.getShape());
        final DoublePlaceholderVertex locationPlaceholder = new DoublePlaceholderVertex(location.getShape());
        final DoublePlaceholderVertex scalePlaceholder = new DoublePlaceholderVertex(scale.getShape());

        return LogProbGraph.builder()
            .input(this, xPlaceholder)
            .input(location, locationPlaceholder)
            .input(scale, scalePlaceholder)
            .logProbOutput(Cauchy.logProbOutput(xPlaceholder, locationPlaceholder, scalePlaceholder))
            .build();
    }

    public  CauchyVertex(@LoadShape long[] tensorShape,
                        @LoadVertexParam(LOCATION_NAME) Vertex<DoubleTensor, ?> location,
                        @LoadVertexParam(SCALE_NAME) Vertex<DoubleTensor, ?> scale);
    @ExportVertexToPythonBindings public  CauchyVertex(Vertex<DoubleTensor, ?> location, Vertex<DoubleTensor, ?> scale);
    public  CauchyVertex(Vertex<DoubleTensor, ?> location, double scale);
    public  CauchyVertex(double location, Vertex<DoubleTensor, ?> scale);
    public  CauchyVertex(double location, double scale);
    public  CauchyVertex(long[] tensorShape, Vertex<DoubleTensor, ?> location, double scale);
    public  CauchyVertex(long[] tensorShape, double location, Vertex<DoubleTensor, ?> scale);
    public  CauchyVertex(long[] tensorShape, double location, double scale);

}