public PFor(final int first, final int last, final Object... objects) { this(UJMPSettings.getInstance().getNumberOfThreads(), first, last, objects); }
public PForEquidistant(final int first, final int last, final Object... objects) { this(UJMPSettings.getInstance().getNumberOfThreads(), first, last, objects); }
public static final ThreadPoolExecutor getInstance() { return getInstance(UJMPSettings.getInstance().getNumberOfThreads()); }
private final void calc(final double[][] source, final double divisor, final double[][] target) { VerifyUtil.verifySameSize(source, target); if (UJMPSettings.getInstance().getNumberOfThreads() > 1 && source.length >= 100 && source[0].length >= 100) { new PForEquidistant(0, source.length - 1) { public void step(int i) { double[] tsource = source[i]; double[] ttarget = target[i]; for (int c = source[0].length; --c != -1;) { ttarget[c] = tsource[c] / divisor; } } }; } else { double[] tsource = null; double[] ttarget = null; for (int r = source.length; --r != -1;) { tsource = source[r]; ttarget = target[r]; for (int c = source[0].length; --c != -1;) { ttarget[c] = tsource[c] / divisor; } } } }
private final void calc(final double[][] source, final double value, final double[][] target) { VerifyUtil.verifySameSize(source, target); if (UJMPSettings.getInstance().getNumberOfThreads() > 1 && source.length >= 100 && source[0].length >= 100) { new PForEquidistant(0, source.length - 1) { public void step(int i) { double[] tsource = source[i]; double[] ttarget = target[i]; for (int c = source[0].length; --c != -1;) { ttarget[c] = tsource[c] - value; } } }; } else { double[] tsource = null; double[] ttarget = null; for (int r = source.length; --r != -1;) { tsource = source[r]; ttarget = target[r]; for (int c = source[0].length; --c != -1;) { ttarget[c] = tsource[c] - value; } } } }
private final void calc(final double[][] source, final double value, final double[][] target) { VerifyUtil.verifySameSize(source, target); if (UJMPSettings.getInstance().getNumberOfThreads() > 1 && source.length >= 100 && source[0].length >= 100) { new PForEquidistant(0, source.length - 1) { public void step(int i) { double[] tsource = source[i]; double[] ttarget = target[i]; for (int c = source[0].length; --c != -1;) { ttarget[c] = tsource[c] + value; } } }; } else { double[] tsource = null; double[] ttarget = null; for (int r = source.length; --r != -1;) { tsource = source[r]; ttarget = target[r]; for (int c = source[0].length; --c != -1;) { ttarget[c] = tsource[c] + value; } } } }
public final Matrix[] calc(Matrix source) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } }
public final Matrix[] calc(Matrix source) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } } };
public final Matrix[] calc(Matrix source) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } }
public final Matrix calc(Matrix source) { if (source.getDimensionCount() != 2 || source.getRowCount() != source.getColumnCount()) { throw new RuntimeException( "inverse only possible for square matrices. use pinv or ginv instead"); } if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } } };
public final Matrix calc(Matrix source) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } }
public final Matrix solve(Matrix source, Matrix b) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.solve(source, b); } else { return MATRIXSMALLSINGLETHREADED.solve(source, b); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.solve(source, b); } else { return MATRIXSMALLMULTITHREADED.solve(source, b); } } } };
public final Matrix calc(Matrix a, Matrix b) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (a.getRowCount() >= SQUARETHRESHOLD && a.getColumnCount() >= SQUARETHRESHOLD) { return MATRIXSQUARELARGESINGLETHREADED.calc(a, b); } else { return MATRIXSQUARESMALLSINGLETHREADED.calc(a, b); } } else { if (a.getRowCount() >= SQUARETHRESHOLD && a.getColumnCount() >= SQUARETHRESHOLD) { return MATRIXSQUARELARGEMULTITHREADED.calc(a, b); } else { return MATRIXSQUARESMALLMULTITHREADED.calc(a, b); } } } };
public final Matrix calc(Matrix a, Matrix b) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (a.getRowCount() >= SQUARETHRESHOLD && a.getColumnCount() >= SQUARETHRESHOLD) { return MATRIXSQUARELARGESINGLETHREADED.calc(a, b); } else { return MATRIXSQUARESMALLSINGLETHREADED.calc(a, b); } } else { if (a.getRowCount() >= SQUARETHRESHOLD && a.getColumnCount() >= SQUARETHRESHOLD) { return MATRIXSQUARELARGEMULTITHREADED.calc(a, b); } else { return MATRIXSQUARESMALLMULTITHREADED.calc(a, b); } } } };
public final Matrix solve(Matrix source, Matrix b) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.solve(source, b); } else { return MATRIXSMALLSINGLETHREADED.solve(source, b); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.solve(source, b); } else { return MATRIXSMALLMULTITHREADED.solve(source, b); } } } };
public final Matrix[] calc(Matrix source) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } } };
public final Matrix solve(Matrix source, Matrix b) { if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.solve(source, b); } else { return MATRIXSMALLSINGLETHREADED.solve(source, b); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.solve(source, b); } else { return MATRIXSMALLMULTITHREADED.solve(source, b); } } } };
public final Matrix calc(Matrix source) { if (source.getDimensionCount() != 2 || source.getRowCount() != source.getColumnCount()) { throw new RuntimeException( "inverse only possible for square matrices. use pinv or ginv instead"); } if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } } };
public final Matrix calc(Matrix source) { if (source.getDimensionCount() != 2 || source.getRowCount() != source.getColumnCount()) { throw new RuntimeException( "inverse only possible for square matrices. use pinv or ginv instead"); } if (UJMPSettings.getInstance().getNumberOfThreads() == 1) { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGESINGLETHREADED.calc(source); } else { return MATRIXSMALLSINGLETHREADED.calc(source); } } else { if (source.getRowCount() >= THRESHOLD && source.getColumnCount() >= THRESHOLD) { return MATRIXLARGEMULTITHREADED.calc(source); } else { return MATRIXSMALLMULTITHREADED.calc(source); } } } };
public Matrix tanh() { final int rows = MathUtil.longToInt(getRowCount()); final int cols = MathUtil.longToInt(getColumnCount()); final Matrix result = Matrix.Factory.zeros(rows, cols); if (UJMPSettings.getInstance().getNumberOfThreads() > 1 && rows >= 100 && cols >= 100) { new PForEquidistant(0, rows - 1) { public void step(int i) { for (int c = 0; c < cols; c++) { result.setAsDouble(Math.tanh(getAsDouble(i, c)), i, c); } } }; } else { for (int r = 0; r < rows; r++) { for (int c = 0; c < cols; c++) { result.setAsDouble(Math.tanh(getAsDouble(r, c)), r, c); } } } return result; }