public static MDS of(double[][] proximity) {
        return of(proximity, new Properties());
    }
@Test
    public void testPositive() {
        System.out.println("MDS positive = true");

        double[] eigs = {42274973.753, 31666186.428};
        double[][] points = {
            {-2716.561820, -3549.216493},
            { 1453.753109,  -455.895291},
            { -217.426476,  1073.442137},
            {   -1.682974,  1135.742860},
            {  461.875781,   871.913389},
            { -594.256798,  1029.818088},
            {-1271.216005,  1622.039302},
            {   88.721376,    -4.068005},
            { 3059.180990,  -836.535103},
            {-1056.316198,  1350.037932},
            { -445.663432,  1304.392098},
            { 2866.160085,  -211.043554},
            {  436.147722,   140.147975},
            { 2300.753691,  -234.863677},
            {  586.877042,  -217.428075},
            { -336.906562,  -350.948939},
            { -928.407679,   112.132182},
            {  193.653844,   847.157498},
            { -908.682100, -1742.395923},
            {-1499.140467,  1897.522969},
            {-1319.918808,  -295.010834}
        };

        MDS mds = MDS.of(Eurodist.x, 2, true);
        assertArrayEquals(eigs, mds.scores, 1E-2);

        double sign0 = Math.signum(points[0][0] * mds.coordinates[0][0]);
        double sign1 = Math.signum(points[0][1] * mds.coordinates[0][1]);
        for (int i = 0; i < points.length; i++) {
            points[i][0] *= sign0;
            points[i][1] *= sign1;
            assertArrayEquals(points[i], mds.coordinates[i], 1E-2);
        }
    }