narray 0.5.9.4 → 0.5.9.5

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.
Files changed (59) hide show
  1. data/src/ChangeLog +29 -0
  2. data/src/MANIFEST +7 -36
  3. data/src/README.en +1 -5
  4. data/src/README.ja +1 -2
  5. data/src/SPEC.en +15 -8
  6. data/src/SPEC.ja +5 -2
  7. data/src/bench/all.rb +88 -0
  8. data/src/bench/bench.m +61 -0
  9. data/src/bench/bench.py +89 -0
  10. data/src/bench/bench.rb +59 -0
  11. data/src/bench/dummy.m +0 -0
  12. data/src/bench/dummy.py +13 -0
  13. data/src/bench/dummy.rb +0 -0
  14. data/src/lib/narray_ext.rb +36 -2
  15. data/src/mkmath.rb +4 -4
  16. data/src/mkop.rb +16 -16
  17. data/src/na_array.c +32 -32
  18. data/src/na_func.c +50 -50
  19. data/src/na_index.c +26 -32
  20. data/src/na_linalg.c +23 -26
  21. data/src/na_random.c +15 -18
  22. data/src/narray.c +22 -32
  23. data/src/narray.h +3 -3
  24. data/src/narray_local.h +1 -1
  25. metadata +10 -39
  26. data/src/nimage/README.en +0 -38
  27. data/src/nimage/demo/fits.rb +0 -97
  28. data/src/nimage/demo/fits_convol.rb +0 -28
  29. data/src/nimage/demo/fits_fftdemo.rb +0 -27
  30. data/src/nimage/demo/fitsdemo1.rb +0 -13
  31. data/src/nimage/demo/fitsdemo2.rb +0 -30
  32. data/src/nimage/demo/fitsdemo3.rb +0 -26
  33. data/src/nimage/demo/fitsmorph.rb +0 -39
  34. data/src/nimage/demo/life_na.rb +0 -57
  35. data/src/nimage/demo/mandel.rb +0 -41
  36. data/src/nimage/extconf.rb +0 -12
  37. data/src/nimage/lib/nimage.rb +0 -51
  38. data/src/nimage/nimage.c +0 -328
  39. data/src/speed/add.py +0 -12
  40. data/src/speed/add.rb +0 -8
  41. data/src/speed/add_int.py +0 -12
  42. data/src/speed/add_int.rb +0 -9
  43. data/src/speed/lu.m +0 -14
  44. data/src/speed/lu.rb +0 -22
  45. data/src/speed/mat.m +0 -23
  46. data/src/speed/mat.rb +0 -28
  47. data/src/speed/mul.py +0 -12
  48. data/src/speed/mul.rb +0 -9
  49. data/src/speed/mul2.py +0 -15
  50. data/src/speed/mul2.rb +0 -13
  51. data/src/speed/mul_comp.py +0 -12
  52. data/src/speed/mul_comp.rb +0 -9
  53. data/src/speed/mul_int.py +0 -12
  54. data/src/speed/mul_int.rb +0 -9
  55. data/src/speed/mybench.py +0 -15
  56. data/src/speed/mybench.rb +0 -31
  57. data/src/speed/solve.m +0 -18
  58. data/src/speed/solve.py +0 -16
  59. data/src/speed/solve.rb +0 -21
@@ -1,3 +1,32 @@
1
+ 2008-06-10 Masahiro TANAKA <masa16.tanaka at gmail.com>
2
+
3
+ * bench/: new sophisticated benchmark script.
4
+
5
+ * ver 0.5.9p5
6
+
7
+ 2008-05-27 Jose M <braket at hotmai...>
8
+
9
+ * na_array.c, na_index.c, na_random.c, na_func.c:
10
+ * na_linalg.c, narray.c, mkmath.rb, mkop.rb:
11
+ change var++ to ++var: make NArray perform faster.
12
+
13
+ 2008-05-24 Hiroki Motoyoshi <himotoyoshi at yahoo.co...>
14
+
15
+ * mkmath.rb:
16
+ fix bug in powOO.
17
+
18
+ 2008-04-02 David MacMahon <davidm at astro.berkeley...>
19
+
20
+ * na_func.c:
21
+ new methods: conj!, conjugate!
22
+
23
+ 2008-01-11 David MacMahon <davidm at astro.berkeley...>
24
+
25
+ * lib/narray_ext.rb (stddev):
26
+ fix for complex NArrays.
27
+ * lib/narray_ext.rb (rms, rmsdev):
28
+ new methods.
29
+
1
30
  2008-01-28 Masahiro TANAKA <masa16.tanaka at gmail.com>
2
31
 
3
32
  * na_array.c (na_range_to_sequence, na_do_mdai):
@@ -20,42 +20,6 @@ narray.h
20
20
  narray_local.h
21
21
  lib/narray_ext.rb
22
22
  lib/nmatrix.rb
23
- nimage/README.en
24
- nimage/extconf.rb
25
- nimage/nimage.c
26
- nimage/demo
27
- nimage/demo/fits.rb
28
- nimage/demo/fits_convol.rb
29
- nimage/demo/fits_fftdemo.rb
30
- nimage/demo/fitsdemo1.rb
31
- nimage/demo/fitsdemo2.rb
32
- nimage/demo/fitsdemo3.rb
33
- nimage/demo/fitsmorph.rb
34
- nimage/demo/life_na.rb
35
- nimage/demo/mandel.rb
36
- nimage/lib
37
- nimage/lib/nimage.rb
38
- speed/add.py
39
- speed/add.rb
40
- speed/add_int.py
41
- speed/add_int.rb
42
- speed/lu.m
43
- speed/lu.rb
44
- speed/mat.m
45
- speed/mat.rb
46
- speed/mul.py
47
- speed/mul.rb
48
- speed/mul2.py
49
- speed/mul2.rb
50
- speed/mul_comp.py
51
- speed/mul_comp.rb
52
- speed/mul_int.py
53
- speed/mul_int.rb
54
- speed/mybench.py
55
- speed/mybench.rb
56
- speed/solve.m
57
- speed/solve.py
58
- speed/solve.rb
59
23
  test/statistics.rb
60
24
  test/testarray.rb
61
25
  test/testbit.rb
@@ -80,3 +44,10 @@ test/testsort.rb
80
44
  test/teststr.rb
81
45
  test/testtrans.rb
82
46
  test/testwhere.rb
47
+ bench/all.rb
48
+ bench/bench.m
49
+ bench/bench.py
50
+ bench/bench.rb
51
+ bench/dummy.m
52
+ bench/dummy.py
53
+ bench/dummy.rb
@@ -9,7 +9,6 @@
9
9
  using assignment with number, range, array index.
10
10
  + Operator: +,-,*,/,%,**, etc.
11
11
  + FFTW version 2 or 3 is separately supported.
12
- http://www.ir.isas.ac.jp/~masa/ruby/dist/ruby-fftw3-0.1.0.tar.gz
13
12
  + NImage: Image viewer class.
14
13
  + Ruby/PGPLOT: Graphics library interface (separately distributed)
15
14
  X-Y Graph, Histogram, Contour map, Image map, etc.
@@ -27,9 +26,6 @@
27
26
 
28
27
  * Installation
29
28
 
30
- + If you want to use FFTW, install it.
31
- http://www.fftw.org/ or http://www.netlib.org/
32
-
33
29
  + Compile & Install NArray
34
30
 
35
31
  ruby extconf.rb
@@ -51,4 +47,4 @@
51
47
 
52
48
  * Author
53
49
 
54
- Masahiro TANAKA <masa@ir.isas.ac.jp>
50
+ Masahiro TANAKA <masa16.tanaka@gmail.com>
@@ -12,7 +12,6 @@
12
12
  $B$?$@$7!"%5%$%:$,(B1$B$N<!85$O!"B>J}$NG[Ns$N%5%$%:$K9g$o$;$F(B
13
13
  $B!V7+$jJV$7!WF1$8MWAG$,E,MQ$5$l$k!#(B
14
14
  + FFTW ($B9bB.%U!<%j%(JQ49(B) version 3 $B$O<!$N%b%8%e!<%k$G%5%]!<%H!#(B
15
- http://www.ir.isas.ac.jp/~masa/ruby/dist/ruby-fftw3-0.1.0.tar.gz
16
15
  + NImage (X11$B%$%a!<%8I=<((B) $B%/%i%9ImB0!#(B(nimage/ $B%G%#%l%/%H%j;2>H(B)
17
16
  + Ruby/PGPLOT ($B%0%i%U%#%C%/%9%i%$%V%i%j!"JLW}(B) $B$K$F(B
18
17
  XY$B%0%i%U!"%R%9%H%0%i%`!"Ey9b@~!"%$%a!<%8I=<(2DG=!#(B
@@ -51,7 +50,7 @@
51
50
  * $BCx<T(B
52
51
 
53
52
  $BEDCf>;9((B
54
- $B$40U8+!$%P%0%l%]!<%H$=$NB>$O(B masa@ir.isas.ac.jp $B$^$G$*4j$$$7$^$9!#(B
53
+ $B$40U8+!$%P%0%l%]!<%H$=$NB>$O(B masa16.tanaka@gmail.com $B$^$G$*4j$$$7$^$9!#(B
55
54
 
56
55
  * $B<U<-(B
57
56
 
@@ -1,5 +1,5 @@
1
1
 
2
- Ruby/NArray ver 0.5.9 (2006-08-09) by Masahiro TANAKA
2
+ Ruby/NArray ver 0.5.9p5 (2008-05-28) by Masahiro TANAKA
3
3
 
4
4
 
5
5
  Class method:
@@ -157,16 +157,22 @@ Comparison
157
157
  e.g.: idx_t,idx_f = (a>12).where2
158
158
 
159
159
  Statistics
160
- self.sum(dim,..) Summation of elements in specified dimensions.
161
- self.mean(dim,..) Mean of elements in specified dimensions.
162
- self.stddev(dim,..) Standard deviation of elements in the dimensions.
163
- self.min(dim,..) Minimum in the specified dimensions.
164
- self.max(dim,..) Maximum in the specified dimensions.
165
- (All dimensions if omitted, Range can be used)
160
+ self.sum(dim,..) Summation
161
+ self.mean(dim,..) Mean
162
+ self.stddev(dim,..) Standard deviation
163
+ self.rms(dim,..) Root mean square
164
+ self.rmsdev(dim,..) Root mean square deviation
165
+ self.min(dim,..) Minimum
166
+ self.max(dim,..) Maximum
167
+ note: * If dimensions are specified, statistics are performed
168
+ on those dimensions and the rest dimensions are kept.
169
+ * Range can be used.
170
+ * If dimension is not specified, statistics are performed
171
+ for all the elements.
166
172
  self.median(dim) Median in 0..dim (All dimensions if omitted)
167
173
 
168
174
  Sort
169
- self.sort(dim) Sort in the 0..dim (All dimensions if omitted)
175
+ self.sort(dim) Sort in 0..dim (All dimensions if omitted)
170
176
  self.sort_index(dim) Return index of Sort result.
171
177
  self[self.sort_index] equals to self.sort.
172
178
 
@@ -222,6 +228,7 @@ Complex compound number
222
228
  self.real
223
229
  self.imag
224
230
  self.conj
231
+ self.conj!
225
232
  self.angle atan2(self.imag, self.real)
226
233
  self.imag= other set imaginary part
227
234
  self.im multiply by imaginary unit
@@ -1,5 +1,5 @@
1
1
 
2
- Ruby/NArray ver 0.5.9 (2006-08-09) by Masahiro TANAKA
2
+ Ruby/NArray ver 0.5.9p5 (2008-05-28) by Masahiro TANAKA
3
3
 
4
4
 
5
5
  $B%/%i%9%a%=%C%I(B:
@@ -149,7 +149,9 @@
149
149
  $BE}7W(B
150
150
  self.sum(dim,..) $B;XDj$7$?<!85$NOB!#(B
151
151
  self.mean(dim,..) $B;XDj$7$?<!85$NJ?6Q!#(B
152
- self.stddev(dim,..) $B;XDj$7$?<!85$NI8=`JP:9!#(B
152
+ self.stddev(dim,..) $B;XDj$7$?<!85$NI8=`JP:9(B($BI8K\I8=`JP:9(B)$B!#(B
153
+ self.rms(dim,..) $B;XDj$7$?<!85$N(Broot mean square$B!#(B
154
+ self.rmsdev(dim,..) $B;XDj$7$?<!85$N(Broot mean square deviation$B!#(B
153
155
  self.min(dim,..) $B;XDj$7$?<!85$N:G>.!#(B
154
156
  self.max(dim,..) $B;XDj$7$?<!85$N:GBg!#(B
155
157
  ($B>JN,;~$OA4$F$N<!85!#(BRange$B;XDj2D!#(B)
@@ -208,6 +210,7 @@ Boolean / $B%^%9%/4X78(B
208
210
  self.real
209
211
  self.imag
210
212
  self.conj
213
+ self.conj!
211
214
  self.angle atan2(self.imag, self.real)
212
215
  self.imag= other $B5u?tItJ,$K(Bother$B$r%;%C%H!#(B
213
216
  self.im $B5u?tG\!#(B
@@ -0,0 +1,88 @@
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
@@ -0,0 +1,61 @@
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);
@@ -0,0 +1,89 @@
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)
@@ -0,0 +1,59 @@
1
+ require 'narray'
2
+ T = (RUBY_VERSION<"1.8.0") ? Time : Process
3
+
4
+ TYPE = ARGV[0]
5
+ OP = ARGV[1]
6
+ ARRSZ = Integer(ARGV[2])
7
+ REPEAT = Integer(ARGV[3])
8
+
9
+ def bench_array(type=Float)
10
+ [ NArray.new(type,ARRSZ).indgen!,
11
+ NArray.new(type,ARRSZ).indgen! ]
12
+ end
13
+
14
+ def bench_time(n=REPEAT)
15
+ t1 = T.times.utime
16
+ for i in 1..n
17
+ yield
18
+ end
19
+ t = T.times.utime - t1
20
+ printf "Ruby NArray type=%s size=%d op=%s repeat=%d Time: %.2f sec\n",
21
+ TYPE,ARRSZ,OP,REPEAT,t
22
+ end
23
+
24
+ n = ARRSZ
25
+
26
+ case TYPE
27
+ when "float"
28
+ a,b = bench_array(Float)
29
+ when "int"
30
+ a,b = bench_array(Integer)
31
+ when "complex"
32
+ a,b = bench_array(Complex)
33
+ when "float_cross"
34
+ a = NArray.float(n,1).indgen!
35
+ b = NArray.float(1,n).indgen!
36
+ when "float_matrix"
37
+ a = NArray.float(n,n).indgen!
38
+ a = a % (n+1) + 1
39
+ a = NMatrix.ref(a)#.transpose
40
+ b = NArray.float(n,n).indgen!
41
+ b = b % (n-1) + 1
42
+ b = NMatrix.ref(b)#.transpose
43
+ when "float_solve"
44
+ a = NMatrix.float(n,n).indgen!(1).transpose
45
+ b = NArray.float(n,n).indgen!
46
+ b = b % (n+1) + 1
47
+ b = NMatrix.ref(b).transpose
48
+ end
49
+
50
+ c = 0
51
+
52
+ case OP
53
+ when "add"
54
+ bench_time{ c = a+b }
55
+ when "mul"
56
+ bench_time{ c = a*b }
57
+ when "solve"
58
+ bench_time{ c = a/b }
59
+ end