narray 0.5.9.9 → 0.6.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/src/ChangeLog +36 -0
- data/src/README.en +5 -6
- data/src/README.ja +4 -5
- data/src/SPEC.en +12 -9
- data/src/SPEC.ja +12 -9
- data/src/depend +1 -1
- data/src/extconf.rb +4 -19
- data/src/lib/narray_ext.rb +43 -2
- data/src/mkop.rb +11 -1
- data/src/na_func.c +92 -11
- data/src/na_linalg.c +2 -0
- data/src/narray.c +21 -12
- data/src/narray.h +3 -3
- data/src/narray_local.h +1 -0
- metadata +7 -48
- data/src/bench/all.rb +0 -88
- data/src/bench/bench.m +0 -61
- data/src/bench/bench.py +0 -89
- data/src/bench/bench.rb +0 -59
- data/src/bench/dummy.m +0 -0
- data/src/bench/dummy.py +0 -13
- data/src/bench/dummy.rb +0 -0
- data/src/test/statistics.rb +0 -22
- data/src/test/testarray.rb +0 -20
- data/src/test/testbit.rb +0 -27
- data/src/test/testcast.rb +0 -14
- data/src/test/testcomplex.rb +0 -35
- data/src/test/testfftw.rb +0 -16
- data/src/test/testindex.rb +0 -11
- data/src/test/testindexary.rb +0 -26
- data/src/test/testindexset.rb +0 -55
- data/src/test/testmask.rb +0 -40
- data/src/test/testmath.rb +0 -48
- data/src/test/testmath2.rb +0 -46
- data/src/test/testmatrix.rb +0 -13
- data/src/test/testmatrix2.rb +0 -42
- data/src/test/testmatrix3.rb +0 -19
- data/src/test/testminmax.rb +0 -46
- data/src/test/testobject.rb +0 -29
- data/src/test/testpow.rb +0 -19
- data/src/test/testrandom.rb +0 -23
- data/src/test/testround.rb +0 -11
- data/src/test/testsort.rb +0 -37
- data/src/test/teststr.rb +0 -13
- data/src/test/testtrans.rb +0 -18
- data/src/test/testwhere.rb +0 -27
data/src/na_linalg.c
CHANGED
@@ -32,6 +32,7 @@ typedef struct NARRAY_FUNCSET {
|
|
32
32
|
void (*sbt)();
|
33
33
|
void (*mul)();
|
34
34
|
void (*div)();
|
35
|
+
void (*mod)();
|
35
36
|
void (*muladd)();
|
36
37
|
void (*mulsbt)();
|
37
38
|
void (*cmp)();
|
@@ -590,6 +591,7 @@ void Init_na_linalg()
|
|
590
591
|
na_funcset[i].sbt = SbtUFuncs[i];
|
591
592
|
na_funcset[i].mul = MulUFuncs[i];
|
592
593
|
na_funcset[i].div = DivUFuncs[i];
|
594
|
+
na_funcset[i].mod = ModUFuncs[i];
|
593
595
|
na_funcset[i].muladd = MulAddFuncs[i];
|
594
596
|
na_funcset[i].mulsbt = MulSbtFuncs[i];
|
595
597
|
na_funcset[i].cmp = CmpFuncs[i];
|
data/src/narray.c
CHANGED
@@ -101,7 +101,7 @@ static void
|
|
101
101
|
{
|
102
102
|
if ( ary->total > 0 ) {
|
103
103
|
if (ary->ref == Qnil || ary->ref == Qtrue) { /* non reference */
|
104
|
-
xfree(ary->ptr);
|
104
|
+
xfree(ary->ptr);
|
105
105
|
}
|
106
106
|
xfree(ary->shape);
|
107
107
|
#ifdef DEBUG
|
@@ -117,17 +117,22 @@ static void
|
|
117
117
|
struct NARRAY*
|
118
118
|
na_alloc_struct(int type, int rank, int *shape)
|
119
119
|
{
|
120
|
-
int total=1;
|
120
|
+
int total=1, total_bak;
|
121
121
|
int i, memsz;
|
122
122
|
struct NARRAY *ary;
|
123
123
|
|
124
|
-
for (i=0; i<rank; ++i)
|
125
|
-
|
124
|
+
for (i=0; i<rank; ++i) {
|
125
|
+
total_bak = total;
|
126
|
+
total = total_bak * shape[i];
|
127
|
+
if (total>2147483647 || total/shape[i] != total_bak) {
|
128
|
+
rb_raise(rb_eArgError, "array size is too large");
|
129
|
+
}
|
130
|
+
}
|
126
131
|
|
127
132
|
if (rank<=0 || total<=0) {
|
128
133
|
/* empty array */
|
129
134
|
ary = ALLOC(struct NARRAY);
|
130
|
-
ary->rank =
|
135
|
+
ary->rank =
|
131
136
|
ary->total = 0;
|
132
137
|
ary->shape = NULL;
|
133
138
|
ary->ptr = NULL;
|
@@ -136,6 +141,10 @@ struct NARRAY*
|
|
136
141
|
else {
|
137
142
|
memsz = na_sizeof[type] * total;
|
138
143
|
|
144
|
+
if (memsz>2147483647 || memsz/na_sizeof[type] != total) {
|
145
|
+
rb_raise(rb_eArgError, "allocation size is too large");
|
146
|
+
}
|
147
|
+
|
139
148
|
/* Garbage Collection */
|
140
149
|
#ifdef NARRAY_GC
|
141
150
|
mem_count += memsz;
|
@@ -231,7 +240,7 @@ VALUE
|
|
231
240
|
if (type==NA_ROBJ) {
|
232
241
|
rb_mem_clear((VALUE*)(na->ptr), na->total);
|
233
242
|
}
|
234
|
-
return na_wrap_struct_class(na, klass);
|
243
|
+
return na_wrap_struct_class(na, klass);
|
235
244
|
}
|
236
245
|
|
237
246
|
|
@@ -257,7 +266,7 @@ VALUE
|
|
257
266
|
struct NARRAY *na;
|
258
267
|
|
259
268
|
na = na_alloc_struct(type, 0, NULL);
|
260
|
-
return na_wrap_struct_class(na, klass);
|
269
|
+
return na_wrap_struct_class(na, klass);
|
261
270
|
}
|
262
271
|
|
263
272
|
|
@@ -610,7 +619,7 @@ static VALUE
|
|
610
619
|
if ( len != str_len )
|
611
620
|
rb_raise(rb_eArgError, "size mismatch");
|
612
621
|
}
|
613
|
-
|
622
|
+
|
614
623
|
v = na_make_object( type, rank, shape, cNArray );
|
615
624
|
GetNArray(v,ary);
|
616
625
|
memcpy( ary->ptr, RSTRING_PTR(str), ary->total*na_sizeof[type] );
|
@@ -720,7 +729,7 @@ static VALUE
|
|
720
729
|
}
|
721
730
|
|
722
731
|
|
723
|
-
/* singleton method:
|
732
|
+
/* singleton method:
|
724
733
|
NArray.to_na( string, type, size1,size2,...,sizeN )
|
725
734
|
NArray.to_na( array )
|
726
735
|
*/
|
@@ -751,7 +760,7 @@ static VALUE
|
|
751
760
|
}
|
752
761
|
|
753
762
|
|
754
|
-
/* singleton method:
|
763
|
+
/* singleton method:
|
755
764
|
NArray[object]
|
756
765
|
*/
|
757
766
|
static VALUE
|
@@ -986,7 +995,7 @@ VALUE na_fill(VALUE self, volatile VALUE val)
|
|
986
995
|
if (a2->total != 1)
|
987
996
|
rb_raise(rb_eArgError, "single-element argument required");
|
988
997
|
|
989
|
-
SetFuncs[a1->type][a2->type]( a1->total,
|
998
|
+
SetFuncs[a1->type][a2->type]( a1->total,
|
990
999
|
a1->ptr, na_sizeof[a1->type],
|
991
1000
|
a2->ptr, 0 );
|
992
1001
|
return self;
|
@@ -1010,7 +1019,7 @@ VALUE
|
|
1010
1019
|
}
|
1011
1020
|
|
1012
1021
|
GetNArray(self,ary);
|
1013
|
-
IndGenFuncs[ary->type]( ary->total,
|
1022
|
+
IndGenFuncs[ary->type]( ary->total,
|
1014
1023
|
ary->ptr, na_sizeof[ary->type],
|
1015
1024
|
start, step );
|
1016
1025
|
return self;
|
data/src/narray.h
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
/*
|
2
2
|
narray.h
|
3
3
|
Numerical Array Extention for Ruby
|
4
|
-
(C) Copyright 1999-
|
4
|
+
(C) Copyright 1999-2011 by Masahiro TANAKA
|
5
5
|
|
6
6
|
This program is free software.
|
7
7
|
You can distribute/modify this program
|
@@ -23,8 +23,8 @@
|
|
23
23
|
# include <sys/types.h>
|
24
24
|
#endif
|
25
25
|
|
26
|
-
#define NARRAY_VERSION "0.
|
27
|
-
#define NARRAY_VERSION_CODE
|
26
|
+
#define NARRAY_VERSION "0.6.0.0"
|
27
|
+
#define NARRAY_VERSION_CODE 600
|
28
28
|
|
29
29
|
/*
|
30
30
|
Data types used in NArray :
|
data/src/narray_local.h
CHANGED
metadata
CHANGED
@@ -1,13 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: narray
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
segments:
|
6
|
-
- 0
|
7
|
-
- 5
|
8
|
-
- 9
|
9
|
-
- 9
|
10
|
-
version: 0.5.9.9
|
4
|
+
version: 0.6.0.0
|
11
5
|
platform: ruby
|
12
6
|
authors:
|
13
7
|
- Masahiro Tanaka
|
@@ -15,11 +9,11 @@ autorequire:
|
|
15
9
|
bindir: bin
|
16
10
|
cert_chain: []
|
17
11
|
|
18
|
-
date:
|
12
|
+
date: 2011-08-27
|
19
13
|
default_executable:
|
20
14
|
dependencies: []
|
21
15
|
|
22
|
-
description:
|
16
|
+
description: Numerical N-dimensional Array class
|
23
17
|
email: masa16.tanaka@gmail.com
|
24
18
|
executables: []
|
25
19
|
|
@@ -50,38 +44,7 @@ files:
|
|
50
44
|
- src/narray_local.h
|
51
45
|
- src/lib/narray_ext.rb
|
52
46
|
- src/lib/nmatrix.rb
|
53
|
-
|
54
|
-
- src/test/testarray.rb
|
55
|
-
- src/test/testbit.rb
|
56
|
-
- src/test/testcast.rb
|
57
|
-
- src/test/testcomplex.rb
|
58
|
-
- src/test/testfftw.rb
|
59
|
-
- src/test/testindex.rb
|
60
|
-
- src/test/testindexary.rb
|
61
|
-
- src/test/testindexset.rb
|
62
|
-
- src/test/testmask.rb
|
63
|
-
- src/test/testmath.rb
|
64
|
-
- src/test/testmath2.rb
|
65
|
-
- src/test/testmatrix.rb
|
66
|
-
- src/test/testmatrix2.rb
|
67
|
-
- src/test/testmatrix3.rb
|
68
|
-
- src/test/testminmax.rb
|
69
|
-
- src/test/testobject.rb
|
70
|
-
- src/test/testpow.rb
|
71
|
-
- src/test/testrandom.rb
|
72
|
-
- src/test/testround.rb
|
73
|
-
- src/test/testsort.rb
|
74
|
-
- src/test/teststr.rb
|
75
|
-
- src/test/testtrans.rb
|
76
|
-
- src/test/testwhere.rb
|
77
|
-
- src/bench/all.rb
|
78
|
-
- src/bench/bench.m
|
79
|
-
- src/bench/bench.py
|
80
|
-
- src/bench/bench.rb
|
81
|
-
- src/bench/dummy.m
|
82
|
-
- src/bench/dummy.py
|
83
|
-
- src/bench/dummy.rb
|
84
|
-
has_rdoc: true
|
47
|
+
has_rdoc: false
|
85
48
|
homepage: http://narray.rubyforge.org/
|
86
49
|
licenses: []
|
87
50
|
|
@@ -91,27 +54,23 @@ rdoc_options: []
|
|
91
54
|
require_paths:
|
92
55
|
- .
|
93
56
|
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
-
none: false
|
95
57
|
requirements:
|
96
58
|
- - ">="
|
97
59
|
- !ruby/object:Gem::Version
|
98
|
-
segments:
|
99
|
-
- 0
|
100
60
|
version: "0"
|
61
|
+
version:
|
101
62
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
102
|
-
none: false
|
103
63
|
requirements:
|
104
64
|
- - ">="
|
105
65
|
- !ruby/object:Gem::Version
|
106
|
-
segments:
|
107
|
-
- 0
|
108
66
|
version: "0"
|
67
|
+
version:
|
109
68
|
requirements: []
|
110
69
|
|
111
70
|
rubyforge_project: narray
|
112
71
|
rubygems_version: 1.3.7
|
113
72
|
signing_key:
|
114
|
-
specification_version:
|
73
|
+
specification_version: 2
|
115
74
|
summary: N-dimensional Numerical Array class for Ruby
|
116
75
|
test_files: []
|
117
76
|
|
data/src/bench/all.rb
DELETED
@@ -1,88 +0,0 @@
|
|
1
|
-
require "narray"
|
2
|
-
T = (RUBY_VERSION<"1.8.0") ? Time : Process
|
3
|
-
|
4
|
-
ruby_narray = system( "ruby -r narray dummy.rb" )
|
5
|
-
python_numeric = system( "python dummy.py numeric" )
|
6
|
-
python_numarray = system( "python dummy.py numarray" )
|
7
|
-
python_numpy = system( "python dummy.py numpy" )
|
8
|
-
octave = system( "octave -qf dummy.m" )
|
9
|
-
|
10
|
-
def array_size
|
11
|
-
list = [
|
12
|
-
100000, 200000, 500000,
|
13
|
-
1000000, 2000000, 5000000,
|
14
|
-
10000000, 20000000, 50000000
|
15
|
-
]
|
16
|
-
mlist = [
|
17
|
-
150, 200, 300, 500, 700, 1000, 1500, 2000, 3000
|
18
|
-
#300, 400, 700, 1000, 1400, 2000, 3000, 4000, 7000
|
19
|
-
]
|
20
|
-
|
21
|
-
r = 50
|
22
|
-
n = nil
|
23
|
-
i = nil
|
24
|
-
list.each_with_index do |n,i|
|
25
|
-
a = NArray.float(n)
|
26
|
-
b = NArray.float(n)
|
27
|
-
t = bench_time(r) { c = a+b }
|
28
|
-
break if t>0.5
|
29
|
-
end
|
30
|
-
[n, mlist[i], r*2]
|
31
|
-
end
|
32
|
-
|
33
|
-
def bench_time(n)
|
34
|
-
t1 = T.times.utime
|
35
|
-
for i in 1..n
|
36
|
-
yield
|
37
|
-
end
|
38
|
-
t = T.times.utime - t1
|
39
|
-
puts " Time: %.2f sec\n" % [t]
|
40
|
-
t
|
41
|
-
end
|
42
|
-
|
43
|
-
n,m,r = array_size
|
44
|
-
puts "array size = #{n}, repeat = #{r}\n\n"
|
45
|
-
|
46
|
-
system "ruby bench.rb float mul #{n} #{r}" if ruby_narray
|
47
|
-
system "python bench.py numeric float mul #{n} #{r}" if python_numeric
|
48
|
-
system "python bench.py numarray float mul #{n} #{r}" if python_numarray
|
49
|
-
system "python bench.py numpy float mul #{n} #{r}" if python_numpy
|
50
|
-
system "octave -qf bench.m float mul #{n} #{r}" if octave
|
51
|
-
puts
|
52
|
-
|
53
|
-
system "ruby bench.rb int add #{n} #{r}" if ruby_narray
|
54
|
-
system "python bench.py numeric int add #{n} #{r}" if python_numeric
|
55
|
-
system "python bench.py numarray int add #{n} #{r}" if python_numarray
|
56
|
-
system "python bench.py numpy int add #{n} #{r}" if python_numpy
|
57
|
-
system "octave -qf bench.m int add #{n} #{r}" if octave
|
58
|
-
puts
|
59
|
-
|
60
|
-
system "ruby bench.rb complex mul #{n} #{r}" if ruby_narray
|
61
|
-
system "python bench.py numeric complex mul #{n} #{r}" if python_numeric
|
62
|
-
system "python bench.py numarray complex mul #{n} #{r}" if python_numarray
|
63
|
-
system "python bench.py numpy complex mul #{n} #{r}" if python_numpy
|
64
|
-
system "octave -qf bench.m complex mul #{n} #{r}" if octave
|
65
|
-
puts
|
66
|
-
|
67
|
-
system "ruby bench.rb float_cross mul #{m*2} #{r}" if ruby_narray
|
68
|
-
system "python bench.py numeric float_cross mul #{m*2} #{r}" if python_numeric
|
69
|
-
system "python bench.py numarray float_cross mul #{m*2} #{r}" if python_numarray
|
70
|
-
system "python bench.py numpy float_cross mul #{m*2} #{r}" if python_numpy
|
71
|
-
system "octave -qf bench.m float_cross matmul #{m*2} #{r}" if octave
|
72
|
-
puts
|
73
|
-
|
74
|
-
system "ruby bench.rb float_matrix mul #{m} 4" if ruby_narray
|
75
|
-
system "python bench.py numeric float_matrix matmul #{m} 4" if python_numeric
|
76
|
-
system "python bench.py numarray float_matrix matmul #{m} 4" if python_numarray
|
77
|
-
system "python bench.py numpy float_matrix matmul #{m} 4" if python_numpy
|
78
|
-
system "octave -qf bench.m float_matrix matmul #{m} 4" if octave
|
79
|
-
puts
|
80
|
-
|
81
|
-
system "ruby bench.rb float_solve solve #{m} 2" if ruby_narray
|
82
|
-
system "python bench.py numeric float_solve solve #{m} 2" if python_numeric
|
83
|
-
system "python bench.py numarray float_solve solve #{m} 2" if python_numarray
|
84
|
-
system "python bench.py numpy float_solve solve #{m} 2" if python_numpy
|
85
|
-
system "octave -qf bench.m float_solve solve #{m} 2" if octave
|
86
|
-
puts
|
87
|
-
|
88
|
-
exit
|
data/src/bench/bench.m
DELETED
@@ -1,61 +0,0 @@
|
|
1
|
-
#! /bin/octave -qf
|
2
|
-
|
3
|
-
arg_list = argv();
|
4
|
-
TYPE = arg_list{1};
|
5
|
-
OP = arg_list{2};
|
6
|
-
ARRSZ = str2num(arg_list{3});
|
7
|
-
REPEAT = str2num(arg_list{4});
|
8
|
-
n = ARRSZ;
|
9
|
-
|
10
|
-
switch(TYPE)
|
11
|
-
case "float"
|
12
|
-
a = linspace(0,n-1,n);
|
13
|
-
b = linspace(0,n-1,n);
|
14
|
-
case "int"
|
15
|
-
a = int32(linspace(0,n-1,n));
|
16
|
-
b = int32(linspace(0,n-1,n));
|
17
|
-
case "complex"
|
18
|
-
a = complex(linspace(0,n-1,n));
|
19
|
-
b = complex(linspace(0,n-1,n));
|
20
|
-
case "float_cross"
|
21
|
-
a = linspace(0,n-1,n)';
|
22
|
-
b = linspace(0,n-1,n);
|
23
|
-
case "float_matrix"
|
24
|
-
a = linspace(0,n*n-1,n*n);
|
25
|
-
a = rem(a, n+1) + 1;
|
26
|
-
a = reshape(a,n,n);
|
27
|
-
b = linspace(0,n*n-1,n*n);
|
28
|
-
b = rem(b, n-1) + 1;
|
29
|
-
b = reshape(b,n,n);
|
30
|
-
case "float_solve"
|
31
|
-
a = linspace(0,n*n-1,n*n);
|
32
|
-
a = rem(a, n+1) + 1;
|
33
|
-
a = reshape(a,n,n);
|
34
|
-
b = reshape(linspace(1,n*n,n*n),n,n);
|
35
|
-
endswitch
|
36
|
-
|
37
|
-
[t1, u1, s1] = cputime ();
|
38
|
-
switch(OP)
|
39
|
-
case "add"
|
40
|
-
for i = 1:REPEAT
|
41
|
-
c = a + b;
|
42
|
-
endfor
|
43
|
-
case "mul"
|
44
|
-
for i = 1:REPEAT
|
45
|
-
c = a .* b;
|
46
|
-
endfor
|
47
|
-
case "matmul"
|
48
|
-
for i = 1:REPEAT
|
49
|
-
c = a * b;
|
50
|
-
endfor
|
51
|
-
#size(c)
|
52
|
-
case "solve"
|
53
|
-
for i = 1:REPEAT
|
54
|
-
c = a \ b;
|
55
|
-
endfor
|
56
|
-
#size(c)
|
57
|
-
endswitch
|
58
|
-
[t2, u2, s2] = cputime ();
|
59
|
-
|
60
|
-
printf ("Octave type=%s size=%d op=%s repeat=%d Time: %.2f sec",
|
61
|
-
TYPE,ARRSZ,OP,REPEAT,u2 - u1);
|
data/src/bench/bench.py
DELETED
@@ -1,89 +0,0 @@
|
|
1
|
-
import time
|
2
|
-
import sys
|
3
|
-
|
4
|
-
MODULE = sys.argv[1]
|
5
|
-
TYPE = sys.argv[2]
|
6
|
-
OP = sys.argv[3]
|
7
|
-
ARRSZ = int(sys.argv[4])
|
8
|
-
REPEAT = int(sys.argv[5])
|
9
|
-
|
10
|
-
if MODULE=="numeric":
|
11
|
-
from Numeric import *
|
12
|
-
from LinearAlgebra import *
|
13
|
-
elif MODULE=="numarray":
|
14
|
-
from numarray import *
|
15
|
-
from LinearAlgebra import *
|
16
|
-
elif MODULE=="numpy":
|
17
|
-
from numpy import *
|
18
|
-
from numpy.linalg import solve
|
19
|
-
|
20
|
-
def bench_time(func,repeat=REPEAT):
|
21
|
-
start = time.clock()
|
22
|
-
for i in range(repeat):
|
23
|
-
c = func()
|
24
|
-
stop = time.clock()
|
25
|
-
print "Python %s type=%s size=%d op=%s repeat=%d Time: %.2f sec" % \
|
26
|
-
(MODULE,TYPE,ARRSZ,OP,REPEAT,stop-start)
|
27
|
-
#print shape(c)
|
28
|
-
|
29
|
-
n = ARRSZ
|
30
|
-
|
31
|
-
if MODULE=="numpy":
|
32
|
-
def bench_array(type=float):
|
33
|
-
return arange(ARRSZ,dtype=type)
|
34
|
-
|
35
|
-
if TYPE=="float":
|
36
|
-
a = bench_array(float)
|
37
|
-
b = bench_array(float)
|
38
|
-
elif TYPE=="int":
|
39
|
-
a = bench_array(int)
|
40
|
-
b = bench_array(int)
|
41
|
-
elif TYPE=="complex":
|
42
|
-
a = bench_array(complex)
|
43
|
-
b = bench_array(complex)
|
44
|
-
elif TYPE=="float_cross":
|
45
|
-
a = reshape(arange(ARRSZ,dtype=float),(ARRSZ,1))
|
46
|
-
b = reshape(arange(ARRSZ,dtype=float),(1,ARRSZ))
|
47
|
-
elif TYPE=="float_matrix":
|
48
|
-
a = reshape(arange(ARRSZ**2,dtype=float),(ARRSZ,ARRSZ))
|
49
|
-
b = reshape(arange(ARRSZ**2,dtype=float),(ARRSZ,ARRSZ))
|
50
|
-
elif TYPE=="float_solve":
|
51
|
-
a = reshape(arange(n**2,dtype=float)%(n+1)+1,(n,n))
|
52
|
-
b = reshape(arange(n**2,dtype=float)+1,(n,n))
|
53
|
-
else:
|
54
|
-
def bench_array(type=float):
|
55
|
-
return arrayrange(ARRSZ).astype(type)
|
56
|
-
if TYPE=="float":
|
57
|
-
a = bench_array(Float64)
|
58
|
-
b = bench_array(Float64)
|
59
|
-
elif TYPE=="int":
|
60
|
-
a = bench_array(Int32)
|
61
|
-
b = bench_array(Int32)
|
62
|
-
elif TYPE=="complex":
|
63
|
-
a = bench_array(Complex64)
|
64
|
-
b = bench_array(Complex64)
|
65
|
-
elif TYPE=="float_cross":
|
66
|
-
a = reshape(arrayrange(ARRSZ),(ARRSZ,1)).astype(Float64)
|
67
|
-
b = reshape(arrayrange(ARRSZ),(1,ARRSZ)).astype(Float64)
|
68
|
-
elif TYPE=="float_matrix":
|
69
|
-
a = reshape(arrayrange(ARRSZ**2),(ARRSZ,ARRSZ)).astype(Float64)
|
70
|
-
b = reshape(arrayrange(ARRSZ**2),(ARRSZ,ARRSZ)).astype(Float64)
|
71
|
-
elif TYPE=="float_solve":
|
72
|
-
a = reshape(arrayrange(n*n)%(n+1)+1,(n,n)).astype(Float64)
|
73
|
-
b = reshape(arrayrange(n*n)+1,(n,n)).astype(Float64)
|
74
|
-
dot = matrixmultiply
|
75
|
-
solve = solve_linear_equations
|
76
|
-
|
77
|
-
def lambda_add(a=a,b=b): c = a+b; return c;
|
78
|
-
def lambda_mul(a=a,b=b): c = a*b; return c;
|
79
|
-
def lambda_matmul(a=a,b=b): c = dot(a,b); return c;
|
80
|
-
def lambda_solve(a=a,b=b): c = solve(a,b); return c;
|
81
|
-
|
82
|
-
if OP=="add":
|
83
|
-
bench_time(lambda_add)
|
84
|
-
elif OP=="mul":
|
85
|
-
bench_time(lambda_mul)
|
86
|
-
elif OP=="matmul":
|
87
|
-
bench_time(lambda_matmul)
|
88
|
-
elif OP=="solve":
|
89
|
-
bench_time(lambda_solve)
|