public static double norm()

in flink-ml-servable-core/src/main/java/org/apache/flink/ml/linalg/BLAS.java [133:157]


    public static double norm(Vector x, double p) {
        Preconditions.checkArgument(p >= 1.0, "p value must >= 1.0, but the current p is : " + p);
        double norm = 0.0;
        double[] data =
                (x instanceof DenseVector) ? ((DenseVector) x).values : ((SparseVector) x).values;

        if (p == 1.0) {
            for (double datum : data) {
                norm += Math.abs(datum);
            }
        } else if (p == 2.0) {
            norm = norm2(x);
        } else if (p == Double.POSITIVE_INFINITY) {
            for (double datum : data) {
                norm = Math.max(Math.abs(datum), norm);
            }
        } else {
            for (double datum : data) {
                norm += Math.pow(Math.abs(datum), p);
            }
            norm = Math.pow(norm, 1.0 / p);
        }

        return norm;
    }