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,7 +1,7 @@
1
1
  /*
2
2
  narray.h
3
3
  Numerical Array Extention for Ruby
4
- (C) Copyright 1999-2003 by Masahiro TANAKA
4
+ (C) Copyright 1999-2008 by Masahiro TANAKA
5
5
 
6
6
  This program is free software.
7
7
  You can distribute/modify this program
@@ -19,8 +19,8 @@
19
19
  # include <sys/types.h>
20
20
  #endif
21
21
 
22
- #define NARRAY_VERSION "0.5.9p4"
23
- #define NARRAY_VERSION_CODE 594
22
+ #define NARRAY_VERSION "0.5.9p5"
23
+ #define NARRAY_VERSION_CODE 595
24
24
 
25
25
  /*
26
26
  Data types used in NArray :
@@ -1,7 +1,7 @@
1
1
  /*
2
2
  narray_local.h
3
3
  Numerical Array Extention for Ruby
4
- (C) Copyright 1999-2003 by Masahiro TANAKA
4
+ (C) Copyright 1999-2008 by Masahiro TANAKA
5
5
 
6
6
  This program is free software.
7
7
  You can distribute/modify this program
metadata CHANGED
@@ -3,14 +3,14 @@ rubygems_version: 0.9.4
3
3
  specification_version: 1
4
4
  name: narray
5
5
  version: !ruby/object:Gem::Version
6
- version: 0.5.9.4
7
- date: 2008-01-28 00:00:00 +09:00
6
+ version: 0.5.9.5
7
+ date: 2008-06-10 00:00:00 +09:00
8
8
  summary: N-dimensional Numerical Array class for Ruby
9
9
  require_paths:
10
10
  - .
11
11
  email: masa16.tanaka@gmail.com
12
12
  homepage: http://narray.rubyforge.org/
13
- rubyforge_project:
13
+ rubyforge_project: narray
14
14
  description:
15
15
  autorequire:
16
16
  default_executable:
@@ -51,42 +51,6 @@ files:
51
51
  - src/narray_local.h
52
52
  - src/lib/narray_ext.rb
53
53
  - src/lib/nmatrix.rb
54
- - src/nimage/README.en
55
- - src/nimage/extconf.rb
56
- - src/nimage/nimage.c
57
- - src/nimage/demo
58
- - src/nimage/demo/fits.rb
59
- - src/nimage/demo/fits_convol.rb
60
- - src/nimage/demo/fits_fftdemo.rb
61
- - src/nimage/demo/fitsdemo1.rb
62
- - src/nimage/demo/fitsdemo2.rb
63
- - src/nimage/demo/fitsdemo3.rb
64
- - src/nimage/demo/fitsmorph.rb
65
- - src/nimage/demo/life_na.rb
66
- - src/nimage/demo/mandel.rb
67
- - src/nimage/lib
68
- - src/nimage/lib/nimage.rb
69
- - src/speed/add.py
70
- - src/speed/add.rb
71
- - src/speed/add_int.py
72
- - src/speed/add_int.rb
73
- - src/speed/lu.m
74
- - src/speed/lu.rb
75
- - src/speed/mat.m
76
- - src/speed/mat.rb
77
- - src/speed/mul.py
78
- - src/speed/mul.rb
79
- - src/speed/mul2.py
80
- - src/speed/mul2.rb
81
- - src/speed/mul_comp.py
82
- - src/speed/mul_comp.rb
83
- - src/speed/mul_int.py
84
- - src/speed/mul_int.rb
85
- - src/speed/mybench.py
86
- - src/speed/mybench.rb
87
- - src/speed/solve.m
88
- - src/speed/solve.py
89
- - src/speed/solve.rb
90
54
  - src/test/statistics.rb
91
55
  - src/test/testarray.rb
92
56
  - src/test/testbit.rb
@@ -111,6 +75,13 @@ files:
111
75
  - src/test/teststr.rb
112
76
  - src/test/testtrans.rb
113
77
  - src/test/testwhere.rb
78
+ - src/bench/all.rb
79
+ - src/bench/bench.m
80
+ - src/bench/bench.py
81
+ - src/bench/bench.rb
82
+ - src/bench/dummy.m
83
+ - src/bench/dummy.py
84
+ - src/bench/dummy.rb
114
85
  test_files: []
115
86
 
116
87
  rdoc_options: []
@@ -1,38 +0,0 @@
1
-
2
- NAME
3
-
4
- NImage --- A Ruby Extension Library for displaying Images on X11
5
- by Masahiro Tanaka 2000/07/05
6
-
7
- DESCRIPTION
8
-
9
- NImage is a simple Ruby class for displaying 2-D Data as images
10
- on X11 display.
11
-
12
- REQUIREMENT
13
-
14
- Ruby (ver 1.4.4 or later)
15
- NArray (ver 0.3.1 or later)
16
-
17
- INSTALLATION
18
-
19
- ruby extconf.rb
20
- make
21
- make install
22
-
23
- USAGE
24
-
25
- require "nimage"
26
- image = NArray.float(100,100) # some 2-D array
27
- win = NImage.show image
28
- win.close
29
-
30
- ACKNOWLEDGMENT
31
-
32
- moriq-san for Ruby/X11 which is useful for prototyping
33
-
34
- PS
35
-
36
- FITS image file is not included. Sorry.
37
-
38
- END
@@ -1,97 +0,0 @@
1
- # A simple class for handling FITS images
2
- # by Masahiro TANAKA 1999/12/19
3
- # No document, sorry.
4
- #
5
- # Require: Ruby/NArray
6
- # http://koala.astro.isas.ac.jp/~masa/ruby/
7
- #
8
- # Example:
9
- # f = Fits.read('somthing.fits')
10
- # f.data # => 2-dimentional NArray data
11
-
12
- require 'narray'
13
-
14
- class Fits
15
- attr_accessor :data
16
- attr_accessor :header
17
-
18
- def initialize
19
- @data = ""
20
- @header = []
21
- end
22
-
23
- def data_to_narray(data,type,shape)
24
- NArray.to_na( data, type, *shape ).ntoh
25
- end
26
-
27
-
28
- def read(fname)
29
- f = File.open(fname, "r")
30
- @header = []
31
- nbytes = 0
32
- foo = {}
33
-
34
- while
35
- line = f.read(80)
36
- nbytes += 80;
37
-
38
- @header.push line
39
-
40
- name = line[0,8].strip!
41
- break if name=="END"
42
-
43
- rest = line[8..-1]
44
- if rest =~ /^= +('[^']*')/ #'
45
- foo[name] = $1
46
- elsif rest =~ /^= +([^\s\/]+)/
47
- foo[name] = $1
48
- end
49
- end
50
-
51
- # skip extra space
52
- nbytes %= 2880
53
- f.read(2880-nbytes) if nbytes > 0
54
-
55
- naxis = foo["NAXIS"].to_i
56
-
57
- case foo["BITPIX"]
58
- when "8"; elm_size = 1; type = NArray::BYTE
59
- when "16"; elm_size = 2; type = NArray::SINT
60
- when "32"; elm_size = 4; type = NArray::LINT
61
- when "-32"; elm_size = 4; type = NArray::SFLOAT
62
- when "-64"; elm_size = 8; type = NArray::DFLOAT
63
- end
64
-
65
- size = 1
66
- dims = []
67
- for i in 1..naxis
68
- key = "NAXIS#{i}"
69
- if foo.key? key
70
- n = foo[key].to_i
71
- size = size * n
72
- dims.push n
73
- #printf "%s=%i\n", key,n
74
- end
75
- end
76
-
77
- @data = data_to_narray( f.read(size*elm_size), type, dims )
78
- f.close
79
-
80
- if foo.key? "BSCALE"
81
- s = foo["BSCALE"].to_f
82
- @data = @data.to_f.mul!(s) if s != 1
83
- end
84
-
85
- if foo.key? "BZERO"
86
- s = foo["BZERO"].to_f
87
- @data = @data.to_f.add!(s) if s != 0
88
- end
89
-
90
- self
91
- end
92
-
93
- end
94
-
95
- def Fits.read(*a)
96
- Fits.new.read(*a)
97
- end
@@ -1,28 +0,0 @@
1
- # FITS-FFT demo
2
- require 'fits'
3
- require 'nimage'
4
-
5
- f = Fits.new
6
- f.read( $*.shift || 'dss_m51.fits' )
7
- nx,ny = f.data.shape
8
-
9
- NImage.show f.data #, 'M51'
10
-
11
- # FFT low-pass filtering
12
- z = 50.0/nx
13
- x = NArray.float(nx).indgen! * z
14
- y = NArray.float(ny).indgen! * z
15
- x[-(nx/2)..-1] = x[nx/2..1]
16
- y[-(ny/2)..-1] = y[ny/2..1]
17
- y.reshape!(1,ny)
18
- # Operation between [nx,1] and [1,ny] arrays makes [nx,ny].
19
- filt = NMath::exp(-(x**2)-(y**2))
20
- filt /= filt.sum
21
-
22
- print "Now executing FFT...\n"
23
- lowpass = FFTW::convol(f.data,filt)
24
-
25
- NImage.show lowpass #, 'M51 (FFT low-pass)'
26
-
27
- print "Hit return key..."
28
- STDIN.getc
@@ -1,27 +0,0 @@
1
- # FITS-FFT demo
2
- require 'fits'
3
- require 'nimage'
4
-
5
- f = Fits.new
6
- f.read( $*.shift || 'dss_m51.fits' )
7
- nx,ny = f.data.shape
8
-
9
- NImage.show f.data #, 'M51'
10
-
11
- # FFT low-pass filtering
12
- x = NArray.float(nx).indgen! / (nx*0.1)
13
- y = NArray.float(ny).indgen! / (nx*0.1)
14
- x[-nx/2] = x[nx/2-1..0]
15
- y[-ny/2] = y[ny/2-1..0]
16
- y.reshape!(1,ny)
17
- # Operation between [nx,1] and [1,ny] arrays makes [nx,ny].
18
- filt = 1 / (x**2 + y**2 + 1)
19
-
20
- print "Now executing FFT...\n"
21
- spec = FFTW.fftw(f.data,-1)
22
- lowpass = FFTW.fftw(spec*filt,1).real / (nx*ny)
23
-
24
- NImage.show lowpass #, 'M51 (FFT low-pass)'
25
-
26
- print "Hit return key..."
27
- STDIN.getc
@@ -1,13 +0,0 @@
1
- # FITS demo
2
- require 'fits'
3
- require 'nimage'
4
-
5
- f = Fits.new
6
- f.read( $*.shift || 'dss_m51.fits' )
7
- p f.data
8
-
9
- v = NImage.show f.data
10
-
11
- print "Hit return key..."
12
- STDIN.getc
13
- v.close
@@ -1,30 +0,0 @@
1
- # FITS demo
2
- require 'fits'
3
- require 'nimage'
4
-
5
- f = Fits.new
6
- f.read( $*.shift || 'dss_m51.fits' )
7
-
8
- NImage.show f.data #, 'M51'
9
-
10
- nx = f.data.shape[0]
11
- ny = f.data.shape[1]
12
-
13
- x = NArray.int(nx/2).indgen!*2
14
- y = NArray.int(ny/2).indgen!*2
15
- NImage.show f.data[x,y] #, 'M51 (x0.5)'
16
-
17
- x = NArray.float(nx*1.5).indgen!/1.5
18
- y = NArray.float(ny*1.5).indgen!/1.5
19
- NImage.show f.data[x,y] #, 'M51 (x1.5)'
20
-
21
- x = NArray.float(nx).indgen!
22
- y = NArray.float(ny).indgen!.newdim!(0)
23
- i = y / (ny/2) - 1
24
- i = (x-nx/2) * NMath.sqrt(i.abs) + nx/2 + y*nx
25
- d = f.data.clone.fill!(0)
26
- d[i] = f.data
27
- NImage.show d #, 'M51 (x1.5)'
28
-
29
- print "Hit return key..."
30
- STDIN.getc
@@ -1,26 +0,0 @@
1
- # FITS demo
2
- require 'fits'
3
- require 'nimage'
4
-
5
- f = Fits.new
6
- f.read( $*.shift || 'dss_m51.fits' )
7
- image = f.data
8
-
9
- NImage.show image
10
-
11
- nx = image.shape[0]
12
- ny = image.shape[1]
13
-
14
- # re-sampling
15
- x = NArray.int(nx/2).indgen!*2
16
- y = NArray.int(ny/2).indgen!*2
17
- NImage.show image[x,y]
18
- # 'M51 (x0.5, resample)'
19
-
20
- # averaging
21
- NImage.show image[0...nx/2*2,0...ny/2*2].to_f.
22
- reshape!(2,nx/2,2,ny/2).sum(0,2).div!(4).reshape!
23
- # 'M51 (x0.5, average)'
24
-
25
- print "Hit return key..."
26
- STDIN.getc
@@ -1,39 +0,0 @@
1
- # FITS demo
2
- require 'fits'
3
- require 'nimage'
4
-
5
- def triang x, px
6
- y = NArray.float(*x.shape)
7
- i1,i2 = (x>px).where2
8
- y[i1] = NMath.sin((1-x[i1]) * (Math::PI/2/(1-px)) )
9
- y[i2] = NMath.sin((1+x[i2]) * (Math::PI/2/(1+px)) )
10
- p y.min
11
- y
12
- end
13
-
14
- # Read-in Image
15
- f = Fits.new
16
- f.read( $*.shift || 'dss_m51.fits' )
17
-
18
- NImage.show f.data
19
-
20
- nx,ny = f.data.shape
21
-
22
- # Morphing parameters
23
- px,py = [ 0.3, -0.6]
24
- dx,dy = [-0.3, 0.7]
25
-
26
- indx = NArray.float(nx,1).indgen!
27
- indy = NArray.float(1,ny).indgen!
28
-
29
- ix = triang indx/(nx-1)*2-1, px
30
- iy = triang indy/(ny-1)*2-1, py
31
-
32
- ii = ix * iy
33
- ix = (indx + ii*(dx*(nx-1)/2)).round
34
- iy = (indy + ii*(dy*(ny-1)/2)).round
35
-
36
- NImage.show f.data[ix+iy*nx]
37
-
38
- print "Hit return key..."
39
- STDIN.getc
@@ -1,57 +0,0 @@
1
- # NArray demo : life game
2
- # by Masahiro Tanaka <masa@ir.isas.ac.jp> 2001-01-18
3
-
4
- require 'narray'
5
- require 'nimage'
6
-
7
- class NArray
8
- def magnify(n)
9
- src = shape.collect{|x| [1,x]}.flatten
10
- dst = shape.collect{|x| [n,x]}.flatten
11
- a = NArray.new(typecode,*dst)
12
- a[*[true]*(rank*2)] = self.reshape(*src)
13
- a.reshape!(*NArray[*shape]*n)
14
- end
15
- end
16
-
17
- class LifeGame
18
- def initialize(nx,ny)
19
- @d = NArray.byte(nx,ny)
20
- w = 50
21
- @d[nx/2-w,ny/2-w] = NArray.byte(w*2+1,w*2+1).random!(2)
22
- @step = 0
23
- @win = NImage.show @d #.magnify(2)
24
- end
25
-
26
- def life_step
27
- sum =
28
- @d[0..-3,0..-3] + @d[0..-3,1..-2] + @d[0..-3,2..-1] +
29
- @d[1..-2,0..-3] + @d[1..-2,2..-1] +
30
- @d[2..-1,0..-3] + @d[2..-1,1..-2] + @d[2..-1,2..-1]
31
- @d[1,1] =
32
- (sum.eq 3) | ((sum.eq 2) & @d[1..-2,1..-2])
33
- @step += 1
34
- @win.update( (@d*(NImage.ncolors-1)).to_s )
35
- end
36
-
37
- def close
38
- @win.close
39
- end
40
-
41
- attr_reader :step
42
- end
43
-
44
- srand(1)
45
- a = LifeGame.new(200,200)
46
-
47
- print "Hit return key to start..."
48
- STDIN.getc
49
-
50
- begin
51
- loop{ a.life_step }
52
- ensure
53
- printf "step=%i\n",a.step
54
- print "Hit return key..."
55
- STDIN.getc
56
- a.close
57
- end