protected static FloatVector crossProductAll(FloatVector... multiplicands) { int dimension = multiplicands.length + 1; if (dimension == 3) return multiplicands[0].crossProduct3D(multiplicands[1]); FloatVector nullVector = new FloatVector(dimension); FloatVector result = nullVector; FloatMatrix matrix = new FloatMatrix(true, multiplicands); float determinat; for (int row = 0; row < dimension; row++) { determinat = matrix.strikeRow(row).determinant(); if ((row & 1) == 1) determinat = -determinat; result = result.add(nullVector.setComponent(row, 1f).scalarMultiply(determinat)); } return result; }