tRemoved comments, matrixes square - numeric - C++ library with numerical algorithms
(HTM) git clone git://src.adamsgaard.dk/numeric
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
(DIR) commit 43b64455bb2586f8d0dca506dd9068373de92ad6
(DIR) parent 95c6e4f090aa65daa2e9897a7824f4800d756c29
(HTM) Author: Anders Damsgaard Christensen <adc@geo.au.dk>
Date: Tue, 22 Jan 2013 17:34:02 +0100
Removed comments, matrixes square
Diffstat:
M matrixmul/c-arrofarrs.c | 8 --------
M matrixmul/c-linarr.c | 6 ------
M matrixmul/cpp-linvectors.cpp | 32 ++++++++++++-------------------
M matrixmul/cpp-vectorofvectors.cpp | 24 ++++++++----------------
M matrixmul/julia.jl | 8 +++-----
M matrixmul/octave.m | 8 +++-----
M matrixmul/python-numpy.py | 13 +++++--------
7 files changed, 31 insertions(+), 68 deletions(-)
---
(DIR) diff --git a/matrixmul/c-arrofarrs.c b/matrixmul/c-arrofarrs.c
t@@ -25,7 +25,6 @@ int main(int argc, char* argv[])
double** B;
double** C;
- /* Read input argument as matrix height */
if (argc == 2) {
N = atoi(argv[1]);
} else {
t@@ -33,31 +32,25 @@ int main(int argc, char* argv[])
return 1;
}
- /* Allocate arrays */
A = (double**) malloc(N * sizeof(double*));
B = (double**) malloc(N * sizeof(double*));
C = (double**) malloc(N * sizeof(double*));
- /* Allocate row arrays inside arrays */
for (i = 0; i < N; i++) {
A[i] = (double*) malloc(N * sizeof(double));
B[i] = (double*) malloc(N * sizeof(double));
C[i] = (double*) malloc(N * sizeof(double));
}
- /* Fill matrices A and B with values */
for (i = 0; i < N; i++) {
for (j = 0; j < N; j++) {
A[i][j] = 2.0;
- /* We want a random value between 0 and 1 */
B[i][j] = rand()/RAND_MAX;
}
}
- /* Perform matrix multiplication */
matrixMult(A, B, C, N);
- /* Free memory */
for (i = 0; i < N; i++) {
free(A[i]);
free(B[i]);
t@@ -67,6 +60,5 @@ int main(int argc, char* argv[])
free(B);
free(C);
- /* Exit with success */
return 0;
}
(DIR) diff --git a/matrixmul/c-linarr.c b/matrixmul/c-linarr.c
t@@ -25,7 +25,6 @@ int main(int argc, char* argv[])
double* B;
double* C;
- /* Read input argument as matrix height */
if (argc == 2) {
N = atoi(argv[1]);
} else {
t@@ -33,22 +32,17 @@ int main(int argc, char* argv[])
return 1;
}
- /* Allocate arrays */
A = (double*) malloc(N * N * sizeof(double*));
B = (double*) malloc(N * N * sizeof(double*));
C = (double*) malloc(N * N * sizeof(double*));
- /* Fill matrices A and B with values */
for (i = 0; i < N*N; i++) {
A[i] = 2.0;
- /* We want a random value between 0 and 1 */
B[i] = rand()/RAND_MAX;
}
- /* Perform matrix multiplication */
matrixMult(A, B, C, N);
- /* Free memory */
free(A);
free(B);
free(C);
(DIR) diff --git a/matrixmul/cpp-linvectors.cpp b/matrixmul/cpp-linvectors.cpp
t@@ -1,15 +1,14 @@
#include <iostream>
#include <vector>
-#include <cstdlib> // rand is here
+#include <cstdlib>
int main(int argc, char* argv[])
{
using std::cout;
using std::vector;
- int M, N, i, j, k;
+ int N, i, j, k;
- // Read input argument as matrix height
if (argc == 2) {
N = atoi(argv[1]);
} else {
t@@ -17,33 +16,26 @@ int main(int argc, char* argv[])
return 1;
}
- // Width equal to height
- M = N;
+ vector<double> A(N*N);
+ vector<double> B(N*N);
+ vector<double> C(N*N);
- vector<double> A(M*N);
- vector<double> B(M*N);
- vector<double> C(M*N);
-
- // Fill matrices A and B with values
for (i = 0; i<N; ++i) {
- for (j = 0; j<M; ++j) {
- A[j*M+i] = 2.0;
- // We want a random value between 0 and 1
- B[j*M+i] = rand()/RAND_MAX;
+ for (j = 0; j<N; ++j) {
+ A[j*N+i] = 2.0;
+ B[j*N+i] = rand()/RAND_MAX;
}
}
double sum;
- // Perform matrix multiplication
for (i = 0; i < N; ++i) {
- for (j = 0; j < M; ++j) {
+ for (j = 0; j < N; ++j) {
sum = 0.0f;
- for (k = 0; k < M; ++k)
- sum += A[k*M+i] * B[j*M+k];
- C[j*M+i] = sum;
+ for (k = 0; k < N; ++k)
+ sum += A[k*N+i] * B[j*N+k];
+ C[j*N+i] = sum;
}
}
- // Exit with success
return 0;
}
(DIR) diff --git a/matrixmul/cpp-vectorofvectors.cpp b/matrixmul/cpp-vectorofvectors.cpp
t@@ -1,15 +1,14 @@
#include <iostream>
#include <vector>
-#include <cstdlib> // rand is here
+#include <cstdlib>
int main(int argc, char* argv[])
{
using std::cout;
using std::vector;
- int M, N, i, j, k;
+ int N, i, j, k;
- // Read input argument as matrix height
if (argc == 2) {
N = atoi(argv[1]);
} else {
t@@ -17,33 +16,26 @@ int main(int argc, char* argv[])
return 1;
}
- // Width equal to height
- M = N;
-
- vector< vector<double> > A(M,vector<double>(M));
- vector< vector<double> > B(M,vector<double>(M));
- vector< vector<double> > C(M,vector<double>(M));
+ vector< vector<double> > A(N,vector<double>(N));
+ vector< vector<double> > B(N,vector<double>(N));
+ vector< vector<double> > C(N,vector<double>(N));
- // Fill matrices A and B with values
for (i = 0; i<N; ++i) {
- for (j = 0; j<M; ++j) {
+ for (j = 0; j<N; ++j) {
A[i][j] = 2.0;
- // We want a random value between 0 and 1
B[i][j] = rand()/RAND_MAX;
}
}
double sum;
- // Perform matrix multiplication
for (i = 0; i < N; ++i) {
- for (j = 0; j < M; ++j) {
+ for (j = 0; j < N; ++j) {
sum = 0.0;
- for (k = 0; k < M; ++k)
+ for (k = 0; k < N; ++k)
sum = A[k][j] * B[i][k];
C[i][j] = sum;
}
}
- // Exit with success
return 0;
}
(DIR) diff --git a/matrixmul/julia.jl b/matrixmul/julia.jl
t@@ -1,4 +1,4 @@
-#!/usr/bin/julia
+#!/usr/bin/env julia
if (length(ARGS) == 1)
N = int(ARGS[1])
t@@ -6,8 +6,6 @@ else
println("Sorry, I need the matrix width as a command line argument\n")
end
-M = N
-
-A = ones(M,N)*2.0
-B = rand(M,N)
+A = ones(N,N)*2.0
+B = rand(N,N)
C = A*B
(DIR) diff --git a/matrixmul/octave.m b/matrixmul/octave.m
t@@ -1,14 +1,12 @@
#/usr/bin/octave -q -f --no-window-system
if (nargin == 1)
- M = str2num(argv(){1});
+ N = str2num(argv(){1});
else
disp("Sorry, I need the matrix size as a command line argument");
exit(1);
end
-N = M;
-
-A = ones(M,N) * 2.0;
-B = rand(M,N);
+A = ones(N,N) * 2.0;
+B = rand(N,N);
C = A*B;
(DIR) diff --git a/matrixmul/python-numpy.py b/matrixmul/python-numpy.py
t@@ -1,16 +1,13 @@
#!/usr/bin/env python
-
import sys
import numpy
if (len(sys.argv) == 2):
- M = int(sys.argv[1])
-else:
+ N = int(sys.argv[1])
+else :
print("Sorry, I need a matrix width as input argument!")
sys.exit(1)
-N = M
-
-A = numpy.ones((M,N))*2.0
-B = numpy.random.random_sample((M,N))
-C = numpy.dot(A,B) # A*B is element wise on numpy arrays
+A = numpy.ones((N,N))*2.0
+B = numpy.random.random_sample((N,N))
+C = numpy.dot(A,B)