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,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