List of usage examples for org.apache.commons.math3.linear ArrayRealVector unitVector
public RealVector unitVector() throws MathArithmeticException
From source file:org.apache.solr.client.solrj.io.eval.UnitEvaluator.java
@Override public Object doWork(Object value) throws IOException { if (null == value) { return null; } else if (value instanceof Matrix) { Matrix matrix = (Matrix) value;/*w w w. j a va 2 s. c o m*/ double[][] data = matrix.getData(); double[][] unitData = new double[data.length][]; for (int i = 0; i < data.length; i++) { double[] row = data[i]; ArrayRealVector vector = new ArrayRealVector(row); double[] unitRow = vector.unitVector().toArray(); unitData[i] = unitRow; } return new Matrix(unitData); } else if (value instanceof List) { List<Number> values = (List<Number>) value; double[] doubles = new double[values.size()]; for (int i = 0; i < doubles.length; i++) { doubles[i] = values.get(i).doubleValue(); } ArrayRealVector vector = new ArrayRealVector(doubles); RealVector unitVector = vector.unitVector(); List<Number> unitList = new ArrayList(doubles.length); double[] unitArray = unitVector.toArray(); for (double d : unitArray) { unitList.add(d); } return unitList; } else { throw new IOException("The unit function expects either a numeric array or matrix as a parameter"); } }