http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionLSQRTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionLSQRTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionLSQRTrainer.java
index 36285e6..0e9941f 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionLSQRTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionLSQRTrainer.java
@@ -20,9 +20,9 @@ package org.apache.ignite.ml.regressions.linear;
 import java.util.Arrays;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import 
org.apache.ignite.ml.dataset.primitive.builder.data.SimpleLabeledDatasetDataBuilder;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.apache.ignite.ml.math.isolve.lsqr.AbstractLSQR;
 import org.apache.ignite.ml.math.isolve.lsqr.LSQROnHeap;
 import org.apache.ignite.ml.math.isolve.lsqr.LSQRResult;
@@ -54,7 +54,7 @@ public class LinearRegressionLSQRTrainer implements 
SingleLabelDatasetTrainer<Li
         }
 
         double[] x = res.getX();
-        Vector weights = new DenseLocalOnHeapVector(Arrays.copyOfRange(x, 0, 
x.length - 1));
+        Vector weights = new DenseVector(Arrays.copyOfRange(x, 0, x.length - 
1));
 
         return new LinearRegressionModel(weights, x[x.length - 1]);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionModel.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionModel.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionModel.java
index 6586a81..43c5b54 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionModel.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionModel.java
@@ -22,7 +22,7 @@ import java.util.Objects;
 import org.apache.ignite.ml.Exportable;
 import org.apache.ignite.ml.Exporter;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Simple linear regression model which predicts result value Y as a linear 
combination of input variables:
@@ -104,4 +104,4 @@ public class LinearRegressionModel implements Model<Vector, 
Double>, Exportable<
             ", intercept=" + intercept +
             '}';
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionSGDTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionSGDTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionSGDTrainer.java
index 674d208..e033a98 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionSGDTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/linear/LinearRegressionSGDTrainer.java
@@ -23,10 +23,10 @@ import org.apache.ignite.ml.dataset.Dataset;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
 import org.apache.ignite.ml.dataset.primitive.data.SimpleLabeledDatasetData;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.math.functions.IgniteFunction;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.apache.ignite.ml.nn.Activators;
 import org.apache.ignite.ml.nn.MLPTrainer;
 import org.apache.ignite.ml.nn.MultilayerPerceptron;
@@ -100,17 +100,13 @@ public class LinearRegressionSGDTrainer<P extends 
Serializable> implements Singl
             seed
         );
 
-        IgniteBiFunction<K, V, double[]> lbE = new IgniteBiFunction<K, V, 
double[]>() {
-            @Override public double[] apply(K k, V v) {
-                return new double[]{lbExtractor.apply(k, v)};
-            }
-        };
+        IgniteBiFunction<K, V, double[]> lbE = (IgniteBiFunction<K, V, 
double[]>)(k, v) -> new double[]{lbExtractor.apply(k, v)};
 
         MultilayerPerceptron mlp = trainer.fit(datasetBuilder, 
featureExtractor, lbE);
 
         double[] p = mlp.parameters().getStorage().data();
 
-        return new LinearRegressionModel(new DenseLocalOnHeapVector(
+        return new LinearRegressionModel(new DenseVector(
             Arrays.copyOf(p, p.length - 1)),
             p[p.length - 1]
         );

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionModel.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionModel.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionModel.java
index a5f4607..a5938a2 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionModel.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionModel.java
@@ -22,7 +22,7 @@ import java.util.Objects;
 import org.apache.ignite.ml.Exportable;
 import org.apache.ignite.ml.Exporter;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Logistic regression (logit model) is a generalized linear model used for 
binomial regression.
@@ -197,4 +197,4 @@ public class LogisticRegressionModel implements 
Model<Vector, Double>, Exportabl
             ", intercept=" + intercept +
             '}';
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionSGDTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionSGDTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionSGDTrainer.java
index 80773a6..8ec9a7b 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionSGDTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/binomial/LogisticRegressionSGDTrainer.java
@@ -23,10 +23,10 @@ import org.apache.ignite.ml.dataset.Dataset;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
 import org.apache.ignite.ml.dataset.primitive.data.SimpleLabeledDatasetData;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.math.functions.IgniteFunction;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.apache.ignite.ml.nn.Activators;
 import org.apache.ignite.ml.nn.MLPTrainer;
 import org.apache.ignite.ml.nn.MultilayerPerceptron;
@@ -104,7 +104,7 @@ public class LogisticRegressionSGDTrainer<P extends 
Serializable> implements Sin
 
         double[] params = mlp.parameters().getStorage().data();
 
-        return new LogisticRegressionModel(new 
DenseLocalOnHeapVector(Arrays.copyOf(params, params.length - 1)),
+        return new LogisticRegressionModel(new 
DenseVector(Arrays.copyOf(params, params.length - 1)),
             params[params.length - 1]
         );
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassModel.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassModel.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassModel.java
index 0817432..7e48a21 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassModel.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassModel.java
@@ -25,7 +25,7 @@ import java.util.TreeMap;
 import org.apache.ignite.ml.Exportable;
 import org.apache.ignite.ml.Exporter;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import 
org.apache.ignite.ml.regressions.logistic.binomial.LogisticRegressionModel;
 
 /** Base class for multi-classification model for set of Logistic Regression 
classifiers. */
@@ -77,9 +77,14 @@ public class LogRegressionMultiClassModel implements 
Model<Vector, Double>, Expo
     @Override public String toString() {
         StringBuilder wholeStr = new StringBuilder();
 
-        models.forEach((clsLb, mdl) -> {
-            wholeStr.append("The class with label ").append(clsLb).append(" 
has classifier: ").append(mdl.toString()).append(System.lineSeparator());
-        });
+        models.forEach((clsLb, mdl) ->
+            wholeStr
+                .append("The class with label ")
+                .append(clsLb)
+                .append(" has classifier: ")
+                .append(mdl.toString())
+                .append(System.lineSeparator())
+        );
 
         return wholeStr.toString();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassTrainer.java
index b67ac27..2d18107 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/regressions/logistic/multiclass/LogRegressionMultiClassTrainer.java
@@ -29,7 +29,7 @@ import org.apache.ignite.ml.dataset.Dataset;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.PartitionDataBuilder;
 import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.nn.MultilayerPerceptron;
 import org.apache.ignite.ml.nn.UpdatesStrategy;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/selection/cv/CrossValidation.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/cv/CrossValidation.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/cv/CrossValidation.java
index 8918450..e2fbf89 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/cv/CrossValidation.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/cv/CrossValidation.java
@@ -27,7 +27,7 @@ import org.apache.ignite.ml.Model;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.impl.cache.CacheBasedDatasetBuilder;
 import org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.selection.scoring.cursor.CacheBasedLabelPairCursor;
 import org.apache.ignite.ml.selection.scoring.cursor.LabelPairCursor;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
index 589aecc..ec8db14 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/CacheBasedLabelPairCursor.java
@@ -24,7 +24,7 @@ import org.apache.ignite.cache.query.QueryCursor;
 import org.apache.ignite.cache.query.ScanQuery;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.selection.scoring.LabelPair;
 import org.jetbrains.annotations.NotNull;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/LocalLabelPairCursor.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/LocalLabelPairCursor.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/LocalLabelPairCursor.java
index 212dcd8..e77608f 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/LocalLabelPairCursor.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/cursor/LocalLabelPairCursor.java
@@ -22,7 +22,7 @@ import java.util.Map;
 import java.util.NoSuchElementException;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.selection.scoring.LabelPair;
 import org.jetbrains.annotations.NotNull;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
index 2ee0b2d..9620897 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/selection/scoring/evaluator/Evaluator.java
@@ -20,7 +20,7 @@ package org.apache.ignite.ml.selection.scoring.evaluator;
 import org.apache.ignite.IgniteCache;
 import org.apache.ignite.lang.IgniteBiPredicate;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.selection.scoring.cursor.CacheBasedLabelPairCursor;
 import org.apache.ignite.ml.selection.scoring.cursor.LabelPairCursor;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/Dataset.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/Dataset.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/Dataset.java
index cbed297..669b012 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/structures/Dataset.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/structures/Dataset.java
@@ -23,7 +23,7 @@ import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
 import java.util.Arrays;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Class for set of vectors. This is a base class in hierarchy of datasets.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/DatasetRow.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/DatasetRow.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/DatasetRow.java
index f70f7ca..1e3e12c 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/structures/DatasetRow.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/structures/DatasetRow.java
@@ -22,7 +22,7 @@ import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
 import java.io.Serializable;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /** Class to keep one observation in dataset. This is a base class for labeled 
and unlabeled rows. */
 public class DatasetRow<V extends Vector> implements Serializable, 
Externalizable {

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledDataset.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledDataset.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledDataset.java
index 69262ab..2968850 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledDataset.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledDataset.java
@@ -17,11 +17,11 @@
 
 package org.apache.ignite.ml.structures;
 
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.exceptions.CardinalityException;
 import org.apache.ignite.ml.math.exceptions.NoDataException;
 import org.apache.ignite.ml.math.exceptions.knn.NoLabelVectorException;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 
 /**
  * Class for set of labeled vectors.
@@ -199,7 +199,7 @@ public class LabeledDataset<L, Row extends LabeledVector> 
extends Dataset<Row> i
 
     /** */
     public static Vector emptyVector(int size, boolean isDistributed) {
-            return new DenseLocalOnHeapVector(size);
+            return new DenseVector(size);
     }
 
     /** Makes copy with new Label objects and old features and Metadata 
objects. */

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVector.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVector.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVector.java
index 9f0a881..8b0ed23 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVector.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVector.java
@@ -20,7 +20,7 @@ package org.apache.ignite.ml.structures;
 import java.io.IOException;
 import java.io.ObjectInput;
 import java.io.ObjectOutput;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Class for vector with label.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVectorDouble.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVectorDouble.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVectorDouble.java
index 4ef9eae..1d0573d 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVectorDouble.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/LabeledVectorDouble.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.ml.structures;
 
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Labeled vector specialized to double label.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/partition/LabeledDatasetPartitionDataBuilderOnHeap.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/partition/LabeledDatasetPartitionDataBuilderOnHeap.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/partition/LabeledDatasetPartitionDataBuilderOnHeap.java
index 00abde7..a7fae03 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/partition/LabeledDatasetPartitionDataBuilderOnHeap.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/partition/LabeledDatasetPartitionDataBuilderOnHeap.java
@@ -21,7 +21,7 @@ import java.io.Serializable;
 import java.util.Iterator;
 import org.apache.ignite.ml.dataset.PartitionDataBuilder;
 import org.apache.ignite.ml.dataset.UpstreamEntry;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.structures.LabeledDataset;
 import org.apache.ignite.ml.structures.LabeledVector;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/structures/preprocessing/LabeledDatasetLoader.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/preprocessing/LabeledDatasetLoader.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/preprocessing/LabeledDatasetLoader.java
index b9d56ae..60ae0f8 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/structures/preprocessing/LabeledDatasetLoader.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/structures/preprocessing/LabeledDatasetLoader.java
@@ -23,7 +23,7 @@ import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.List;
 import java.util.stream.Stream;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.exceptions.CardinalityException;
 import org.apache.ignite.ml.math.exceptions.NoDataException;
 import org.apache.ignite.ml.math.exceptions.knn.EmptyFileException;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationModel.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationModel.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationModel.java
index f806fb8..f0cdbea 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationModel.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationModel.java
@@ -22,7 +22,7 @@ import java.util.Objects;
 import org.apache.ignite.ml.Exportable;
 import org.apache.ignite.ml.Exporter;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Base class for SVM linear classification model.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationTrainer.java
index 10a339a..53bb99f 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearBinaryClassificationTrainer.java
@@ -22,9 +22,9 @@ import org.apache.ignite.ml.dataset.Dataset;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.PartitionDataBuilder;
 import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.apache.ignite.ml.structures.LabeledDataset;
 import org.apache.ignite.ml.structures.LabeledVector;
 import 
org.apache.ignite.ml.structures.partition.LabeledDatasetPartitionDataBuilderOnHeap;
@@ -71,7 +71,7 @@ public class SVMLinearBinaryClassificationTrainer implements 
SingleLabelDatasetT
             (upstream, upstreamSize) -> new EmptyContext(),
             partDataBuilder
         )) {
-            final int cols = dataset.compute(data -> data.colSize(), (a, b) -> 
a == null ? b : a);
+            final int cols = 
dataset.compute(org.apache.ignite.ml.structures.Dataset::colSize, (a, b) -> a 
== null ? b : a);
             final int weightVectorSizeWithIntercept = cols + 1;
             weights = 
initializeWeightsWithZeros(weightVectorSizeWithIntercept);
 
@@ -87,7 +87,7 @@ public class SVMLinearBinaryClassificationTrainer implements 
SingleLabelDatasetT
 
     /** */
     @NotNull private Vector initializeWeightsWithZeros(int vectorSize) {
-            return new DenseLocalOnHeapVector(vectorSize);
+            return new DenseVector(vectorSize);
     }
 
     /** */

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationModel.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationModel.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationModel.java
index bbec791..3765110 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationModel.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationModel.java
@@ -25,7 +25,7 @@ import java.util.TreeMap;
 import org.apache.ignite.ml.Exportable;
 import org.apache.ignite.ml.Exporter;
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /** Base class for multi-classification model for set of SVM classifiers. */
 public class SVMLinearMultiClassClassificationModel implements Model<Vector, 
Double>, Exportable<SVMLinearMultiClassClassificationModel>, Serializable {
@@ -76,9 +76,14 @@ public class SVMLinearMultiClassClassificationModel 
implements Model<Vector, Dou
     @Override public String toString() {
         StringBuilder wholeStr = new StringBuilder();
 
-        models.forEach((clsLb, mdl) -> {
-            wholeStr.append("The class with label ").append(clsLb).append(" 
has classifier: ").append(mdl.toString()).append(System.lineSeparator());
-        });
+        models.forEach((clsLb, mdl) ->
+            wholeStr
+                .append("The class with label ")
+                .append(clsLb)
+                .append(" has classifier: ")
+                .append(mdl.toString())
+                .append(System.lineSeparator())
+        );
 
         return wholeStr.toString();
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationTrainer.java
index 8b3c9a2..b571d0f 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/svm/SVMLinearMultiClassClassificationTrainer.java
@@ -28,7 +28,7 @@ import org.apache.ignite.ml.dataset.Dataset;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.PartitionDataBuilder;
 import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import 
org.apache.ignite.ml.structures.partition.LabelPartitionDataBuilderOnHeap;
 import org.apache.ignite.ml.structures.partition.LabelPartitionDataOnHeap;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/trainers/DatasetTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/trainers/DatasetTrainer.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/trainers/DatasetTrainer.java
index f72c5ee..3fe0aa4 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/trainers/DatasetTrainer.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/trainers/DatasetTrainer.java
@@ -25,7 +25,7 @@ import org.apache.ignite.ml.Model;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import org.apache.ignite.ml.dataset.impl.cache.CacheBasedDatasetBuilder;
 import org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 
 /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTree.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTree.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTree.java
index b2dfd49..9a912f7 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTree.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTree.java
@@ -23,7 +23,7 @@ import org.apache.ignite.ml.dataset.Dataset;
 import org.apache.ignite.ml.dataset.DatasetBuilder;
 import 
org.apache.ignite.ml.dataset.primitive.builder.context.EmptyContextBuilder;
 import org.apache.ignite.ml.dataset.primitive.context.EmptyContext;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 import org.apache.ignite.ml.trainers.DatasetTrainer;
 import org.apache.ignite.ml.tree.data.DecisionTreeData;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeConditionalNode.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeConditionalNode.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeConditionalNode.java
index fcb134b..110c199 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeConditionalNode.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeConditionalNode.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.ml.tree;
 
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Decision tree conditional (non-leaf) node.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeLeafNode.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeLeafNode.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeLeafNode.java
index b3645dd..7194511 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeLeafNode.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeLeafNode.java
@@ -17,7 +17,7 @@
 
 package org.apache.ignite.ml.tree;
 
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Decision tree leaf node which contains value.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeNode.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeNode.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeNode.java
index 55afc52..bd065f0 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeNode.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/tree/DecisionTreeNode.java
@@ -18,7 +18,7 @@
 package org.apache.ignite.ml.tree;
 
 import org.apache.ignite.ml.Model;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 
 /**
  * Base interface for decision tree nodes.

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/TreeFilter.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/tree/TreeFilter.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/TreeFilter.java
index 3e4dc00..5dcfd38 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/tree/TreeFilter.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/tree/TreeFilter.java
@@ -31,7 +31,7 @@ public interface TreeFilter extends Predicate<double[]>, 
Serializable {
      * @param other Predicate that will be logically-ANDed with this predicate.
      * @return Returns a composed predicate
      */
-    default TreeFilter and(TreeFilter other) {
+    public default TreeFilter and(TreeFilter other) {
         Objects.requireNonNull(other);
         return (t) -> test(t) && other.test(t);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBBinaryClassifierOnTreesTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBBinaryClassifierOnTreesTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBBinaryClassifierOnTreesTrainer.java
index f05755d..3789588 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBBinaryClassifierOnTreesTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBBinaryClassifierOnTreesTrainer.java
@@ -19,7 +19,7 @@ package org.apache.ignite.ml.tree.boosting;
 
 import org.apache.ignite.ml.Model;
 import org.apache.ignite.ml.composition.boosting.GDBBinaryClassifierTrainer;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.trainers.DatasetTrainer;
 import org.apache.ignite.ml.tree.DecisionTreeRegressionTrainer;
 import org.jetbrains.annotations.NotNull;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBRegressionOnTreesTrainer.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBRegressionOnTreesTrainer.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBRegressionOnTreesTrainer.java
index 3d36f9f..50c5f8d 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBRegressionOnTreesTrainer.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/boosting/GDBRegressionOnTreesTrainer.java
@@ -19,7 +19,7 @@ package org.apache.ignite.ml.tree.boosting;
 
 import org.apache.ignite.ml.Model;
 import org.apache.ignite.ml.composition.boosting.GDBRegressionTrainer;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.trainers.DatasetTrainer;
 import org.apache.ignite.ml.tree.DecisionTreeRegressionTrainer;
 import org.jetbrains.annotations.NotNull;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/tree/data/DecisionTreeDataBuilder.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/data/DecisionTreeDataBuilder.java
 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/data/DecisionTreeDataBuilder.java
index eca6ac3..9f8f2f7 100644
--- 
a/modules/ml/src/main/java/org/apache/ignite/ml/tree/data/DecisionTreeDataBuilder.java
+++ 
b/modules/ml/src/main/java/org/apache/ignite/ml/tree/data/DecisionTreeDataBuilder.java
@@ -21,7 +21,7 @@ import java.io.Serializable;
 import java.util.Iterator;
 import org.apache.ignite.ml.dataset.PartitionDataBuilder;
 import org.apache.ignite.ml.dataset.UpstreamEntry;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.functions.IgniteBiFunction;
 
 /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/main/java/org/apache/ignite/ml/util/MnistUtils.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/main/java/org/apache/ignite/ml/util/MnistUtils.java 
b/modules/ml/src/main/java/org/apache/ignite/ml/util/MnistUtils.java
index 5fc50b5..503572d 100644
--- a/modules/ml/src/main/java/org/apache/ignite/ml/util/MnistUtils.java
+++ b/modules/ml/src/main/java/org/apache/ignite/ml/util/MnistUtils.java
@@ -27,7 +27,7 @@ import java.util.List;
 import java.util.Random;
 import java.util.stream.Stream;
 import org.apache.ignite.IgniteException;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 
 /**
  * Utility class for reading MNIST dataset.
@@ -44,7 +44,7 @@ public class MnistUtils {
      * @return Stream of MNIST samples.
      * @throws IgniteException In case of exception.
      */
-    public static Stream<DenseLocalOnHeapVector> mnistAsStream(String 
imagesPath, String labelsPath, Random rnd, int cnt)
+    public static Stream<DenseVector> mnistAsStream(String imagesPath, String 
labelsPath, Random rnd, int cnt)
         throws IOException {
         FileInputStream isImages = new FileInputStream(imagesPath);
         FileInputStream isLabels = new FileInputStream(labelsPath);
@@ -75,7 +75,7 @@ public class MnistUtils {
         isImages.close();
         isLabels.close();
 
-        return lst.subList(0, cnt).stream().map(DenseLocalOnHeapVector::new);
+        return lst.subList(0, cnt).stream().map(DenseVector::new);
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/LocalModelsTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/LocalModelsTest.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/LocalModelsTest.java
index 8a42fc0..43a80a9 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/LocalModelsTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/LocalModelsTest.java
@@ -31,9 +31,9 @@ import 
org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
 import org.apache.ignite.ml.knn.classification.KNNClassificationModel;
 import org.apache.ignite.ml.knn.classification.KNNModelFormat;
 import org.apache.ignite.ml.knn.classification.KNNStrategy;
-import org.apache.ignite.ml.math.VectorUtils;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
 import org.apache.ignite.ml.math.distances.EuclideanDistance;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.apache.ignite.ml.regressions.linear.LinearRegressionModel;
 import org.apache.ignite.ml.svm.SVMLinearBinaryClassificationModel;
 import org.apache.ignite.ml.svm.SVMLinearMultiClassClassificationModel;
@@ -70,14 +70,14 @@ public class LocalModelsTest {
     @Test
     public void importExportLinearRegressionModelTest() throws IOException {
         executeModelTest(mdlFilePath -> {
-            LinearRegressionModel model = new LinearRegressionModel(new 
DenseLocalOnHeapVector(new double[]{1, 2}), 3);
+            LinearRegressionModel mdl = new LinearRegressionModel(new 
DenseVector(new double[]{1, 2}), 3);
             Exporter<LinearRegressionModel, String> exporter = new 
FileExporter<>();
-            model.saveModel(exporter, mdlFilePath);
+            mdl.saveModel(exporter, mdlFilePath);
 
             LinearRegressionModel load = exporter.load(mdlFilePath);
 
             Assert.assertNotNull(load);
-            Assert.assertEquals("", model, load);
+            Assert.assertEquals("", mdl, load);
 
             return null;
         });
@@ -87,7 +87,7 @@ public class LocalModelsTest {
     @Test
     public void importExportSVMBinaryClassificationModelTest() throws 
IOException {
         executeModelTest(mdlFilePath -> {
-            SVMLinearBinaryClassificationModel mdl = new 
SVMLinearBinaryClassificationModel(new DenseLocalOnHeapVector(new double[]{1, 
2}), 3);
+            SVMLinearBinaryClassificationModel mdl = new 
SVMLinearBinaryClassificationModel(new DenseVector(new double[]{1, 2}), 3);
             Exporter<SVMLinearBinaryClassificationModel, String> exporter = 
new FileExporter<>();
             mdl.saveModel(exporter, mdlFilePath);
 
@@ -104,9 +104,9 @@ public class LocalModelsTest {
     @Test
     public void importExportSVMMulticlassClassificationModelTest() throws 
IOException {
         executeModelTest(mdlFilePath -> {
-            SVMLinearBinaryClassificationModel binaryMdl1 = new 
SVMLinearBinaryClassificationModel(new DenseLocalOnHeapVector(new double[]{1, 
2}), 3);
-            SVMLinearBinaryClassificationModel binaryMdl2 = new 
SVMLinearBinaryClassificationModel(new DenseLocalOnHeapVector(new double[]{2, 
3}), 4);
-            SVMLinearBinaryClassificationModel binaryMdl3 = new 
SVMLinearBinaryClassificationModel(new DenseLocalOnHeapVector(new double[]{3, 
4}), 5);
+            SVMLinearBinaryClassificationModel binaryMdl1 = new 
SVMLinearBinaryClassificationModel(new DenseVector(new double[]{1, 2}), 3);
+            SVMLinearBinaryClassificationModel binaryMdl2 = new 
SVMLinearBinaryClassificationModel(new DenseVector(new double[]{2, 3}), 4);
+            SVMLinearBinaryClassificationModel binaryMdl3 = new 
SVMLinearBinaryClassificationModel(new DenseVector(new double[]{3, 4}), 5);
 
             SVMLinearMultiClassClassificationModel mdl = new 
SVMLinearMultiClassClassificationModel();
             mdl.add(1, binaryMdl1);

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/TestUtils.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/TestUtils.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/TestUtils.java
index 5677070..64e3436 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/TestUtils.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/TestUtils.java
@@ -18,9 +18,9 @@
 package org.apache.ignite.ml;
 
 import java.util.stream.IntStream;
-import org.apache.ignite.ml.math.Matrix;
+import org.apache.ignite.ml.math.primitives.matrix.Matrix;
 import org.apache.ignite.ml.math.Precision;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.junit.Assert;
 
 import static org.junit.Assert.assertTrue;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansModelTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansModelTest.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansModelTest.java
index 5b3ad85..611b526 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansModelTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansModelTest.java
@@ -17,16 +17,11 @@
 
 package org.apache.ignite.ml.clustering;
 
-import org.apache.ignite.ml.TestUtils;
 import org.apache.ignite.ml.clustering.kmeans.KMeansModel;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.distances.DistanceMeasure;
 import org.apache.ignite.ml.math.distances.EuclideanDistance;
-import org.apache.ignite.ml.math.exceptions.CardinalityException;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
-import org.apache.ignite.ml.regressions.linear.LinearRegressionModel;
-import org.apache.ignite.ml.svm.SVMLinearBinaryClassificationModel;
-import org.apache.ignite.ml.svm.SVMLinearMultiClassClassificationModel;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -42,19 +37,19 @@ public class KMeansModelTest {
     public void predictClusters() {
         DistanceMeasure distanceMeasure = new EuclideanDistance();
 
-        Vector[] centers = new DenseLocalOnHeapVector[4];
+        Vector[] centers = new DenseVector[4];
 
-        centers[0] = new DenseLocalOnHeapVector(new double[]{1.0, 1.0});
-        centers[1] = new DenseLocalOnHeapVector(new double[]{-1.0, 1.0});
-        centers[2] = new DenseLocalOnHeapVector(new double[]{1.0, -1.0});
-        centers[3] = new DenseLocalOnHeapVector(new double[]{-1.0, -1.0});
+        centers[0] = new DenseVector(new double[]{1.0, 1.0});
+        centers[1] = new DenseVector(new double[]{-1.0, 1.0});
+        centers[2] = new DenseVector(new double[]{1.0, -1.0});
+        centers[3] = new DenseVector(new double[]{-1.0, -1.0});
 
         KMeansModel mdl = new KMeansModel(centers, distanceMeasure);
 
-        Assert.assertEquals(mdl.apply(new DenseLocalOnHeapVector(new 
double[]{1.1, 1.1})), 0.0, PRECISION);
-        Assert.assertEquals(mdl.apply(new DenseLocalOnHeapVector(new 
double[]{-1.1, 1.1})), 1.0, PRECISION);
-        Assert.assertEquals(mdl.apply(new DenseLocalOnHeapVector(new 
double[]{1.1, -1.1})), 2.0, PRECISION);
-        Assert.assertEquals(mdl.apply(new DenseLocalOnHeapVector(new 
double[]{-1.1, -1.1})), 3.0, PRECISION);
+        Assert.assertEquals(mdl.apply(new DenseVector(new double[]{1.1, 
1.1})), 0.0, PRECISION);
+        Assert.assertEquals(mdl.apply(new DenseVector(new double[]{-1.1, 
1.1})), 1.0, PRECISION);
+        Assert.assertEquals(mdl.apply(new DenseVector(new double[]{1.1, 
-1.1})), 2.0, PRECISION);
+        Assert.assertEquals(mdl.apply(new DenseVector(new double[]{-1.1, 
-1.1})), 3.0, PRECISION);
 
         Assert.assertEquals(mdl.distanceMeasure(), distanceMeasure);
         Assert.assertEquals(mdl.amountOfClusters(), 4);

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansTrainerTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansTrainerTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansTrainerTest.java
index c21fbc8..0bb4e01 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansTrainerTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/clustering/KMeansTrainerTest.java
@@ -23,10 +23,10 @@ import java.util.Map;
 import org.apache.ignite.ml.clustering.kmeans.KMeansModel;
 import org.apache.ignite.ml.clustering.kmeans.KMeansTrainer;
 import org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
-import org.apache.ignite.ml.math.Vector;
-import org.apache.ignite.ml.math.VectorUtils;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
 import org.apache.ignite.ml.math.distances.EuclideanDistance;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -64,9 +64,9 @@ public class KMeansTrainerTest {
             (k, v) -> v[2]
         );
 
-        Vector firstVector = new DenseLocalOnHeapVector(new double[] {2.0, 
2.0});
+        Vector firstVector = new DenseVector(new double[] {2.0, 2.0});
         assertEquals(knnMdl.apply(firstVector), 0.0, PRECISION);
-        Vector secondVector = new DenseLocalOnHeapVector(new double[] {-2.0, 
-2.0});
+        Vector secondVector = new DenseVector(new double[] {-2.0, -2.0});
         assertEquals(knnMdl.apply(secondVector), 0.0, PRECISION);
         assertEquals(trainer.getMaxIterations(), 1);
         assertEquals(trainer.getEpsilon(), PRECISION, PRECISION);

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/composition/boosting/GDBTrainerTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/boosting/GDBTrainerTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/boosting/GDBTrainerTest.java
index 9363938..bef5e9b 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/boosting/GDBTrainerTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/boosting/GDBTrainerTest.java
@@ -22,8 +22,8 @@ import java.util.Map;
 import org.apache.ignite.ml.Model;
 import org.apache.ignite.ml.composition.ModelsComposition;
 import 
org.apache.ignite.ml.composition.predictionsaggregator.WeightedPredictionsAggregator;
-import org.apache.ignite.ml.math.Vector;
-import org.apache.ignite.ml.math.VectorUtils;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
 import org.apache.ignite.ml.trainers.DatasetTrainer;
 import org.apache.ignite.ml.tree.DecisionTreeConditionalNode;
 import org.apache.ignite.ml.tree.boosting.GDBBinaryClassifierOnTreesTrainer;
@@ -36,7 +36,8 @@ import static org.junit.Assert.assertTrue;
 /** */
 public class GDBTrainerTest {
     /** */
-    @Test public void testFitRegression() {
+    @Test
+    public void testFitRegression() {
         int size = 100;
         double[] xs = new double[size];
         double[] ys = new double[size];
@@ -52,7 +53,7 @@ public class GDBTrainerTest {
         }
 
         DatasetTrainer<Model<Vector, Double>, Double> trainer = new 
GDBRegressionOnTreesTrainer(1.0, 2000, 3, 0.0);
-        Model<Vector, Double> model = trainer.fit(
+        Model<Vector, Double> mdl = trainer.fit(
             learningSample, 1,
             (k, v) -> VectorUtils.of(v[0]),
             (k, v) -> v[1]
@@ -62,15 +63,15 @@ public class GDBTrainerTest {
         for (int j = 0; j < size; j++) {
             double x = xs[j];
             double y = ys[j];
-            double p = model.apply(VectorUtils.of(x));
+            double p = mdl.apply(VectorUtils.of(x));
             mse += Math.pow(y - p, 2);
         }
         mse /= size;
 
         assertEquals(0.0, mse, 0.0001);
 
-        assertTrue(model instanceof ModelsComposition);
-        ModelsComposition composition = (ModelsComposition) model;
+        assertTrue(mdl instanceof ModelsComposition);
+        ModelsComposition composition = (ModelsComposition)mdl;
         composition.getModels().forEach(m -> assertTrue(m instanceof 
DecisionTreeConditionalNode));
 
         assertEquals(2000, composition.getModels().size());
@@ -78,7 +79,8 @@ public class GDBTrainerTest {
     }
 
     /** */
-    @Test public void testFitClassifier() {
+    @Test
+    public void testFitClassifier() {
         int sampleSize = 100;
         double[] xs = new double[sampleSize];
         double[] ys = new double[sampleSize];
@@ -93,25 +95,25 @@ public class GDBTrainerTest {
             learningSample.put(i, new double[] {xs[i], ys[i]});
 
         DatasetTrainer<Model<Vector, Double>, Double> trainer = new 
GDBBinaryClassifierOnTreesTrainer(0.3, 500, 3, 0.0);
-        Model<Vector, Double> model = trainer.fit(
+        Model<Vector, Double> mdl = trainer.fit(
             learningSample, 1,
             (k, v) -> VectorUtils.of(v[0]),
             (k, v) -> v[1]
         );
 
-        int errorsCount = 0;
+        int errorsCnt = 0;
         for (int j = 0; j < sampleSize; j++) {
             double x = xs[j];
             double y = ys[j];
-            double p = model.apply(VectorUtils.of(x));
+            double p = mdl.apply(VectorUtils.of(x));
             if(p != y)
-                errorsCount++;
+                errorsCnt++;
         }
 
-        assertEquals(0, errorsCount);
+        assertEquals(0, errorsCnt);
 
-        assertTrue(model instanceof ModelsComposition);
-        ModelsComposition composition = (ModelsComposition) model;
+        assertTrue(mdl instanceof ModelsComposition);
+        ModelsComposition composition = (ModelsComposition)mdl;
         composition.getModels().forEach(m -> assertTrue(m instanceof 
DecisionTreeConditionalNode));
 
         assertEquals(500, composition.getModels().size());

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/MeanValuePredictionsAggregatorTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/MeanValuePredictionsAggregatorTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/MeanValuePredictionsAggregatorTest.java
index d99f4bc..e738716 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/MeanValuePredictionsAggregatorTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/MeanValuePredictionsAggregatorTest.java
@@ -25,7 +25,8 @@ public class MeanValuePredictionsAggregatorTest {
     private PredictionsAggregator aggregator = new 
MeanValuePredictionsAggregator();
 
     /** */
-    @Test public void testApply() {
+    @Test
+    public void testApply() {
         assertEquals(0.75, aggregator.apply(new double[]{1.0, 1.0, 1.0, 0.0}), 
0.001);
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/OnMajorityPredictionsAggregatorTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/OnMajorityPredictionsAggregatorTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/OnMajorityPredictionsAggregatorTest.java
index 52055ae..8649b72 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/OnMajorityPredictionsAggregatorTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/OnMajorityPredictionsAggregatorTest.java
@@ -25,7 +25,8 @@ public class OnMajorityPredictionsAggregatorTest {
     private PredictionsAggregator aggregator = new 
OnMajorityPredictionsAggregator();
 
     /** */
-    @Test public void testApply() {
+    @Test
+    public void testApply() {
         assertEquals(1.0, aggregator.apply(new double[]{1.0, 1.0, 1.0, 0.0}), 
0.001);
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/WeightedPredictionsAggregatorTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/WeightedPredictionsAggregatorTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/WeightedPredictionsAggregatorTest.java
index 7fda6b6..ae0b166 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/WeightedPredictionsAggregatorTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/composition/predictionsaggregator/WeightedPredictionsAggregatorTest.java
@@ -24,13 +24,15 @@ import static org.junit.Assert.assertEquals;
 /** */
 public class WeightedPredictionsAggregatorTest {
     /** */
-    @Test public void testApply1() {
+    @Test
+    public void testApply1() {
         WeightedPredictionsAggregator aggregator = new 
WeightedPredictionsAggregator(new double[] {});
         assertEquals(0.0, aggregator.apply(new double[] {}), 0.001);
     }
 
     /** */
-    @Test public void testApply2() {
+    @Test
+    public void testApply2() {
         WeightedPredictionsAggregator aggregator = new 
WeightedPredictionsAggregator(new double[] {1.0, 0.5, 0.25});
         assertEquals(3.0, aggregator.apply(new double[] {1.0, 2.0, 4.0}), 
0.001);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridCalculateFitnessTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridCalculateFitnessTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridCalculateFitnessTest.java
index 5cc6ffe..979e1e4 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridCalculateFitnessTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridCalculateFitnessTest.java
@@ -44,7 +44,7 @@ public class GAGridCalculateFitnessTest {
     private GAGrid gaGrid = null;
 
     /** GAConfiguraton */
-    private GAConfiguration gaConfig = null;
+    private GAConfiguration gaCfg = null;
 
     /**
      * Setup test
@@ -58,20 +58,20 @@ public class GAGridCalculateFitnessTest {
             ignite = Ignition.start();
 
             // Create GAConfiguration
-            gaConfig = new GAConfiguration();
+            gaCfg = new GAConfiguration();
 
             // set Gene Pool
             List<Gene> genes = this.getGenePool();
-            gaConfig.setGenePool(genes);
+            gaCfg.setGenePool(genes);
 
             // set the Chromosome Length to '8' since password contains 8 
characters.
-            gaConfig.setChromosomeLength(8);
+            gaCfg.setChromosomeLen(8);
 
             // create and set Fitness function
             PasswordFitnessFunction function = new PasswordFitnessFunction();
-            gaConfig.setFitnessFunction(function);
+            gaCfg.setFitnessFunction(function);
 
-            gaGrid = new GAGrid(gaConfig, ignite);
+            gaGrid = new GAGrid(gaCfg, ignite);
             gaGrid.initializeGenePopulation();
             gaGrid.initializePopulation();
 
@@ -91,7 +91,7 @@ public class GAGridCalculateFitnessTest {
 
             List<Long> chromosomeKeys = gaGrid.getPopulationKeys();
 
-            Boolean boolValue = this.ignite.compute().execute(new 
FitnessTask(this.gaConfig), chromosomeKeys);
+            Boolean boolVal = this.ignite.compute().execute(new 
FitnessTask(this.gaCfg), chromosomeKeys);
 
             IgniteCache<Long, Chromosome> populationCache = 
ignite.cache(GAGridConstants.POPULATION_CACHE);
 
@@ -102,13 +102,12 @@ public class GAGridCalculateFitnessTest {
 
             List<List<?>> res = cursor.getAll();
 
-            Long count = new Long(0);
+            Long cnt = 0L;
 
-            for (List row : res) {
-                count = (Long)row.get(0);
-            }
+            for (List row : res)
+                cnt = (Long)row.get(0);
 
-            assertEquals(500, count.longValue());
+            assertEquals(500, cnt.longValue());
         }
 
         catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridInitializePopulationTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridInitializePopulationTest.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridInitializePopulationTest.java
index f3023ed..28b0196 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridInitializePopulationTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/genetic/GAGridInitializePopulationTest.java
@@ -43,9 +43,6 @@ public class GAGridInitializePopulationTest {
     /** GAGrid **/
     private GAGrid gaGrid = null;
 
-    /** GAConfiguraton */
-    private GAConfiguration gaConfig = null;
-
     @Before
     public void initialize() {
 
@@ -55,17 +52,17 @@ public class GAGridInitializePopulationTest {
             ignite = Ignition.start();
 
             // Create GAConfiguration
-            gaConfig = new GAConfiguration();
+            /* GAConfiguraton */ /** GAConfiguraton */GAConfiguration gaCfg = 
new GAConfiguration();
 
             // set Gene Pool
             List<Gene> genes = this.getGenePool();
 
             // set the Chromosome Length to '8' since password contains 8 
characters.
-            gaConfig.setChromosomeLength(8);
+            gaCfg.setChromosomeLen(8);
 
-            gaConfig.setGenePool(genes);
+            gaCfg.setGenePool(genes);
 
-            gaGrid = new GAGrid(gaConfig, ignite);
+            gaGrid = new GAGrid(gaCfg, ignite);
         }
         catch (Exception e) {
             System.out.println(e);
@@ -86,12 +83,12 @@ public class GAGridInitializePopulationTest {
 
             List<List<?>> res = cursor.getAll();
 
-            Long count = new Long(0);
+            Long cnt = 0L;
+
+            for (List row : res)
+                cnt = (Long)row.get(0);
 
-            for (List row : res) {
-                count = (Long)row.get(0);
-            }
-            assertEquals(83, count.longValue());
+            assertEquals(83, cnt.longValue());
         }
 
         catch (Exception e) {
@@ -114,12 +111,12 @@ public class GAGridInitializePopulationTest {
 
             List<List<?>> res = cursor.getAll();
 
-            Long count = new Long(0);
+            Long cnt = 0L;
+
+            for (List row : res)
+                cnt = (Long)row.get(0);
 
-            for (List row : res) {
-                count = (Long)row.get(0);
-            }
-            assertEquals(500, count.longValue());
+            assertEquals(500, cnt.longValue());
         }
 
         catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/genetic/PasswordFitnessFunction.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/genetic/PasswordFitnessFunction.java
 
b/modules/ml/src/test/java/org/apache/ignite/ml/genetic/PasswordFitnessFunction.java
index e32f6d1..0f5e426 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/genetic/PasswordFitnessFunction.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/genetic/PasswordFitnessFunction.java
@@ -24,38 +24,32 @@ import java.util.List;
  * characters.
  */
 public class PasswordFitnessFunction implements IFitnessFunction {
-
     /**
      * @param genes List of Genes within an individual Chromosome
      * @return Fitness score
      */
-    @Override
-    public double evaluate(List<Gene> genes) {
-
-        double specialCharCount = 0;
-        double lowerCaseCount = 0;
-        double upperCaseCount = 0;
+    @Override public double evaluate(List<Gene> genes) {
 
-        double fitness = 0;
-        double specialCharScore = 2;
+        double specialCCnt = 0;
+        double lowerCaseCnt = 0;
+        double upperCaseCnt = 0;
 
-        for (int i = 0; i < genes.size(); i++) {
+        double fitness;
+        double specialCScore = 2;
 
-            Character aCharacter = (Character)(genes.get(i).getValue());
-            if (Character.isUpperCase(aCharacter.charValue())) {
-                upperCaseCount = upperCaseCount + 1;
-            }
+        for (Gene gene : genes) {
+            Character aCharacter = (Character)(gene.getVal());
+            if (Character.isUpperCase(aCharacter))
+                upperCaseCnt = upperCaseCnt + 1;
 
-            else if (Character.isLowerCase(aCharacter.charValue())) {
-                lowerCaseCount = lowerCaseCount + 1;
-            }
-            else {
-                specialCharCount = specialCharCount + 1;
-            }
+            else if (Character.isLowerCase(aCharacter))
+                lowerCaseCnt = lowerCaseCnt + 1;
+            else
+                specialCCnt = specialCCnt + 1;
         }
 
-        specialCharCount = specialCharScore * specialCharCount;
-        fitness = upperCaseCount + lowerCaseCount + specialCharCount;
+        specialCCnt = specialCScore * specialCCnt;
+        fitness = upperCaseCnt + lowerCaseCnt + specialCCnt;
         return fitness;
     }
-}
\ No newline at end of file
+}

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNClassificationTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNClassificationTest.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNClassificationTest.java
index f9a0c55..569a887 100644
--- 
a/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNClassificationTest.java
+++ 
b/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNClassificationTest.java
@@ -25,10 +25,10 @@ import java.util.Map;
 import org.apache.ignite.ml.knn.classification.KNNClassificationModel;
 import org.apache.ignite.ml.knn.classification.KNNClassificationTrainer;
 import org.apache.ignite.ml.knn.classification.KNNStrategy;
-import org.apache.ignite.ml.math.Vector;
-import org.apache.ignite.ml.math.VectorUtils;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
 import org.apache.ignite.ml.math.distances.EuclideanDistance;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.junit.Test;
 import org.junit.runner.RunWith;
 import org.junit.runners.Parameterized;
@@ -78,9 +78,9 @@ public class KNNClassificationTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.SIMPLE);
 
-        Vector firstVector = new DenseLocalOnHeapVector(new double[] {2.0, 
2.0});
+        Vector firstVector = new DenseVector(new double[] {2.0, 2.0});
         assertEquals(knnMdl.apply(firstVector), 1.0);
-        Vector secondVector = new DenseLocalOnHeapVector(new double[] {-2.0, 
-2.0});
+        Vector secondVector = new DenseVector(new double[] {-2.0, -2.0});
         assertEquals(knnMdl.apply(secondVector), 2.0);
     }
 
@@ -106,9 +106,9 @@ public class KNNClassificationTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.SIMPLE);
 
-        Vector firstVector = new DenseLocalOnHeapVector(new double[] {2.0, 
2.0});
+        Vector firstVector = new DenseVector(new double[] {2.0, 2.0});
         assertEquals(knnMdl.apply(firstVector), 1.0);
-        Vector secondVector = new DenseLocalOnHeapVector(new double[] {-2.0, 
-2.0});
+        Vector secondVector = new DenseVector(new double[] {-2.0, -2.0});
         assertEquals(knnMdl.apply(secondVector), 2.0);
     }
 
@@ -134,7 +134,7 @@ public class KNNClassificationTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.SIMPLE);
 
-        Vector vector = new DenseLocalOnHeapVector(new double[] {-1.01, 
-1.01});
+        Vector vector = new DenseVector(new double[] {-1.01, -1.01});
         assertEquals(knnMdl.apply(vector), 2.0);
     }
 
@@ -160,7 +160,7 @@ public class KNNClassificationTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.WEIGHTED);
 
-        Vector vector = new DenseLocalOnHeapVector(new double[] {-1.01, 
-1.01});
+        Vector vector = new DenseVector(new double[] {-1.01, -1.01});
         assertEquals(knnMdl.apply(vector), 1.0);
     }
 }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNRegressionTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNRegressionTest.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNRegressionTest.java
index d66f1f2..d02d72a 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNRegressionTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/knn/KNNRegressionTest.java
@@ -26,10 +26,10 @@ import 
org.apache.ignite.ml.dataset.impl.local.LocalDatasetBuilder;
 import org.apache.ignite.ml.knn.classification.KNNStrategy;
 import org.apache.ignite.ml.knn.regression.KNNRegressionModel;
 import org.apache.ignite.ml.knn.regression.KNNRegressionTrainer;
-import org.apache.ignite.ml.math.Vector;
-import org.apache.ignite.ml.math.VectorUtils;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
+import org.apache.ignite.ml.math.primitives.vector.VectorUtils;
 import org.apache.ignite.ml.math.distances.EuclideanDistance;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
 import org.junit.Assert;
 import org.junit.Test;
 import org.junit.runner.RunWith;
@@ -79,7 +79,7 @@ public class KNNRegressionTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.SIMPLE);
 
-        Vector vector = new DenseLocalOnHeapVector(new double[] {0, 0, 0, 5.0, 
0.0});
+        Vector vector = new DenseVector(new double[] {0, 0, 0, 5.0, 0.0});
         System.out.println(knnMdl.apply(vector));
         Assert.assertEquals(15, knnMdl.apply(vector), 1E-12);
     }
@@ -114,7 +114,7 @@ public class KNNRegressionTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.SIMPLE);
 
-        Vector vector = new DenseLocalOnHeapVector(new double[] {104.6, 
419180, 2822, 2857, 118734, 1956});
+        Vector vector = new DenseVector(new double[] {104.6, 419180, 2822, 
2857, 118734, 1956});
         System.out.println(knnMdl.apply(vector));
         Assert.assertEquals(67857, knnMdl.apply(vector), 2000);
     }
@@ -149,7 +149,7 @@ public class KNNRegressionTest {
             .withDistanceMeasure(new EuclideanDistance())
             .withStrategy(KNNStrategy.SIMPLE);
 
-        Vector vector = new DenseLocalOnHeapVector(new double[] {104.6, 
419180, 2822, 2857, 118734, 1956});
+        Vector vector = new DenseVector(new double[] {104.6, 419180, 2822, 
2857, 118734, 1956});
         System.out.println(knnMdl.apply(vector));
         Assert.assertEquals(67857, knnMdl.apply(vector), 2000);
     }

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/knn/LabeledDatasetTest.java
----------------------------------------------------------------------
diff --git 
a/modules/ml/src/test/java/org/apache/ignite/ml/knn/LabeledDatasetTest.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/knn/LabeledDatasetTest.java
index e986740..8ced650 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/knn/LabeledDatasetTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/knn/LabeledDatasetTest.java
@@ -22,7 +22,7 @@ import java.net.URISyntaxException;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import org.apache.ignite.ml.math.ExternalizableTest;
-import org.apache.ignite.ml.math.Vector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.apache.ignite.ml.math.exceptions.CardinalityException;
 import org.apache.ignite.ml.math.exceptions.NoDataException;
 import org.apache.ignite.ml.math.exceptions.knn.EmptyFileException;

http://git-wip-us.apache.org/repos/asf/ignite/blob/26e40528/modules/ml/src/test/java/org/apache/ignite/ml/math/BlasTest.java
----------------------------------------------------------------------
diff --git a/modules/ml/src/test/java/org/apache/ignite/ml/math/BlasTest.java 
b/modules/ml/src/test/java/org/apache/ignite/ml/math/BlasTest.java
index 5f1c772..a5e47a4 100644
--- a/modules/ml/src/test/java/org/apache/ignite/ml/math/BlasTest.java
+++ b/modules/ml/src/test/java/org/apache/ignite/ml/math/BlasTest.java
@@ -19,10 +19,12 @@ package org.apache.ignite.ml.math;
 
 import java.util.Arrays;
 import java.util.function.BiPredicate;
-import org.apache.ignite.ml.math.impls.matrix.DenseLocalOnHeapMatrix;
-import org.apache.ignite.ml.math.impls.matrix.SparseLocalOnHeapMatrix;
-import org.apache.ignite.ml.math.impls.vector.DenseLocalOnHeapVector;
-import org.apache.ignite.ml.math.impls.vector.SparseLocalVector;
+import org.apache.ignite.ml.math.primitives.matrix.Matrix;
+import org.apache.ignite.ml.math.primitives.matrix.impl.DenseMatrix;
+import org.apache.ignite.ml.math.primitives.matrix.impl.SparseMatrix;
+import org.apache.ignite.ml.math.primitives.vector.impl.DenseVector;
+import org.apache.ignite.ml.math.primitives.vector.impl.SparseVector;
+import org.apache.ignite.ml.math.primitives.vector.Vector;
 import org.junit.Assert;
 import org.junit.Test;
 
@@ -31,9 +33,9 @@ public class BlasTest {
     /** Test 'axpy' operation for two array-based vectors. */
     @Test
     public void testAxpyArrayArray() {
-        Vector y = new DenseLocalOnHeapVector(new double[] {1.0, 2.0});
+        Vector y = new DenseVector(new double[] {1.0, 2.0});
         double a = 2.0;
-        Vector x = new DenseLocalOnHeapVector(new double[] {1.0, 2.0});
+        Vector x = new DenseVector(new double[] {1.0, 2.0});
 
         Vector exp = x.times(a).plus(y);
         Blas.axpy(a, x, y);
@@ -44,11 +46,11 @@ public class BlasTest {
     /** Test 'axpy' operation for sparse vector and array-based vector. */
     @Test
     public void testAxpySparseArray() {
-        DenseLocalOnHeapVector y = new DenseLocalOnHeapVector(new double[] 
{1.0, 2.0});
+        DenseVector y = new DenseVector(new double[] {1.0, 2.0});
         double a = 2.0;
-        SparseLocalVector x = sparseFromArray(new double[] {1.0, 2.0});
+        SparseVector x = sparseFromArray(new double[] {1.0, 2.0});
 
-        SparseLocalVector exp = (SparseLocalVector)x.times(a).plus(y);
+        SparseVector exp = (SparseVector)x.times(a).plus(y);
         Blas.axpy(a, x, y);
 
         Assert.assertTrue(elementsEqual(exp, y));
@@ -57,8 +59,8 @@ public class BlasTest {
     /** Test 'dot' operation. */
     @Test
     public void testDot() {
-        DenseLocalOnHeapVector v1 = new DenseLocalOnHeapVector(new double[] 
{1.0, 1.0});
-        DenseLocalOnHeapVector v2 = new DenseLocalOnHeapVector(new double[] 
{2.0, 2.0});
+        DenseVector v1 = new DenseVector(new double[] {1.0, 1.0});
+        DenseVector v2 = new DenseVector(new double[] {2.0, 2.0});
 
         Assert.assertEquals(Blas.dot(v1, v2), v1.dot(v2), 0.0);
     }
@@ -69,8 +71,8 @@ public class BlasTest {
         double[] data = new double[] {1.0, 1.0};
         double alpha = 2.0;
 
-        DenseLocalOnHeapVector v = new DenseLocalOnHeapVector(data);
-        Vector exp = new DenseLocalOnHeapVector(data, true).times(alpha);
+        DenseVector v = new DenseVector(data);
+        Vector exp = new DenseVector(data, true).times(alpha);
         Blas.scal(alpha, v);
 
         Assert.assertEquals(v, exp);
@@ -82,7 +84,7 @@ public class BlasTest {
         double[] data = new double[] {1.0, 1.0};
         double alpha = 2.0;
 
-        SparseLocalVector v = sparseFromArray(data);
+        SparseVector v = sparseFromArray(data);
         Vector exp = sparseFromArray(data).times(alpha);
 
         Blas.scal(alpha, v);
@@ -95,20 +97,20 @@ public class BlasTest {
     public void testSprDenseDense() {
         double alpha = 3.0;
 
-        DenseLocalOnHeapVector v = new DenseLocalOnHeapVector(new double[] 
{1.0, 2.0});
-        DenseLocalOnHeapVector u = new DenseLocalOnHeapVector(new double[] 
{3.0, 13.0, 20.0, 0.0});
+        DenseVector v = new DenseVector(new double[] {1.0, 2.0});
+        DenseVector u = new DenseVector(new double[] {3.0, 13.0, 20.0, 0.0});
 
         // m is alpha * v * v^t
-        DenseLocalOnHeapMatrix m = (DenseLocalOnHeapMatrix)new 
DenseLocalOnHeapMatrix(new double[][] {
+        DenseMatrix m = (DenseMatrix)new DenseMatrix(new double[][] {
             {1.0, 0.0},
             {2.0, 4.0}}, StorageConstants.COLUMN_STORAGE_MODE).times(alpha);
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{3.0, 0.0}, {13.0, 20.0}},
+        DenseMatrix a = new DenseMatrix(new double[][] {{3.0, 0.0}, {13.0, 
20.0}},
             StorageConstants.COLUMN_STORAGE_MODE);
 
         //m := alpha * v * v.t + A
         Blas.spr(alpha, v, u);
 
-        DenseLocalOnHeapMatrix mu = fromVector(u, a.rowSize(), 
StorageConstants.COLUMN_STORAGE_MODE, (i, j) -> i >= j);
+        DenseMatrix mu = fromVector(u, a.rowSize(), 
StorageConstants.COLUMN_STORAGE_MODE, (i, j) -> i >= j);
         Assert.assertEquals(m.plus(a), mu);
     }
 
@@ -117,18 +119,18 @@ public class BlasTest {
     public void testSprSparseDense1() {
         double alpha = 3.0;
 
-        SparseLocalVector v = sparseFromArray(new double[] {1.0, 2.0});
-        DenseLocalOnHeapVector u = new DenseLocalOnHeapVector(new double[] 
{3.0, 13.0, 20.0, 0.0});
+        SparseVector v = sparseFromArray(new double[] {1.0, 2.0});
+        DenseVector u = new DenseVector(new double[] {3.0, 13.0, 20.0, 0.0});
 
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{3.0, 0.0}, {13.0, 20.0}},
+        DenseMatrix a = new DenseMatrix(new double[][] {{3.0, 0.0}, {13.0, 
20.0}},
             StorageConstants.COLUMN_STORAGE_MODE);
-        DenseLocalOnHeapMatrix exp = (DenseLocalOnHeapMatrix)new 
DenseLocalOnHeapMatrix(new double[][] {
+        DenseMatrix exp = (DenseMatrix)new DenseMatrix(new double[][] {
             {1.0, 0.0},
             {2.0, 4.0}}, 
StorageConstants.COLUMN_STORAGE_MODE).times(alpha).plus(a);
 
         //m := alpha * v * v.t + A
         Blas.spr(alpha, v, u);
-        DenseLocalOnHeapMatrix mu = fromVector(u, a.rowSize(), 
StorageConstants.COLUMN_STORAGE_MODE, (i, j) -> i >= j);
+        DenseMatrix mu = fromVector(u, a.rowSize(), 
StorageConstants.COLUMN_STORAGE_MODE, (i, j) -> i >= j);
         Assert.assertEquals(exp, mu);
     }
 
@@ -137,21 +139,21 @@ public class BlasTest {
     public void testSprSparseDense2() {
         double alpha = 3.0;
 
-        SparseLocalVector v = new SparseLocalVector(2, 
StorageConstants.RANDOM_ACCESS_MODE);
+        SparseVector v = new SparseVector(2, 
StorageConstants.RANDOM_ACCESS_MODE);
         v.set(0, 1);
 
-        DenseLocalOnHeapVector u = new DenseLocalOnHeapVector(new double[] 
{3.0, 13.0, 20.0, 0.0});
+        DenseVector u = new DenseVector(new double[] {3.0, 13.0, 20.0, 0.0});
 
         // m is alpha * v * v^t
-        DenseLocalOnHeapMatrix m = (DenseLocalOnHeapMatrix)new 
DenseLocalOnHeapMatrix(new double[][] {
+        DenseMatrix m = (DenseMatrix)new DenseMatrix(new double[][] {
             {1.0, 0.0},
             {0.0, 0.0}}, StorageConstants.COLUMN_STORAGE_MODE).times(alpha);
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{3.0, 0.0}, {13.0, 20.0}},
+        DenseMatrix a = new DenseMatrix(new double[][] {{3.0, 0.0}, {13.0, 
20.0}},
             StorageConstants.COLUMN_STORAGE_MODE);
 
         //m := alpha * v * v.t + A
         Blas.spr(alpha, v, u);
-        DenseLocalOnHeapMatrix mu = fromVector(u, a.rowSize(), 
StorageConstants.COLUMN_STORAGE_MODE, (i, j) -> i >= j);
+        DenseMatrix mu = fromVector(u, a.rowSize(), 
StorageConstants.COLUMN_STORAGE_MODE, (i, j) -> i >= j);
         Assert.assertEquals(m.plus(a), mu);
     }
 
@@ -159,11 +161,11 @@ public class BlasTest {
     @Test
     public void testSyrDenseDense() {
         double alpha = 2.0;
-        DenseLocalOnHeapVector x = new DenseLocalOnHeapVector(new double[] 
{1.0, 2.0});
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{10.0, 20.0}, {20.0, 10.0}});
+        DenseVector x = new DenseVector(new double[] {1.0, 2.0});
+        DenseMatrix a = new DenseMatrix(new double[][] {{10.0, 20.0}, {20.0, 
10.0}});
 
         // alpha * x * x^T + A
-        DenseLocalOnHeapMatrix exp = (DenseLocalOnHeapMatrix)new 
DenseLocalOnHeapMatrix(new double[][] {
+        DenseMatrix exp = (DenseMatrix)new DenseMatrix(new double[][] {
             {1.0, 2.0},
             {2.0, 4.0}}).times(alpha).plus(a);
 
@@ -177,12 +179,12 @@ public class BlasTest {
     public void testGemmDenseDenseDense() {
         // C := alpha * A * B + beta * C
         double alpha = 1.0;
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{10.0, 11.0}, {0.0, 1.0}});
-        DenseLocalOnHeapMatrix b = new DenseLocalOnHeapMatrix(new double[][] 
{{1.0, 0.3}, {0.0, 1.0}});
+        DenseMatrix a = new DenseMatrix(new double[][] {{10.0, 11.0}, {0.0, 
1.0}});
+        DenseMatrix b = new DenseMatrix(new double[][] {{1.0, 0.3}, {0.0, 
1.0}});
         double beta = 0.0;
-        DenseLocalOnHeapMatrix c = new DenseLocalOnHeapMatrix(new double[][] 
{{1.0, 2.0}, {2.0, 3.0}});
+        DenseMatrix c = new DenseMatrix(new double[][] {{1.0, 2.0}, {2.0, 
3.0}});
 
-        DenseLocalOnHeapMatrix exp = 
(DenseLocalOnHeapMatrix)a.times(b);//.times(alpha).plus(c.times(beta));
+        DenseMatrix exp = 
(DenseMatrix)a.times(b);//.times(alpha).plus(c.times(beta));
 
         Blas.gemm(alpha, a, b, beta, c);
 
@@ -194,12 +196,12 @@ public class BlasTest {
     public void testGemmSparseDenseDense() {
         // C := alpha * A * B + beta * C
         double alpha = 1.0;
-        SparseLocalOnHeapMatrix a = (SparseLocalOnHeapMatrix)new 
SparseLocalOnHeapMatrix(2, 2)
+        SparseMatrix a = (SparseMatrix)new SparseMatrix(2, 2)
             .assign(new double[][] {{10.0, 11.0}, {0.0, 1.0}});
-        DenseLocalOnHeapMatrix b = new DenseLocalOnHeapMatrix(new double[][] 
{{1.0, 0.3}, {0.0, 1.0}});
+        DenseMatrix b = new DenseMatrix(new double[][] {{1.0, 0.3}, {0.0, 
1.0}});
 
         double beta = 0.0;
-        DenseLocalOnHeapMatrix c = new DenseLocalOnHeapMatrix(new double[][] 
{{1.0, 2.0}, {2.0, 3.0}});
+        DenseMatrix c = new DenseMatrix(new double[][] {{1.0, 2.0}, {2.0, 
3.0}});
 
         Matrix exp = a.times(b);//.times(alpha).plus(c.times(beta));
 
@@ -213,14 +215,14 @@ public class BlasTest {
     public void testGemvSparseDenseDense() {
         // y := alpha * A * x + beta * y
         double alpha = 3.0;
-        SparseLocalOnHeapMatrix a = (SparseLocalOnHeapMatrix)new 
SparseLocalOnHeapMatrix(2, 2)
+        SparseMatrix a = (SparseMatrix)new SparseMatrix(2, 2)
             .assign(new double[][] {{10.0, 11.0}, {0.0, 1.0}});
-        DenseLocalOnHeapVector x = new DenseLocalOnHeapVector(new double[] 
{1.0, 2.0});
+        DenseVector x = new DenseVector(new double[] {1.0, 2.0});
 
         double beta = 2.0;
-        DenseLocalOnHeapVector y = new DenseLocalOnHeapVector(new double[] 
{3.0, 4.0});
+        DenseVector y = new DenseVector(new double[] {3.0, 4.0});
 
-        DenseLocalOnHeapVector exp = 
(DenseLocalOnHeapVector)y.times(beta).plus(a.times(x).times(alpha));
+        DenseVector exp = 
(DenseVector)y.times(beta).plus(a.times(x).times(alpha));
 
         Blas.gemv(alpha, a, x, beta, y);
 
@@ -232,14 +234,14 @@ public class BlasTest {
     public void testGemvDenseSparseDense() {
         // y := alpha * A * x + beta * y
         double alpha = 3.0;
-        SparseLocalOnHeapMatrix a = (SparseLocalOnHeapMatrix)new 
SparseLocalOnHeapMatrix(2, 2)
+        SparseMatrix a = (SparseMatrix)new SparseMatrix(2, 2)
             .assign(new double[][] {{10.0, 11.0}, {0.0, 1.0}});
-        SparseLocalVector x = sparseFromArray(new double[] {1.0, 2.0});
+        SparseVector x = sparseFromArray(new double[] {1.0, 2.0});
 
         double beta = 2.0;
-        DenseLocalOnHeapVector y = new DenseLocalOnHeapVector(new double[] 
{3.0, 4.0});
+        DenseVector y = new DenseVector(new double[] {3.0, 4.0});
 
-        DenseLocalOnHeapVector exp = 
(DenseLocalOnHeapVector)y.times(beta).plus(a.times(x).times(alpha));
+        DenseVector exp = 
(DenseVector)y.times(beta).plus(a.times(x).times(alpha));
 
         Blas.gemv(alpha, a, x, beta, y);
 
@@ -251,12 +253,12 @@ public class BlasTest {
     public void testGemvSparseSparseDense() {
         // y := alpha * A * x + beta * y
         double alpha = 3.0;
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{10.0, 11.0}, {0.0, 1.0}}, 2);
-        SparseLocalVector x = sparseFromArray(new double[] {1.0, 2.0});
+        DenseMatrix a = new DenseMatrix(new double[][] {{10.0, 11.0}, {0.0, 
1.0}}, 2);
+        SparseVector x = sparseFromArray(new double[] {1.0, 2.0});
         double beta = 2.0;
-        DenseLocalOnHeapVector y = new DenseLocalOnHeapVector(new double[] 
{3.0, 4.0});
+        DenseVector y = new DenseVector(new double[] {3.0, 4.0});
 
-        DenseLocalOnHeapVector exp = 
(DenseLocalOnHeapVector)y.times(beta).plus(a.times(x).times(alpha));
+        DenseVector exp = 
(DenseVector)y.times(beta).plus(a.times(x).times(alpha));
 
         Blas.gemv(alpha, a, x, beta, y);
 
@@ -268,12 +270,12 @@ public class BlasTest {
     public void testGemvDenseDenseDense() {
         // y := alpha * A * x + beta * y
         double alpha = 3.0;
-        DenseLocalOnHeapMatrix a = new DenseLocalOnHeapMatrix(new double[][] 
{{10.0, 11.0}, {0.0, 1.0}}, 2);
-        DenseLocalOnHeapVector x = new DenseLocalOnHeapVector(new double[] 
{1.0, 2.0});
+        DenseMatrix a = new DenseMatrix(new double[][] {{10.0, 11.0}, {0.0, 
1.0}}, 2);
+        DenseVector x = new DenseVector(new double[] {1.0, 2.0});
         double beta = 2.0;
-        DenseLocalOnHeapVector y = new DenseLocalOnHeapVector(new double[] 
{3.0, 4.0});
+        DenseVector y = new DenseVector(new double[] {3.0, 4.0});
 
-        DenseLocalOnHeapVector exp = 
(DenseLocalOnHeapVector)y.times(beta).plus(a.times(x).times(alpha));
+        DenseVector exp = 
(DenseVector)y.times(beta).plus(a.times(x).times(alpha));
 
         Blas.gemv(alpha, a, x, beta, y);
 
@@ -286,8 +288,8 @@ public class BlasTest {
      * @param arr Array with vector elements.
      * @return sparse local on-heap vector.
      */
-    private static SparseLocalVector sparseFromArray(double[] arr) {
-        SparseLocalVector res = new SparseLocalVector(2, 
StorageConstants.RANDOM_ACCESS_MODE);
+    private static SparseVector sparseFromArray(double[] arr) {
+        SparseVector res = new SparseVector(2, 
StorageConstants.RANDOM_ACCESS_MODE);
 
         for (int i = 0; i < arr.length; i++)
             res.setX(i, arr[i]);
@@ -321,7 +323,7 @@ public class BlasTest {
      * @param p bipredicate to filter entities by.
      * @return dense local on-heap matrix.
      */
-    private static DenseLocalOnHeapMatrix fromVector(DenseLocalOnHeapVector v, 
int rows, int acsMode,
+    private static DenseMatrix fromVector(DenseVector v, int rows, int acsMode,
         BiPredicate<Integer, Integer> p) {
         double[] data = v.getStorage().data();
         int cols = data.length / rows;
@@ -344,6 +346,6 @@ public class BlasTest {
                 d[ind] = data[ind - shift];
             }
 
-        return new DenseLocalOnHeapMatrix(d, rows, acsMode);
+        return new DenseMatrix(d, rows, acsMode);
     }
 }

Reply via email to