Example usage for org.apache.commons.math3.linear RealMatrix walkInOptimizedOrder

List of usage examples for org.apache.commons.math3.linear RealMatrix walkInOptimizedOrder

Introduction

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

Prototype

double walkInOptimizedOrder(RealMatrixPreservingVisitor visitor, int startRow, int endRow, int startColumn,
        int endColumn) throws OutOfRangeException, NumberIsTooSmallException;

Source Link

Document

Visit (but don't change) some matrix entries using the fastest possible order.

Usage

From source file:jurls.core.becca.DefaultZiptie.java

public static double getExponentialSum(RealMatrix c, double exponent, int rowStart, int rowEnd, int colStart,
        int colEnd) {
    AtomicDouble s = new AtomicDouble(0);
    c.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() {
        @Override//  www .ja  v  a 2 s  . co  m
        public void visit(int row, int column, double value) {
            s.addAndGet(Math.pow(value, exponent));
        }
    }, rowStart, rowEnd, colStart, colEnd);
    return s.doubleValue();
}

From source file:jurls.core.becca.DefaultZiptie.java

public static double getGeneralizedMean(RealMatrix c, double exponent, int rowStart, int rowEnd, int colStart,
        int colEnd) {
    AtomicDouble s = new AtomicDouble(0);
    AtomicInteger n = new AtomicInteger(0);
    c.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() {
        @Override//  w ww  .  j  a v a 2 s  .com
        public void visit(int row, int column, double value) {
            s.addAndGet(Math.pow(value, exponent));
            n.incrementAndGet();
        }
    }, rowStart, rowEnd, colStart, colEnd);

    return (1.0 / n.doubleValue()) * Math.pow(s.doubleValue(), 1.0 / exponent);
}

From source file:jurls.core.becca.DefaultZiptie.java

public double getRowGeneralizedMean(RealMatrix c, Function<Integer, Double> rowEntryMultiplier, double exponent,
        int rowStart, int rowEnd, int column) {
    AtomicDouble s = new AtomicDouble(0);
    AtomicInteger n = new AtomicInteger(0);
    c.walkInOptimizedOrder(new DefaultRealMatrixPreservingVisitor() {
        @Override/*  w  w w . ja  v  a2s  . c  o  m*/
        public void visit(int row, int column, double value) {
            double a = Math.pow(value, exponent);
            double b = rowEntryMultiplier.apply(row);
            s.addAndGet(a * b);
            n.incrementAndGet();
        }
    }, rowStart, rowEnd, column, column);

    return (1.0 / n.doubleValue()) * Math.pow(s.doubleValue(), 1.0 / exponent);
}