narray 0.5.9.4 → 0.5.9.5

Sign up to get free protection for your applications and to get access to all the features.
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