Skip to content

Commit

Permalink
first version of #157
Browse files Browse the repository at this point in the history
  • Loading branch information
vkostyukov committed Mar 21, 2014
1 parent 4473aa4 commit 0229aa0
Show file tree
Hide file tree
Showing 23 changed files with 1,470 additions and 62 deletions.
1 change: 1 addition & 0 deletions .gitignore
Expand Up @@ -4,3 +4,4 @@
*.project
/target/
/.idea/
Demo.java
1 change: 1 addition & 0 deletions CHANGELOG.md
Expand Up @@ -6,6 +6,7 @@ la4j-0.5.0 `May 2014`
* New vector method: `foldNonZero`
* New factory method: `createDiagonalMatrix`
* New matrix source: `DiagonalMatrixSource`
* New entity: `MatrixBuilder`

la4j-0.4.9 `Jan 2014`
* Bug fix in `align()` method for big sparse matrices (reported by Michael Kapper)
Expand Down
19 changes: 10 additions & 9 deletions src/main/java/org/la4j/factory/Basic1DFactory.java
Expand Up @@ -28,7 +28,7 @@
import org.la4j.matrix.dense.Basic1DMatrix;
import org.la4j.matrix.source.MatrixSource;

public class Basic1DFactory extends BasicFactory implements Factory {
public class Basic1DFactory extends BasicFactory {

private static final long serialVersionUID = 4071505L;

Expand All @@ -42,6 +42,11 @@ public Matrix createMatrix(int rows, int columns) {
return new Basic1DMatrix(rows, columns);
}

@Override
public Matrix createMatrix(int rows, int columns, double[] array) {
return new Basic1DMatrix(rows, columns, array);
}

@Override
public Matrix createMatrix(double[][] array) {
return new Basic1DMatrix(array);
Expand All @@ -66,29 +71,25 @@ public Matrix createConstantMatrix(int rows, int columns, double value) {
}

@Override
public Matrix createRandomMatrix(int rows, int columns) {
public Matrix createRandomMatrix(int rows, int columns, Random random) {

double array[] = new double[rows * columns];

Random rnd = new Random();

for (int i = 0; i < rows * columns; i++) {
array[i] = rnd.nextDouble();
array[i] = random.nextDouble();
}

return new Basic1DMatrix(rows, columns, array);
}

@Override
public Matrix createRandomSymmetricMatrix(int size) {
public Matrix createRandomSymmetricMatrix(int size, Random random) {

double array[] = new double[size * size];

Random rnd = new Random();

for (int i = 0; i < size; i++) {
for (int j = i; j < size; j++) {
double value = rnd.nextDouble();
double value = random.nextDouble();
array[i * size + j] = value;
array[j * size + i] = value;
}
Expand Down
19 changes: 10 additions & 9 deletions src/main/java/org/la4j/factory/Basic2DFactory.java
Expand Up @@ -28,7 +28,7 @@
import org.la4j.matrix.dense.Basic2DMatrix;
import org.la4j.matrix.source.MatrixSource;

public class Basic2DFactory extends BasicFactory implements Factory {
public class Basic2DFactory extends BasicFactory {

private static final long serialVersionUID = 4071505L;

Expand All @@ -42,6 +42,11 @@ public Matrix createMatrix(int rows, int columns) {
return new Basic2DMatrix(rows, columns);
}

@Override
public Matrix createMatrix(int rows, int columns, double[] array) {
return new Basic2DMatrix(rows, columns, array);
}

@Override
public Matrix createMatrix(double array[][]) {
return new Basic2DMatrix(array);
Expand Down Expand Up @@ -70,31 +75,27 @@ public Matrix createConstantMatrix(int rows, int columns, double value) {
}

@Override
public Matrix createRandomMatrix(int rows, int columns) {
public Matrix createRandomMatrix(int rows, int columns, Random random) {

double array[][] = new double[rows][columns];

Random rnd = new Random();

for (int i = 0; i < rows; i++) {
for (int j = 0; j < columns; j++) {
array[i][j] = rnd.nextDouble();
array[i][j] = random.nextDouble();
}
}

return new Basic2DMatrix(array);
}

@Override
public Matrix createRandomSymmetricMatrix(int size) {
public Matrix createRandomSymmetricMatrix(int size, Random random) {

double array[][] = new double[size][size];

Random rnd = new Random();

for (int i = 0; i < size; i++) {
for (int j = i; j < size; j++) {
double value = rnd.nextDouble();
double value = random.nextDouble();
array[i][j] = value;
array[j][i] = value;
}
Expand Down
9 changes: 4 additions & 5 deletions src/main/java/org/la4j/factory/BasicFactory.java
Expand Up @@ -24,12 +24,13 @@
import java.util.Arrays;
import java.util.Random;

import org.la4j.matrix.Matrix;
import org.la4j.vector.Vector;
import org.la4j.vector.dense.BasicVector;
import org.la4j.vector.source.VectorSource;


public abstract class BasicFactory implements Factory {
public abstract class BasicFactory extends Factory {

private static final long serialVersionUID = 4071505L;

Expand Down Expand Up @@ -69,13 +70,11 @@ public Vector createConstantVector(int length, double value) {


@Override
public Vector createRandomVector(int length) {

Random rnd = new Random();
public Vector createRandomVector(int length, Random random) {

double array[] = new double[length];
for (int i = 0; i < length; i++) {
array[i] = rnd.nextDouble();
array[i] = random.nextDouble();
}

return new BasicVector(array);
Expand Down
15 changes: 8 additions & 7 deletions src/main/java/org/la4j/factory/CCSFactory.java
Expand Up @@ -31,7 +31,7 @@
import org.la4j.matrix.sparse.CCSMatrix;
import org.la4j.matrix.sparse.CRSMatrix;

public class CCSFactory extends CompressedFactory implements Factory {
public class CCSFactory extends CompressedFactory {

private static final long serialVersionUID = 4071505L;

Expand All @@ -45,6 +45,11 @@ public Matrix createMatrix(int rows, int columns) {
return new CCSMatrix(rows, columns);
}

@Override
public Matrix createMatrix(int rows, int columns, double array[]) {
return new CCSMatrix(rows, columns, array);
}

@Override
public Matrix createMatrix(double[][] array) {
return new CCSMatrix(array);
Expand Down Expand Up @@ -84,9 +89,7 @@ public Matrix createConstantMatrix(int rows, int columns, double value) {
}

@Override
public Matrix createRandomMatrix(int rows, int columns) {

Random random = new Random();
public Matrix createRandomMatrix(int rows, int columns, Random random) {

int cardinality = (rows * columns) / DENSITY;

Expand Down Expand Up @@ -128,14 +131,12 @@ public Matrix createRandomMatrix(int rows, int columns) {
}

@Override
public Matrix createRandomSymmetricMatrix(int size) {
public Matrix createRandomSymmetricMatrix(int size, Random random) {

// TODO: Issue 15

int cardinality = (size * size) / DENSITY;

Random random = new Random();

Matrix matrix = new CCSMatrix(size, size, cardinality);

for (int k = 0; k < cardinality / 2; k++) {
Expand Down
15 changes: 8 additions & 7 deletions src/main/java/org/la4j/factory/CRSFactory.java
Expand Up @@ -30,7 +30,7 @@
import org.la4j.matrix.source.MatrixSource;
import org.la4j.matrix.sparse.CRSMatrix;

public class CRSFactory extends CompressedFactory implements Factory {
public class CRSFactory extends CompressedFactory {

private static final long serialVersionUID = 4071505L;

Expand All @@ -44,6 +44,11 @@ public Matrix createMatrix(int rows, int columns) {
return new CRSMatrix(rows, columns);
}

@Override
public Matrix createMatrix(int rows, int columns, double[] array) {
return new CRSMatrix(rows, columns, array);
}

@Override
public Matrix createMatrix(double[][] array) {
return new CRSMatrix(array);
Expand Down Expand Up @@ -83,9 +88,7 @@ public Matrix createConstantMatrix(int rows, int columns, double value) {
}

@Override
public Matrix createRandomMatrix(int rows, int columns) {

Random random = new Random();
public Matrix createRandomMatrix(int rows, int columns, Random random) {

int cardinality = (rows * columns) / DENSITY;

Expand Down Expand Up @@ -127,14 +130,12 @@ public Matrix createRandomMatrix(int rows, int columns) {
}

@Override
public Matrix createRandomSymmetricMatrix(int size) {
public Matrix createRandomSymmetricMatrix(int size, Random random) {

// TODO: Issue 15

int cardinality = (size * size) / DENSITY;

Random random = new Random();

Matrix matrix = new CRSMatrix(size, size, cardinality);

for (int k = 0; k < cardinality / 2; k++) {
Expand Down
7 changes: 3 additions & 4 deletions src/main/java/org/la4j/factory/CompressedFactory.java
Expand Up @@ -25,11 +25,12 @@
import java.util.Arrays;
import java.util.Random;

import org.la4j.matrix.Matrix;
import org.la4j.vector.Vector;
import org.la4j.vector.source.VectorSource;
import org.la4j.vector.sparse.CompressedVector;

public abstract class CompressedFactory implements Factory {
public abstract class CompressedFactory extends Factory {

private static final long serialVersionUID = 4071505L;

Expand Down Expand Up @@ -75,9 +76,7 @@ public Vector createConstantVector(int length, double value) {
}

@Override
public Vector createRandomVector(int length) {

Random random = new Random();
public Vector createRandomVector(int length, Random random) {

int cardinality = length / DENSITY;

Expand Down

0 comments on commit 0229aa0

Please sign in to comment.