Example usage for org.apache.commons.math3.linear ArrayRealVector unitVector

List of usage examples for org.apache.commons.math3.linear ArrayRealVector unitVector

Introduction

In this page you can find the example usage for org.apache.commons.math3.linear ArrayRealVector unitVector.

Prototype

public RealVector unitVector() throws MathArithmeticException 

Source Link

Document

Creates a unit vector pointing in the direction of this vector.

Usage

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");
    }
}