http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java
index 5d3a631..9e3d8f8 100644
--- 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java
+++ 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNPooling.java
@@ -23,7 +23,6 @@ import java.util.Arrays;
 import java.util.concurrent.Callable;
 
 import org.apache.sysml.hops.OptimizerUtils;
-import org.apache.sysml.runtime.DMLRuntimeException;
 import org.apache.sysml.runtime.matrix.data.LibMatrixDNN.PoolingType;
 import org.apache.sysml.runtime.matrix.data.LibMatrixDNNHelper.CellIndex3;
 
@@ -43,9 +42,8 @@ public class LibMatrixDNNPooling {
         * @param params convolution parameters
         * @param poolType type of pooling
         * @return list of callable tasks for performing pooling operation
-        * @throws DMLRuntimeException if error occurs
         */
-       public static ArrayList<Callable<Long>> 
getPoolingWorkers(ConvolutionParameters params, PoolingType poolType) throws 
DMLRuntimeException {
+       public static ArrayList<Callable<Long>> 
getPoolingWorkers(ConvolutionParameters params, PoolingType poolType) {
                ArrayList<Callable<Long>> ret = new ArrayList<>();
                // Try to create twice as many tasks as threads for improved 
load balance
                int k = 
OptimizerUtils.getConstrainedNumThreads(params.numThreads);
@@ -66,9 +64,8 @@ public class LibMatrixDNNPooling {
         * @param performReluBackward whether to perform ReLU backward
         * @param poolType type of pooling operation to perform
         * @return list of callable tasks for performing maxpooling backward 
operation
-        * @throws DMLRuntimeException if error occurs
         */
-       public static ArrayList<Callable<Long>> 
getPoolingBackwardWorkers(ConvolutionParameters params, boolean 
performReluBackward, PoolingType poolType) throws DMLRuntimeException {
+       public static ArrayList<Callable<Long>> 
getPoolingBackwardWorkers(ConvolutionParameters params, boolean 
performReluBackward, PoolingType poolType) {
                ArrayList<Callable<Long>> ret = new ArrayList<>();
                // Try to create twice as many tasks as threads for improved 
load balance
                int k = 
OptimizerUtils.getConstrainedNumThreads(params.numThreads);

http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java
index 83a714b..bb0fcf1 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDNNRelu.java
@@ -22,7 +22,6 @@ import java.util.ArrayList;
 import java.util.concurrent.Callable;
 
 import org.apache.sysml.hops.OptimizerUtils;
-import org.apache.sysml.runtime.DMLRuntimeException;
 
 /**
  * This class contains the different implementation of rotate180 operation
@@ -34,9 +33,8 @@ public class LibMatrixDNNRelu
         * 
         * @param params convolution parameters
         * @return list of callable tasks for performing relu backward operation
-        * @throws DMLRuntimeException if error occurs
         */
-       public static ArrayList<Callable<Long>> 
getReluBackwardWorkers(ConvolutionParameters params) throws DMLRuntimeException 
{
+       public static ArrayList<Callable<Long>> 
getReluBackwardWorkers(ConvolutionParameters params) {
                ArrayList<Callable<Long>> ret = new ArrayList<>();
                int k = 
OptimizerUtils.getConstrainedNumThreads(params.numThreads);
                int taskSize = (int)(Math.ceil((double)params.N / k));

http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java
index 3e77a72..fa47c37 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixDatagen.java
@@ -96,9 +96,7 @@ public class LibMatrixDatagen
        }
 
        @Deprecated
-       public static LongStream computeNNZperBlock(long nrow, long ncol, int 
brlen, int bclen, double sparsity) 
-               throws DMLRuntimeException 
-       {
+       public static LongStream computeNNZperBlock(long nrow, long ncol, int 
brlen, int bclen, double sparsity) {
                long lnumBlocks = (long) (Math.ceil((double)nrow/brlen) * 
Math.ceil((double)ncol/bclen));
                
                //sanity check max number of blocks (before cast to avoid 
overflow)
@@ -135,9 +133,7 @@ public class LibMatrixDatagen
                }
        }
 
-    public static RandomMatrixGenerator createRandomMatrixGenerator(String 
pdfStr, int r, int c, int rpb, int cpb, double sp, double min, double max, 
String distParams)
-       throws DMLRuntimeException
-    {
+    public static RandomMatrixGenerator createRandomMatrixGenerator(String 
pdfStr, int r, int c, int rpb, int cpb, double sp, double min, double max, 
String distParams) {
                RandomMatrixGenerator.PDF pdf = 
RandomMatrixGenerator.PDF.valueOf(pdfStr.toUpperCase());
                RandomMatrixGenerator rgen = null;
        switch (pdf) {
@@ -181,12 +177,8 @@ public class LibMatrixDatagen
      * @param rgen random matrix generator
      * @param bigrand Well1024a pseudo-random number generator
      * @param bSeed seed for random generator
-     * @throws DMLRuntimeException if DMLRuntimeException occurs
      */
-       public static void generateRandomMatrix( MatrixBlock out, 
RandomMatrixGenerator rgen,
-                                                       Well1024a bigrand, long 
bSeed ) 
-               throws DMLRuntimeException
-       {
+       public static void generateRandomMatrix( MatrixBlock out, 
RandomMatrixGenerator rgen, Well1024a bigrand, long bSeed ) {
                boolean invokedFromCP = (bigrand != null);
                int rows = rgen._rows;
                int cols = rgen._cols;
@@ -259,11 +251,8 @@ public class LibMatrixDatagen
      * @param bigrand Well1024a pseudo-random number generator
      * @param bSeed seed for random generator
      * @param k ?
-     * @throws DMLRuntimeException if DMLRuntimeException occurs
-        */
-       public static void generateRandomMatrix( MatrixBlock out, 
RandomMatrixGenerator rgen, Well1024a bigrand, long bSeed, int k ) 
-               throws DMLRuntimeException
-       {       
+     */
+       public static void generateRandomMatrix( MatrixBlock out, 
RandomMatrixGenerator rgen, Well1024a bigrand, long bSeed, int k ) {
                int rows = rgen._rows;
                int cols = rgen._cols;
                int rpb = rgen._rowsPerBlock;
@@ -362,11 +351,8 @@ public class LibMatrixDatagen
         * @param from lower end point
         * @param to upper end point
         * @param incr increment value
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void generateSequence(MatrixBlock out, double from, 
double to, double incr) 
-               throws DMLRuntimeException 
-       {
+       public static void generateSequence(MatrixBlock out, double from, 
double to, double incr) {
                //check valid increment value
                if( (from > to && incr > 0) || incr == 0 )
                        throw new DMLRuntimeException("Wrong sequence 
increment: from="+from+", to="+to+ ", incr="+incr);
@@ -397,11 +383,8 @@ public class LibMatrixDatagen
         * @param size sample size
         * @param replace if true, sample with replacement
         * @param seed seed for random generator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void generateSample(MatrixBlock out, long range, int 
size, boolean replace, long seed)
-               throws DMLRuntimeException 
-       {
+       public static void generateSample(MatrixBlock out, long range, int 
size, boolean replace, long seed) {
                //set meta data and allocate dense block
                out.reset(size, 1, false);
                out.allocateDenseBlock();
@@ -462,9 +445,7 @@ public class LibMatrixDatagen
                return lseeds;
        }
 
-       private static void genRandomNumbers(boolean invokedFromCP, int rl, int 
ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, 
long[] seeds) 
-               throws DMLRuntimeException 
-       {
+       private static void genRandomNumbers(boolean invokedFromCP, int rl, int 
ru, int cl, int cu, MatrixBlock out, RandomMatrixGenerator rgen, long bSeed, 
long[] seeds) {
                int rows = rgen._rows;
                int cols = rgen._cols;
                int rpb = rgen._rowsPerBlock;
@@ -589,9 +570,7 @@ public class LibMatrixDatagen
                } // rbi
        }
 
-       private static void checkMatrixDimensionsAndSparsity(int rows, int 
cols, double sp) 
-               throws DMLRuntimeException
-       {
+       private static void checkMatrixDimensionsAndSparsity(int rows, int 
cols, double sp) {
                if( rows < 0 || cols < 0 || sp < 0 || sp > 1)
                        throw new DMLRuntimeException("Invalid matrix 
characteristics: "+rows+"x"+cols+", "+sp);
        }
@@ -619,9 +598,7 @@ public class LibMatrixDatagen
                private long _bSeed = 0;
                private long[] _seeds = null;
                
-               public RandTask(int rl, int ru, int cl, int cu, MatrixBlock 
out, RandomMatrixGenerator rgen, long bSeed, long[] seeds) 
-                       throws DMLRuntimeException 
-               {
+               public RandTask(int rl, int ru, int cl, int cu, MatrixBlock 
out, RandomMatrixGenerator rgen, long bSeed, long[] seeds) {
                        _rl = rl;
                        _ru = ru;
                        _cl = cl;
@@ -633,10 +610,9 @@ public class LibMatrixDatagen
                }
 
                @Override
-               public Long call() throws Exception {
+               public Long call() {
                        //execute rand operations (with block indexes)
                        genRandomNumbers(true, _rl, _ru, _cl, _cu, _out, _rgen, 
_bSeed, _seeds);
-                       
                        //thread-local maintenance of non-zero values
                        int rpb =_rgen._rowsPerBlock, cpb = _rgen._colsPerBlock;
                        return _out.recomputeNonZeros(_rl*rpb, 
Math.min(_ru*rpb,_rgen._rows)-1,

http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
index 214c8eb..e7290a8 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixMult.java
@@ -77,11 +77,8 @@ public class LibMatrixMult
         * @param m1 first matrix
         * @param m2 second matrix
         * @param ret result matrix
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret) 
-               throws DMLRuntimeException
-       {       
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret) {
                matrixMult(m1, m2, ret, 0, m1.rlen);
        }
        
@@ -96,19 +93,16 @@ public class LibMatrixMult
         * @param m2 second matrix
         * @param ret result matrix
         * @param fixedRet if true, output representation is fixed and nnzs not 
recomputed
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, boolean fixedRet) throws DMLRuntimeException {
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, boolean fixedRet) {
                matrixMult(m1, m2, ret, 0, m1.rlen, fixedRet);
        }
        
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int rl, int ru) throws DMLRuntimeException {
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int rl, int ru) {
                matrixMult(m1, m2, ret, rl, ru, false);
        }
        
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int rl, int ru, boolean fixedRet) 
-               throws DMLRuntimeException
-       {
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int rl, int ru, boolean fixedRet) {
                //check inputs / outputs
                if( m1.isEmptyBlock(false) || m2.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -162,11 +156,8 @@ public class LibMatrixMult
         * @param m2 second matrix
         * @param ret result matrix
         * @param k maximum parallelism
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int k) 
-               throws DMLRuntimeException
-       {
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int k) {
                //check inputs / outputs
                if( m1.isEmptyBlock(false) || m2.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -246,11 +237,8 @@ public class LibMatrixMult
         * @param mW w matrix
         * @param ret result matrix
         * @param ct chain type
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, 
MatrixBlock mW, MatrixBlock ret, ChainType ct) 
-               throws DMLRuntimeException
-       {               
+       public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, 
MatrixBlock mW, MatrixBlock ret, ChainType ct) {
                //check inputs / outputs (after that mV and mW guaranteed to be 
dense)
                if( mX.isEmptyBlock(false) || mV.isEmptyBlock(false) || (mW 
!=null && mW.isEmptyBlock(false)) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -290,11 +278,8 @@ public class LibMatrixMult
         * @param ret result matrix
         * @param ct chain type
         * @param k maximum parallelism
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, 
MatrixBlock mW, MatrixBlock ret, ChainType ct, int k) 
-               throws DMLRuntimeException
-       {               
+       public static void matrixMultChain(MatrixBlock mX, MatrixBlock mV, 
MatrixBlock mW, MatrixBlock ret, ChainType ct, int k) {
                //check inputs / outputs (after that mV and mW guaranteed to be 
dense)
                if( mX.isEmptyBlock(false) || mV.isEmptyBlock(false) || (mW 
!=null && mW.isEmptyBlock(false)) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -341,9 +326,7 @@ public class LibMatrixMult
                //                            
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock 
ret, boolean leftTranspose )
-               throws DMLRuntimeException
-       {
+       public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock 
ret, boolean leftTranspose ) {
                //check inputs / outputs
                if( m1.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -370,9 +353,7 @@ public class LibMatrixMult
                //System.out.println("TSMM 
("+m1.isInSparseFormat()+","+m1.getNumRows()+","+m1.getNumColumns()+","+m1.getNonZeros()+","+leftTranspose+")
 in "+time.stop());
        }
 
-       public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock 
ret, boolean leftTranspose, int k )
-               throws DMLRuntimeException
-       {
+       public static void matrixMultTransposeSelf( MatrixBlock m1, MatrixBlock 
ret, boolean leftTranspose, int k ) {
                //check inputs / outputs
                if( m1.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -421,9 +402,7 @@ public class LibMatrixMult
                //System.out.println("TSMM k="+k+" 
("+m1.isInSparseFormat()+","+m1.getNumRows()+","+m1.getNumColumns()+","+m1.getNonZeros()+","+leftTranspose+")
 in "+time.stop());
        }
 
-       public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, 
MatrixBlock ret1, MatrixBlock ret2 )
-               throws DMLRuntimeException
-       {
+       public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, 
MatrixBlock ret1, MatrixBlock ret2 ) {
                //check inputs / outputs
                if( pm1.isEmptyBlock(false) || m2.isEmptyBlock(false) )
                        return;
@@ -457,9 +436,7 @@ public class LibMatrixMult
                //                  
"("+m2.isInSparseFormat()+","+m2.getNumRows()+","+m2.getNumColumns()+","+m2.getNonZeros()+")
 in "+time.stop());
        }       
 
-       public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, 
MatrixBlock ret1, MatrixBlock ret2, int k)
-               throws DMLRuntimeException
-       {
+       public static void matrixMultPermute( MatrixBlock pm1, MatrixBlock m2, 
MatrixBlock ret1, MatrixBlock ret2, int k) {
                //check inputs / outputs
                if( pm1.isEmptyBlock(false) || m2.isEmptyBlock(false) )
                        return;
@@ -502,9 +479,7 @@ public class LibMatrixMult
                //                   
"("+m2.isInSparseFormat()+","+m2.getNumRows()+","+m2.getNumColumns()+","+m2.getNonZeros()+")
 in "+time.stop());
        }       
 
-       public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt) {
                //check for empty result
                if( wt==WeightsType.POST && mW.isEmptyBlock(false) 
                        || wt==WeightsType.POST_NZ && mX.isEmptyBlock(false) ) {
@@ -532,9 +507,7 @@ public class LibMatrixMult
                //                  
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt, int k) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWSLoss(MatrixBlock mX, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mW, MatrixBlock ret, WeightsType wt, int k) {
                //check for empty result
                if( wt==WeightsType.POST && mW.isEmptyBlock(false)
                        || wt==WeightsType.POST_NZ && mX.isEmptyBlock(false) ) {
@@ -551,8 +524,7 @@ public class LibMatrixMult
                
                //Timing time = new Timing(true);
                
-               try 
-               {                       
+               try {
                        ExecutorService pool = CommonThreadPool.get(k);
                        ArrayList<MatrixMultWSLossTask> tasks = new 
ArrayList<>();
                        int blklen = (int)(Math.ceil((double)mX.rlen/k));
@@ -575,9 +547,7 @@ public class LibMatrixMult
                //                   
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WSigmoidType wt) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WSigmoidType wt) {
                //check for empty result
                if( mW.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -606,9 +576,7 @@ public class LibMatrixMult
                //                 
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int k) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWSigmoid(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int k) {
                //check for empty result
                if( mW.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -666,11 +634,8 @@ public class LibMatrixMult
         * @param mX matrix X
         * @param ret result type
         * @param wt weighted divide matrix multiplication type
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt) {
                //check for empty result 
                if(   mW.isEmptyBlock(false) 
                   || (wt.isLeft() && mU.isEmptyBlock(false))
@@ -717,11 +682,8 @@ public class LibMatrixMult
         * @param ret result matrix
         * @param wt weighted divide matrix multiplication type
         * @param k maximum parallelism
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int k) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWDivMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int k) {
                //check for empty result 
                if(   mW.isEmptyBlock(false) 
                   || (wt.isLeft() && mU.isEmptyBlock(false))
@@ -777,9 +739,7 @@ public class LibMatrixMult
                //                
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }       
 
-       public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt) {
                //check for empty result 
                if( mW.isEmptyBlock(false) )  {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -804,9 +764,7 @@ public class LibMatrixMult
                //                 
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt, int k) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWCeMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, double eps, MatrixBlock ret, WCeMMType wt, int k) {
                //check for empty result 
                if( mW.isEmptyBlock(false) )  {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -839,9 +797,7 @@ public class LibMatrixMult
                //                 
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn) {
                //check for empty result
                if( mW.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -870,9 +826,7 @@ public class LibMatrixMult
                //                 
"("+mV.isInSparseFormat()+","+mV.getNumRows()+","+mV.getNumColumns()+","+mV.getNonZeros()+")
 in "+time.stop());
        }
 
-       public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int k) 
-               throws DMLRuntimeException 
-       {
+       public static void matrixMultWuMM(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int k) {
                //check for empty result
                if( mW.isEmptyBlock(false) ) {
                        ret.examSparsity(); //turn empty dense into sparse
@@ -921,9 +875,7 @@ public class LibMatrixMult
        // optimized matrix mult implementation //
        //////////////////////////////////////////
 
-       private static void matrixMultDenseDense(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean tm2, boolean pm2, int rl, int ru, int cl, int cu) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDense(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean tm2, boolean pm2, int rl, int ru, int cl, int cu) {
                DenseBlock a = m1.getDenseBlock();
                DenseBlock b = m2.getDenseBlock();
                DenseBlock c = ret.getDenseBlock();
@@ -993,18 +945,14 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultDenseDenseMVShortRHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int cd, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDenseMVShortRHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int cd, int rl, int ru) {
                double[] bvals = b.valuesAt(0);
                double[] cvals = c.valuesAt(0);
                for( int i=rl; i < ru; i++ )
                        cvals[i] = dotProduct(a.values(i), bvals, a.pos(i), 0, 
cd);
        }
        
-       private static void matrixMultDenseDenseMVTallRHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int cd, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDenseMVTallRHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int cd, int rl, int ru) {
                final int blocksizeI = 32;
                final int blocksizeK = 2*1024; //16KB vector blocks (L1)
                double[] bvals = b.valuesAt(0);
@@ -1019,9 +967,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultDenseDenseVM(DenseBlock a, DenseBlock b, 
DenseBlock c, int n, int cd, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDenseVM(DenseBlock a, DenseBlock b, 
DenseBlock c, int n, int cd, int rl, int ru) {
                double[] avals = a.valuesAt(0); //vector
                double[] cvals = c.valuesAt(0); //vector
                
@@ -1044,9 +990,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultDenseDenseMMShortLHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int m, int n, int cd, int rl, int ru)
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDenseMMShortLHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int m, int n, int cd, int rl, int ru) {
                //cache-conscious parallelization over rows in rhs matrix
                final int kn = (ru-rl)%4;
                
@@ -1087,9 +1031,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultDenseDenseMMSkinnyRHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int n2, int cd, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDenseMMSkinnyRHS(DenseBlock a, 
DenseBlock b, DenseBlock c, int n2, int cd, int rl, int ru) {
                //note: prepared rhs input via transpose for: m > n && cd > 64 
&& n < 64
                //however, explicit flag required since dimension change m2
                for( int i=rl; i < ru; i++ ) {
@@ -1100,9 +1042,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultDenseDenseMM(DenseBlock a, DenseBlock b, 
DenseBlock c, int n, int cd, int rl, int ru, int cl, int cu) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultDenseDenseMM(DenseBlock a, DenseBlock b, 
DenseBlock c, int n, int cd, int rl, int ru, int cl, int cu) {
                //1) Unrolled inner loop (for better instruction-level 
parallelism)
                //2) Blocked execution (for less cache trashing in parallel 
exec)       
                //3) Asymmetric block sizes (for less misses in inner loop, yet 
blocks in L1/L2)
@@ -1160,9 +1100,7 @@ public class LibMatrixMult
                                }
        }
 
-       private static void matrixMultDenseSparse(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean pm2, int rl, int ru) 
-               throws DMLRuntimeException 
-       {
+       private static void matrixMultDenseSparse(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean pm2, int rl, int ru) {
                DenseBlock a = m1.getDenseBlock();
                DenseBlock c = ret.getDenseBlock();
                int m = m1.rlen;
@@ -1227,9 +1165,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultSparseDense(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean pm2, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDense(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean pm2, int rl, int ru) {
                SparseBlock a = m1.sparseBlock;
                DenseBlock b = m2.getDenseBlock();
                DenseBlock c = ret.getDenseBlock();
@@ -1282,9 +1218,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultSparseDenseMVShortRHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDenseMVShortRHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int rl, int ru) {
                double[] bvals = b.valuesAt(0);
                double[] cvals = c.valuesAt(0);
                for( int i=rl; i<ru; i++ )
@@ -1293,9 +1227,7 @@ public class LibMatrixMult
                                        a.indexes(i), a.pos(i), 0, a.size(i));
        }
        
-       private static void matrixMultSparseDenseMVTallRHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int cd, long xsp, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDenseMVTallRHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int cd, long xsp, int rl, int ru) {
                double[] bvals = b.valuesAt(0);
                double[] cvals = c.valuesAt(0);
                
@@ -1321,9 +1253,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultSparseDenseVM(SparseBlock a, DenseBlock 
b, DenseBlock c, int n, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDenseVM(SparseBlock a, DenseBlock 
b, DenseBlock c, int n, int rl, int ru) {
                if( a.isEmpty(0) )
                        return;
                
@@ -1349,9 +1279,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultSparseDenseMMShortLHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDenseMMShortLHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int n, int cd, int rl, int ru) {
                int arlen = a.numRows();
                for( int i=0; i<arlen; i++ ) {
                        if( a.isEmpty(i) ) continue;
@@ -1391,9 +1319,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultSparseDenseMMSkinnyRHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int n, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDenseMMSkinnyRHS(SparseBlock a, 
DenseBlock b, DenseBlock c, int n, int rl, int ru) {
                //no blocking since b and c fit into cache anyway
                for( int i=rl, cix=rl*n; i<ru; i++, cix+=n ) {
                        if( a.isEmpty(i) ) continue;
@@ -1414,9 +1340,7 @@ public class LibMatrixMult
                }
        }
        
-       private static void matrixMultSparseDenseMM(SparseBlock a, DenseBlock 
b, DenseBlock c, int n, int cd, long xsp, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultSparseDenseMM(SparseBlock a, DenseBlock 
b, DenseBlock c, int n, int cd, long xsp, int rl, int ru) {
                //blocksizes to fit blocks of B (dense) and several rows of A/C 
in common L2 cache size, 
                //while blocking A/C for L1/L2 yet allowing long scans (2 
pages) in the inner loop over j
                //in case of almost ultra-sparse matrices, we cannot ensure the 
blocking for the rhs and
@@ -1464,9 +1388,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultSparseSparse(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean pm2, int rl, int ru) 
-               throws DMLRuntimeException
-       {       
+       private static void matrixMultSparseSparse(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, boolean pm2, int rl, int ru) {
                SparseBlock a = m1.sparseBlock;
                SparseBlock b = m2.sparseBlock;
                DenseBlock c = ret.getDenseBlock();
@@ -1570,11 +1492,8 @@ public class LibMatrixMult
         * @param ret result matrix
         * @param rl row lower bound
         * @param ru row upper bound
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void matrixMultUltraSparse(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, int rl, int ru) 
-               throws DMLRuntimeException 
-       {
+       private static void matrixMultUltraSparse(MatrixBlock m1, MatrixBlock 
m2, MatrixBlock ret, int rl, int ru) {
                final boolean leftUS = m1.isUltraSparse()
                        || (m1.isUltraSparse(false) && !m2.isUltraSparse());
                final int m  = m1.rlen;
@@ -1754,9 +1673,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultTransposeSelfDense( MatrixBlock m1, 
MatrixBlock ret, boolean leftTranspose, int rl, int ru ) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultTransposeSelfDense( MatrixBlock m1, 
MatrixBlock ret, boolean leftTranspose, int rl, int ru ) {
                //2) transpose self matrix multiply dense
                // (compute only upper-triangular matrix due to symmetry)
                DenseBlock a = m1.getDenseBlock();
@@ -1909,9 +1826,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultTransposeSelfSparse( MatrixBlock m1, 
MatrixBlock ret, boolean leftTranspose, int rl, int ru ) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultTransposeSelfSparse( MatrixBlock m1, 
MatrixBlock ret, boolean leftTranspose, int rl, int ru ) {
                //2) transpose self matrix multiply sparse
                // (compute only upper-triangular matrix due to symmetry)
                SparseBlock a = m1.sparseBlock;
@@ -2026,9 +1941,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultPermuteDense(MatrixBlock pm1, MatrixBlock 
m2, MatrixBlock ret1, MatrixBlock ret2, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultPermuteDense(MatrixBlock pm1, MatrixBlock 
m2, MatrixBlock ret1, MatrixBlock ret2, int rl, int ru) {
                double[] a = pm1.getDenseBlockValues();
                DenseBlock b = m2.getDenseBlock();
                DenseBlock c = ret1.getDenseBlock();
@@ -2461,9 +2374,7 @@ public class LibMatrixMult
                ret.quickSetValue(0, 0, wsloss);
        }
        
-       private static void addMatrixMultWSLossNoWeightCorrection(MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, int k) 
-               throws DMLRuntimeException 
-       {
+       private static void addMatrixMultWSLossNoWeightCorrection(MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, int k) {
                MatrixBlock tmp1 = new MatrixBlock(mU.clen, mU.clen, false);
                MatrixBlock tmp2 = new MatrixBlock(mU.clen, mU.clen, false);
                matrixMultTransposeSelf(mU, tmp1, true, k);
@@ -2473,9 +2384,7 @@ public class LibMatrixMult
                        dotProduct(tmp1.getDenseBlockValues(), 
tmp2.getDenseBlockValues(), mU.clen*mU.clen)));
        }
 
-       private static void matrixMultWSigmoidDense(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) 
-               throws DMLRuntimeException 
-       {
+       private static void matrixMultWSigmoidDense(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) {
                DenseBlock w = mW.getDenseBlock();
                DenseBlock c = ret.getDenseBlock();
                DenseBlock u = mU.getDenseBlock();
@@ -2515,9 +2424,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWSigmoidSparseDense(MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int 
ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWSigmoidSparseDense(MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int 
ru) {
                SparseBlock w = mW.sparseBlock;
                SparseBlock c = ret.sparseBlock;
                DenseBlock u = mU.getDenseBlock();
@@ -2545,9 +2452,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWSigmoidGeneric (MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int 
ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWSigmoidGeneric (MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int 
ru) {
                final int n = mW.clen; 
                final int cd = mU.clen;
        
@@ -2590,9 +2495,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWDivMMDense(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int 
ru, int cl, int cu) 
-               throws DMLRuntimeException
-       {       
+       private static void matrixMultWDivMMDense(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int 
ru, int cl, int cu) {
                final boolean basic = wt.isBasic();
                final boolean left = wt.isLeft();
                final boolean mult = wt.isMult();
@@ -2643,9 +2546,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWDivMMSparseDense(MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, 
int rl, int ru, int cl, int cu) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWDivMMSparseDense(MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, 
int rl, int ru, int cl, int cu) {
                final boolean basic = wt.isBasic();
                final boolean left = wt.isLeft();
                final boolean mult = wt.isMult();
@@ -2744,9 +2645,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWDivMMGeneric(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int 
ru, int cl, int cu) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWDivMMGeneric(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int 
ru, int cl, int cu) {
                final boolean basic = wt.isBasic();
                final boolean left = wt.isLeft(); 
                final boolean mult = wt.isMult();
@@ -2930,9 +2829,7 @@ public class LibMatrixMult
                ret.quickSetValue(0, 0, wceval);
        }
 
-       private static void matrixMultWuMMDense(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWuMMDense(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) 
{
                DenseBlock w = mW.getDenseBlock();
                DenseBlock c = ret.getDenseBlock();
                DenseBlock u = mU.getDenseBlock();
@@ -2971,9 +2868,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWuMMSparseDense(MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, 
int rl, int ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWuMMSparseDense(MatrixBlock mW, 
MatrixBlock mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, 
int rl, int ru) {
                SparseBlock w = mW.sparseBlock;
                SparseBlock c = ret.sparseBlock;
                DenseBlock u = mU.getDenseBlock();
@@ -2999,9 +2894,7 @@ public class LibMatrixMult
                }
        }
 
-       private static void matrixMultWuMMGeneric (MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int 
ru) 
-               throws DMLRuntimeException
-       {
+       private static void matrixMultWuMMGeneric (MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int 
ru) {
                final int n = mW.clen;
                final int cd = mU.clen;
                boolean flagmult = (wt==WUMMType.MULT);
@@ -3600,9 +3493,7 @@ public class LibMatrixMult
                        c[cix+k2] += b.quickGetValue(bix, k2) * wtmp;
        }
 
-       private static double wumm( final double wij, double[] u, double[] v, 
final int uix, final int vix, final boolean flagmult, ValueFunction fn, final 
int len ) 
-               throws DMLRuntimeException
-       {
+       private static double wumm( final double wij, double[] u, double[] v, 
final int uix, final int vix, final boolean flagmult, ValueFunction fn, final 
int len ) {
                //compute dot product over ui vj 
                double uvij = dotProduct(u, v, uix, vix, len);
                
@@ -3613,9 +3504,7 @@ public class LibMatrixMult
                return flagmult ? wij * cval : wij / cval;
        }
 
-       private static double wumm( final double wij, MatrixBlock u, 
MatrixBlock v, final int uix, final int vix, final boolean flagmult, 
ValueFunction fn, final int len ) 
-               throws DMLRuntimeException
-       {
+       private static double wumm( final double wij, MatrixBlock u, 
MatrixBlock v, final int uix, final int vix, final boolean flagmult, 
ValueFunction fn, final int len ) {
                //compute dot product over ui vj 
                double uvij = dotProductGeneric(u, v, uix, vix, len);
 
@@ -3694,9 +3583,7 @@ public class LibMatrixMult
                return nnz;
        }
 
-       private static MatrixBlock prepMatrixMultTransposeSelfInput( 
MatrixBlock m1, boolean leftTranspose ) 
-               throws DMLRuntimeException
-       {
+       private static MatrixBlock prepMatrixMultTransposeSelfInput( 
MatrixBlock m1, boolean leftTranspose ) {
                MatrixBlock ret = m1;
                
                if( !leftTranspose && m1.sparse && m1.rlen > 1) //X%*%t(X) 
SPARSE MATRIX
@@ -3750,9 +3637,7 @@ public class LibMatrixMult
                                && OptimizerUtils.getSparsity(m2.rlen, m2.clen, 
m2.nonZeros)<1.0);
        }
 
-       private static MatrixBlock prepMatrixMultRightInput( MatrixBlock m1, 
MatrixBlock m2 ) 
-               throws DMLRuntimeException
-       {
+       private static MatrixBlock prepMatrixMultRightInput( MatrixBlock m1, 
MatrixBlock m2 ) {
                MatrixBlock ret = m2;
                
                //transpose if dense-dense, skinny rhs matrix (not vector), and 
memory guarded by output 
@@ -3884,8 +3769,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Object call() throws DMLRuntimeException
-               {
+               public Object call() {
                        //setup target index ranges
                        int rl = _pm2c ? 0 : _rl;
                        int ru = _pm2c ? _m1.rlen : _ru;
@@ -3925,9 +3809,7 @@ public class LibMatrixMult
                private int _rl = -1;
                private int _ru = -1;
 
-               protected MatrixMultChainTask( MatrixBlock mX, MatrixBlock mV, 
MatrixBlock mW, ChainType ct, int rl, int ru ) 
-                       throws DMLRuntimeException
-               {
+               protected MatrixMultChainTask( MatrixBlock mX, MatrixBlock mV, 
MatrixBlock mW, ChainType ct, int rl, int ru ) {
                        _m1 = mX;
                        _m2 = mV;
                        _m3 = mW;
@@ -3937,8 +3819,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public double[] call() throws DMLRuntimeException
-               {
+               public double[] call() {
                        //thread-local allocation for partial aggregation
                        MatrixBlock ret = new MatrixBlock(1, _m1.clen, false);
                        ret.allocateDenseBlock();
@@ -3973,7 +3854,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Object call() throws DMLRuntimeException {
+               public Object call() {
                        if( _m1.sparse )
                                matrixMultTransposeSelfSparse(_m1, _ret, _left, 
_rl, _ru);
                        else
@@ -4002,8 +3883,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Object call() throws DMLRuntimeException
-               {
+               public Object call() {
                        if( _m2.sparse )
                                matrixMultPermuteSparse(_pm1, _m2, _ret1, 
_ret2, _rl, _ru);
                        else if( _ret1.sparse )
@@ -4026,9 +3906,7 @@ public class LibMatrixMult
                private int _rl = -1;
                private int _ru = -1;
 
-               protected MatrixMultWSLossTask(MatrixBlock mX, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mW, WeightsType wt, int rl, int ru) 
-                       throws DMLRuntimeException
-               {
+               protected MatrixMultWSLossTask(MatrixBlock mX, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mW, WeightsType wt, int rl, int ru) {
                        _mX = mX;
                        _mU = mU;
                        _mV = mV;
@@ -4043,8 +3921,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Double call() throws DMLRuntimeException
-               {
+               public Double call() {
                        if( !_mX.sparse && !_mU.sparse && !_mV.sparse && 
(_mW==null || !_mW.sparse) 
                                && !_mX.isEmptyBlock() && !_mU.isEmptyBlock() 
&& !_mV.isEmptyBlock() 
                                && (_mW==null || !_mW.isEmptyBlock()))
@@ -4070,9 +3947,7 @@ public class LibMatrixMult
                private int _rl = -1;
                private int _ru = -1;
                
-               protected MatrixMultWSigmoidTask(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) 
-                       throws DMLRuntimeException
-               {
+               protected MatrixMultWSigmoidTask(MatrixBlock mW, MatrixBlock 
mU, MatrixBlock mV, MatrixBlock ret, WSigmoidType wt, int rl, int ru) {
                        _mW = mW;
                        _mU = mU;
                        _mV = mV;
@@ -4083,8 +3958,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Long call() throws DMLRuntimeException
-               {
+               public Long call() {
                        //core weighted square sum mm computation
                        if( !_mW.sparse && !_mU.sparse && !_mV.sparse && 
!_mU.isEmptyBlock() && !_mV.isEmptyBlock() )
                                matrixMultWSigmoidDense(_mW, _mU, _mV, _ret, 
_wt, _rl, _ru);
@@ -4111,9 +3985,7 @@ public class LibMatrixMult
                private int _cl = -1;
                private int _cu = -1;
                
-               protected MatrixMultWDivTask(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, 
int cl, int cu) 
-                       throws DMLRuntimeException
-               {
+               protected MatrixMultWDivTask(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock mX, MatrixBlock ret, WDivMMType wt, int rl, int ru, 
int cl, int cu) {
                        _mW = mW;
                        _mU = mU;
                        _mV = mV;
@@ -4127,8 +3999,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Long call() throws DMLRuntimeException
-               {
+               public Long call() {
                        //core weighted div mm computation
                        boolean scalarX = _wt.hasScalar();
                        if( !_mW.sparse && !_mU.sparse && !_mV.sparse && 
(_mX==null || !_mX.sparse || scalarX) && !_mU.isEmptyBlock() && 
!_mV.isEmptyBlock() )
@@ -4156,9 +4027,7 @@ public class LibMatrixMult
                private int _rl = -1;
                private int _ru = -1;
 
-               protected MatrixMultWCeTask(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, double eps, WCeMMType wt, int rl, int ru) 
-                       throws DMLRuntimeException
-               {
+               protected MatrixMultWCeTask(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, double eps, WCeMMType wt, int rl, int ru) {
                        _mW = mW;
                        _mU = mU;
                        _mV = mV;
@@ -4173,8 +4042,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Double call() throws DMLRuntimeException
-               {
+               public Double call() {
                        //core weighted cross entropy mm computation
                        if( !_mW.sparse && !_mU.sparse && !_mV.sparse && 
!_mU.isEmptyBlock() && !_mV.isEmptyBlock() )
                                matrixMultWCeMMDense(_mW, _mU, _mV, _eps, _ret, 
_wt, _rl, _ru);
@@ -4199,9 +4067,7 @@ public class LibMatrixMult
                private int _rl = -1;
                private int _ru = -1;
                
-               protected MatrixMultWuTask(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) 
-                       throws DMLRuntimeException
-               {
+               protected MatrixMultWuTask(MatrixBlock mW, MatrixBlock mU, 
MatrixBlock mV, MatrixBlock ret, WUMMType wt, ValueFunction fn, int rl, int ru) 
{
                        _mW = mW;
                        _mU = mU;
                        _mV = mV;
@@ -4213,8 +4079,7 @@ public class LibMatrixMult
                }
                
                @Override
-               public Long call() throws DMLRuntimeException
-               {
+               public Long call() {
                        //core weighted square sum mm computation
                        if( !_mW.sparse && !_mU.sparse && !_mV.sparse && 
!_mU.isEmptyBlock() && !_mV.isEmptyBlock() )
                                matrixMultWuMMDense(_mW, _mU, _mV, _ret, _wt, 
_fn, _rl, _ru);

http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java
index 4eb284e..c0922da 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixNative.java
@@ -30,7 +30,6 @@ import org.apache.sysml.api.DMLScript;
 import org.apache.sysml.conf.ConfigurationManager;
 import org.apache.sysml.conf.DMLConfig;
 import org.apache.sysml.hops.OptimizerUtils;
-import org.apache.sysml.runtime.DMLRuntimeException;
 import org.apache.sysml.utils.NativeHelper;
 import org.apache.sysml.utils.Statistics;
 
@@ -61,13 +60,12 @@ public class LibMatrixNative
         * @param m2 rhs matrix block
         * @param ret output matrix block
         * @param k number of threads
-        * @throws DMLRuntimeException if error occurs
         */
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int k) throws DMLRuntimeException {
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int k) {
                matrixMult(m1, m2, ret, k, true);
        }
        
-       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int k, boolean examSparsity) throws DMLRuntimeException {
+       public static void matrixMult(MatrixBlock m1, MatrixBlock m2, 
MatrixBlock ret, int k, boolean examSparsity) {
                // Sanity check:
                k = k <= 0 ? NativeHelper.getMaxNumThreads() : k;
                
@@ -125,9 +123,8 @@ public class LibMatrixNative
         * @param filter filter
         * @param outputBlock output of convolution
         * @param params convolution parameters
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void conv2d(MatrixBlock input, MatrixBlock filter, 
MatrixBlock outputBlock, ConvolutionParameters params) throws 
DMLRuntimeException {
+       public static void conv2d(MatrixBlock input, MatrixBlock filter, 
MatrixBlock outputBlock, ConvolutionParameters params) {
                LibMatrixDNN.checkInputsConv2d(input, filter, outputBlock, 
params);
                params.numThreads = params.numThreads <= 0 ? 
NativeHelper.getMaxNumThreads() : params.numThreads;
                if(NativeHelper.isNativeLibraryLoaded() && 
!input.isInSparseFormat() && !filter.isInSparseFormat()) {
@@ -202,9 +199,8 @@ public class LibMatrixNative
         * @param dout errors from next layer
         * @param outputBlock  output errors
         * @param params convolution parameters
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void conv2dBackwardFilter(MatrixBlock input, MatrixBlock 
dout, MatrixBlock outputBlock, ConvolutionParameters params) throws 
DMLRuntimeException {
+       public static void conv2dBackwardFilter(MatrixBlock input, MatrixBlock 
dout, MatrixBlock outputBlock, ConvolutionParameters params) {
                LibMatrixDNN.checkInputsConv2dBackwardFilter(input, dout, 
outputBlock, params);
                params.numThreads = params.numThreads <= 0 ? 
NativeHelper.getMaxNumThreads() : params.numThreads;
                if(NativeHelper.isNativeLibraryLoaded() && 
!dout.isInSparseFormat() && !input.isInSparseFormat()) {
@@ -239,9 +235,8 @@ public class LibMatrixNative
         * @param dout errors from next layer
         * @param outputBlock  output errors
         * @param params convolution parameters
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static void conv2dBackwardData(MatrixBlock filter, MatrixBlock 
dout, MatrixBlock outputBlock, ConvolutionParameters params) throws 
DMLRuntimeException {
+       public static void conv2dBackwardData(MatrixBlock filter, MatrixBlock 
dout, MatrixBlock outputBlock, ConvolutionParameters params) {
                LibMatrixDNN.checkInputsConv2dBackwardData(filter, dout, 
outputBlock, params);
                params.numThreads = params.numThreads <= 0 ? 
NativeHelper.getMaxNumThreads() : params.numThreads;
                if(NativeHelper.isNativeLibraryLoaded() && 
!dout.isInSparseFormat() && !filter.isInSparseFormat()) {

http://git-wip-us.apache.org/repos/asf/systemml/blob/1f323976/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
----------------------------------------------------------------------
diff --git 
a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java 
b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
index 2c9f476..33a14b8 100644
--- a/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
+++ b/src/main/java/org/apache/sysml/runtime/matrix/data/LibMatrixOuterAgg.java
@@ -21,7 +21,6 @@ package org.apache.sysml.runtime.matrix.data;
 
 import java.util.Arrays;
 
-import org.apache.sysml.runtime.DMLRuntimeException;
 import org.apache.sysml.runtime.functionobjects.Builtin;
 import org.apache.sysml.runtime.functionobjects.Equals;
 import org.apache.sysml.runtime.functionobjects.GreaterThan;
@@ -113,9 +112,7 @@ public class LibMatrixOuterAgg
                        
        }
 
-       public static int[] prepareRowIndices(int iCols, double vmb[], 
BinaryOperator bOp, AggregateUnaryOperator uaggOp) 
-               throws DMLRuntimeException
-       {
+       public static int[] prepareRowIndices(int iCols, double vmb[], 
BinaryOperator bOp, AggregateUnaryOperator uaggOp) {
                return (isRowIndexMax(uaggOp)?prepareRowIndicesMax(iCols, vmb, 
bOp):prepareRowIndicesMin(iCols, vmb, bOp));
        }
        
@@ -145,9 +142,8 @@ public class LibMatrixOuterAgg
         * @param vmb ?
         * @param bOp binary operator
         * @return array of maximum row indices
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static int[] prepareRowIndicesMax(int iCols, double vmb[], 
BinaryOperator bOp) throws DMLRuntimeException
+       public static int[] prepareRowIndicesMax(int iCols, double vmb[], 
BinaryOperator bOp)
        {
                int[] vixCumSum = null;
                int[] vix = new int[iCols];
@@ -225,9 +221,8 @@ public class LibMatrixOuterAgg
         * @param vmb ?
         * @param bOp binary operator
         * @return array of minimum row indices
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       public static int[] prepareRowIndicesMin(int iCols, double vmb[], 
BinaryOperator bOp) throws DMLRuntimeException
+       public static int[] prepareRowIndicesMin(int iCols, double vmb[], 
BinaryOperator bOp)
        {
                int[] vixCumSum = null;
                int[] vix = new int[iCols];
@@ -302,9 +297,7 @@ public class LibMatrixOuterAgg
                }
        }
 
-       public static void aggregateMatrix(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, int[] bvi, BinaryOperator bOp, AggregateUnaryOperator 
uaggOp) 
-                       throws DMLRuntimeException
-       {               
+       public static void aggregateMatrix(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, int[] bvi, BinaryOperator bOp, AggregateUnaryOperator 
uaggOp) {
                // compute unary aggregate outer chain
                if(isRowIndexMax(uaggOp)) 
                {
@@ -370,14 +363,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRowSumLtGe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRowSumLtGe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int cnt = (ai == 0) ? agg0: sumRowSumLtGeColSumGtLe(ai, 
bv, bOp);
@@ -392,14 +381,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRowSumGtLe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static void uaRowSumGtLe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int cnt = (ai == 0) ? agg0: sumRowSumGtLeColSumLtGe(ai, 
bv, bOp);
@@ -415,14 +400,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRowSumEqNe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRowSumEqNe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumEqNe(0.0, bv, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int cnt = (ai == 0) ? agg0: sumEqNe(ai, bv, bOp);
@@ -437,11 +418,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaColSumLtGe(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaColSumLtGe(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, BinaryOperator bOp) {
                if (in1Val.isInSparseFormat())
                        s_uaColSumLtGe(in1Val, outVal, bv, bOp);
                else
@@ -455,11 +433,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaColSumGtLe(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static void uaColSumGtLe(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, BinaryOperator bOp) {
                if (in1Val.isInSparseFormat())
                        s_uaColSumGtLe(in1Val, outVal, bv, bOp);
                else
@@ -474,11 +449,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaColSumEqNe(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaColSumEqNe(MatrixBlock in1Val, MatrixBlock 
outVal, double[] bv, BinaryOperator bOp) {
                if (in1Val.isInSparseFormat())
                        s_uaColSumEqNe(in1Val, outVal, bv, bOp);
                else
@@ -493,14 +465,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaSumLtGe(MatrixBlock in, MatrixBlock out, double[] 
bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaSumLtGe(MatrixBlock in, MatrixBlock out, double[] 
bv, BinaryOperator bOp) {
                int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int cnt = (ai == 0) ? agg0: sumRowSumLtGeColSumGtLe(ai, 
bv, bOp);
@@ -516,11 +484,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaSumGtLe(MatrixBlock in, MatrixBlock out, double[] 
bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaSumGtLe(MatrixBlock in, MatrixBlock out, double[] 
bv, BinaryOperator bOp) {
                int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp);
                int m = in.rlen;
                
@@ -540,14 +505,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaSumEqNe(MatrixBlock in, MatrixBlock out, double[] 
bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaSumEqNe(MatrixBlock in, MatrixBlock out, double[] 
bv, BinaryOperator bOp) {
                int agg0 = sumEqNe(0.0, bv, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int cnt = (ai == 0) ? agg0: sumEqNe(ai, bv, bOp);
@@ -564,14 +525,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMLt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMLt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uarimaxLt(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uarimaxLt(ai, bv, bvi, bOp);
@@ -586,11 +543,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMLe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMLe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uarimaxLe(0.0, bv, bvi, bOp);
                int m = in.rlen;
                
@@ -608,11 +562,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMGt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMGt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uarimaxGt(0.0, bv, bvi, bOp);
                int m = in.rlen;
                
@@ -631,14 +582,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMGe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMGe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uarimaxGe(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uarimaxGe(ai, bv, bvi, bOp);
@@ -654,14 +601,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMEq(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMEq(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uarimaxEq(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uarimaxEq(ai, bv, bvi, bOp);
@@ -678,11 +621,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMNe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMNe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uarimaxNe(0.0, bv, bvi, bOp);
                int m = in.rlen;
                
@@ -701,14 +641,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMinLt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMinLt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uariminLt(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uariminLt(ai, bv, bvi, bOp);
@@ -723,14 +659,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMinLe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMinLe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uariminLe(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uariminLe(ai, bv, bvi, bOp);
@@ -745,14 +677,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMinGt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMinGt(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uariminGt(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uariminGt(ai, bv, bvi, bOp);
@@ -768,11 +696,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMinGe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMinGe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uariminGe(0.0, bv, bvi, bOp);
                int m = in.rlen;
                
@@ -791,14 +716,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMinEq(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMinEq(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uariminEq(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uariminEq(ai, bv, bvi, bOp);
@@ -815,14 +736,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void uaRIMinNe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void uaRIMinNe(MatrixBlock in, MatrixBlock out, double[] 
bv, int[] bvi, BinaryOperator bOp) {
                int ind0 = uariminNe(0.0, bv, bvi, bOp);
                int m = in.rlen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(i, 0);
                        int ind = (ai == 0) ? ind0: uariminNe(ai, bv, bvi, bOp);
@@ -838,15 +755,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void d_uaColSumLtGe(MatrixBlock in, MatrixBlock out, 
double[] bv, 
-                       BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static void d_uaColSumLtGe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp);
                int m = in.clen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(0, i);
                        int cnt = (ai == 0) ? agg0: sumRowSumGtLeColSumLtGe(ai, 
bv, bOp);
@@ -861,11 +773,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void s_uaColSumLtGe(MatrixBlock in, MatrixBlock out, 
double[] bv,        BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static void s_uaColSumLtGe(MatrixBlock in, MatrixBlock out, 
double[] bv,        BinaryOperator bOp) {
                int agg0 = sumRowSumGtLeColSumLtGe(0.0, bv, bOp);
 
                //allocate and initialize output values (not indices) 
@@ -899,14 +808,10 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void d_uaColSumGtLe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static void d_uaColSumGtLe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp);
                int m = in.clen;
-               
                for( int i=0; i<m; i++ ) {
                        double ai = in.quickGetValue(0, i);
                        int cnt = (ai == 0) ? agg0: sumRowSumLtGeColSumGtLe(ai, 
bv, bOp);
@@ -921,11 +826,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void s_uaColSumGtLe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static void s_uaColSumGtLe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumRowSumLtGeColSumGtLe(0.0, bv, bOp);
                
                //allocate and initialize output values (not indices) 
@@ -959,11 +861,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void d_uaColSumEqNe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void d_uaColSumEqNe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumEqNe(0.0, bv, bOp);
                int m = in.clen;
                
@@ -981,11 +880,8 @@ public class LibMatrixOuterAgg
         * @param out output matrix block
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static void s_uaColSumEqNe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {               
+       private static void s_uaColSumEqNe(MatrixBlock in, MatrixBlock out, 
double[] bv, BinaryOperator bOp) {
                int agg0 = sumEqNe(0.0, bv, bOp);
 
                //allocate and initialize output values (not indices) 
@@ -1020,14 +916,10 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int sumRowSumGtLeColSumLtGe(double value, double[] bv, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int sumRowSumGtLeColSumLtGe(double value, double[] bv, 
BinaryOperator bOp) {
                int ix = Arrays.binarySearch(bv, value);
                int cnt = 0;
-               
                if( ix >= 0 ){ //match, scan to next val
                        while( ix > 0 && value==bv[ix-1]) --ix;
                        ix++;   //Readjust index to match subsenquent index 
calculation.
@@ -1050,11 +942,8 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int sumRowSumLtGeColSumGtLe(double value, double[] bv, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int sumRowSumLtGeColSumGtLe(double value, double[] bv, 
BinaryOperator bOp) {
                int ix = Arrays.binarySearch(bv, value);
                int cnt = 0;
                
@@ -1078,11 +967,8 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int sumEqNe(double value, double[] bv, BinaryOperator 
bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int sumEqNe(double value, double[] bv, BinaryOperator 
bOp) {
                int ix = Arrays.binarySearch(bv, value);
                int cnt = 0;
                
@@ -1105,11 +991,8 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uarimaxEq(double value, double[] bv, int bvi[], 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uarimaxEq(double value, double[] bv, int bvi[], 
BinaryOperator bOp) {
                int ix = Arrays.binarySearch(bv, value);
                int ixMax = bv.length;
                
@@ -1125,13 +1008,9 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uarimaxNe(double value, double[] bv, int bvi[], 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uarimaxNe(double value, double[] bv, int bvi[], 
BinaryOperator bOp) {
                int ixMax = bv.length;
-               
                if( bv[bv.length-1] == value ) 
                        ixMax = bvi[0]+1;
                return ixMax;
@@ -1144,11 +1023,8 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uarimaxGt(double value, double[] bv, int bvi[], 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uarimaxGt(double value, double[] bv, int bvi[], 
BinaryOperator bOp) {
                int ixMax = bv.length;
                
                if(value <= bv[0] || value > bv[bv.length-1]) 
@@ -1168,21 +1044,15 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uarimaxGe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uarimaxGe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) {
                int ixMax = bv.length;
-               
                if(value < bv[0] || value >= bv[bv.length-1]) 
                        return ixMax;
-               
                int ix = Arrays.binarySearch(bv, value);
                if(ix < 0)
                        ix = Math.abs(ix)-2;
                ixMax = bvi[ix]+1; 
-               
                return ixMax;
        }
 
@@ -1193,21 +1063,15 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uarimaxLt(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uarimaxLt(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) {
                int ixMax = bv.length;
-               
                if(value < bv[0] || value >= bv[bv.length-1]) 
                        return ixMax;
-               
                int ix = Arrays.binarySearch(bv, value);
                if (ix < 0) 
                        ix = Math.abs(ix)-2;
                ixMax = bvi[ix]+1; 
-               
                return ixMax;
        }
 
@@ -1217,21 +1081,15 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uarimaxLe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uarimaxLe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) {
                int ixMax = bv.length;
-               
                if(value <= bv[0] || value > bv[bv.length-1]) 
                        return ixMax;
-               
                int ix = Arrays.binarySearch(bv, value);
                if(ix < 0)
                        ix = Math.abs(ix)-1;
                ixMax = bvi[ix]+1; 
-               
                return ixMax;
        }
        
@@ -1242,13 +1100,9 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uariminEq(double value, double[] bv, int bvi[], 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uariminEq(double value, double[] bv, int bvi[], 
BinaryOperator bOp) {
                int ixMin = 1;
-               
                if(value == bv[0])
                        ixMin = bvi[0]+1;
                return ixMin;
@@ -1261,13 +1115,9 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uariminNe(double value, double[] bv, int bvi[], 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uariminNe(double value, double[] bv, int bvi[], 
BinaryOperator bOp) {
                int ixMin = 1;
-               
                if( bv[0] != value ) 
                        ixMin = bvi[0]+1;
                return ixMin;
@@ -1280,20 +1130,14 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uariminGt(double value, double[] bv, int bvi[], 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uariminGt(double value, double[] bv, int bvi[], 
BinaryOperator bOp) {
                int ixMin = 1;
-               
                if(value <= bv[0] || value > bv[bv.length-1]) 
                        return ixMin;
-               
                int ix = Arrays.binarySearch(bv, value);
                ix = Math.abs(ix)-1;
                ixMin = bvi[ix]+1; 
-               
                return ixMin;
        }
 
@@ -1304,21 +1148,15 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uariminGe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uariminGe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) {
                int ixMin = 1;
-               
                if(value <= bv[0] || value > bv[bv.length-1]) 
                        return ixMin;
-               
                int ix = Arrays.binarySearch(bv, value);
                if(ix < 0)
                        ix = Math.abs(ix)-1;
                ixMin = bvi[ix-1]+1; 
-               
                return ixMin;
        }
 
@@ -1329,21 +1167,15 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uariminLt(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uariminLt(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) {
                int ixMin = 1;
-               
                if(value < bv[0] || value >= bv[bv.length-1]) 
                        return ixMin;
-               
                int ix = Arrays.binarySearch(bv, value);
                if (ix < 0) 
                        ix = Math.abs(ix)-2;
                ixMin = bvi[ix]+1; 
-               
                return ixMin;
        }
 
@@ -1353,21 +1185,15 @@ public class LibMatrixOuterAgg
         * @param value ?
         * @param bv ?
         * @param bOp binary operator
-        * @throws DMLRuntimeException if DMLRuntimeException occurs
         */
-       private static int uariminLe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) 
-                       throws DMLRuntimeException
-       {
+       private static int uariminLe(double value, double[] bv, int[] bvi, 
BinaryOperator bOp) {
                int ixMin = 1;
-               
                if(value < bv[0] || value > bv[bv.length-1]) 
                        return ixMin;
-               
                int ix = Arrays.binarySearch(bv, value);
                if (ix < 0) 
                        ix = Math.abs(ix)-1;
                ixMin = bvi[ix]+1; 
-               
                return ixMin;
        }
        

Reply via email to