carray 1.3.7 → 1.4.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.
Files changed (78) hide show
  1. checksums.yaml +4 -4
  2. data/README.md +0 -7
  3. data/Rakefile +31 -0
  4. data/carray.gemspec +9 -14
  5. data/carray.h +4 -0
  6. data/carray_access.c +50 -8
  7. data/carray_conversion.c +3 -3
  8. data/carray_generate.c +67 -1
  9. data/carray_math.rb +22 -22
  10. data/carray_operator.c +23 -0
  11. data/devel/im2col.rb +17 -0
  12. data/lib/carray.rb +32 -1
  13. data/lib/carray/autoload/autoload_base.rb +0 -4
  14. data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
  15. data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
  16. data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
  17. data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
  18. data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
  19. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
  20. data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
  21. data/lib/carray/autoload/autoload_gem_numo_narray.rb +14 -0
  22. data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
  23. data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
  24. data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
  25. data/lib/carray/base/autoload.rb +47 -5
  26. data/lib/carray/base/basic.rb +58 -2
  27. data/lib/carray/base/math.rb +1 -1
  28. data/lib/carray/base/string.rb +242 -0
  29. data/mkmath.rb +12 -2
  30. data/version.h +5 -5
  31. metadata +29 -109
  32. data/Gemfile +0 -8
  33. data/Gemfile.lock +0 -33
  34. data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
  35. data/ext/fortio/extconf.rb +0 -3
  36. data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
  37. data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
  38. data/ext/fortio/lib/fortio.rb +0 -3
  39. data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
  40. data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
  41. data/ext/fortio/lib/fortio/fortran_format.y +0 -215
  42. data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
  43. data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
  44. data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
  45. data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
  46. data/ext/fortio/ruby_fortio.c +0 -182
  47. data/ext/fortio/test/test_H.rb +0 -5
  48. data/ext/fortio/test/test_T.rb +0 -7
  49. data/ext/fortio/test/test_fortran_format.rb +0 -86
  50. data/ext/fortio/test/test_namelist.rb +0 -25
  51. data/ext/fortio/test/test_namelist_write.rb +0 -10
  52. data/ext/fortio/test/test_sequential.rb +0 -13
  53. data/ext/fortio/test/test_sequential2.rb +0 -13
  54. data/ext/fortio/work/test.rb +0 -10
  55. data/ext/fortio/work/test_e.rb +0 -19
  56. data/ext/fortio/work/test_ep.rb +0 -10
  57. data/ext/fortio/work/test_parse.rb +0 -12
  58. data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
  59. data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
  60. data/ext/narray/README +0 -22
  61. data/ext/narray/ca_wrap_narray.c +0 -500
  62. data/ext/narray/carray_narray.c +0 -21
  63. data/ext/narray/extconf.rb +0 -57
  64. data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
  65. data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
  66. data/ext/narray/lib/math/narray.rb +0 -17
  67. data/ext/narray/lib/math/narray_miss.rb +0 -45
  68. data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
  69. data/lib/carray/autoload/autoload_io_csv.rb +0 -14
  70. data/lib/carray/autoload/autoload_io_numo.rb +0 -9
  71. data/lib/carray/autoload/autoload_io_pg.rb +0 -6
  72. data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
  73. data/lib/carray/graphics/gnuplot.rb +0 -2141
  74. data/lib/carray/graphics/zimg.rb +0 -296
  75. data/lib/carray/io/csv.rb +0 -572
  76. data/lib/carray/io/numo.rb +0 -52
  77. data/lib/carray/io/pg.rb +0 -101
  78. data/lib/carray/io/sqlite3.rb +0 -215
@@ -1,182 +0,0 @@
1
- /* ---------------------------------------------------------------------------
2
-
3
- carray/carray_fortio.c
4
-
5
- This file is part of Ruby/CArray extension library.
6
- You can redistribute it and/or modify it under the terms of
7
- the Ruby Licence.
8
-
9
- Copyright (C) 2005 Hiroki Motoyoshi
10
-
11
- ---------------------------------------------------------------------------- */
12
-
13
- #include "ruby.h"
14
- #include <math.h>
15
-
16
- static int
17
- read_F (char *buf, int buflen, int scale, int length, int prec, double *a)
18
- {
19
- char fmt[128];
20
- int status;
21
- if ( ! strchr(buf, '.') ) {
22
- int tmp = 0;
23
- snprintf(fmt, 128, "%%%i", length);
24
- status = sscanf(buf, fmt, &tmp);
25
- *a = tmp * pow(10, -prec);
26
- }
27
- else {
28
- snprintf(fmt, 128, "%%%i.%if", length, prec);
29
- status = sscanf(buf, fmt, a);
30
- }
31
- return status;
32
- }
33
-
34
- static VALUE
35
- rb_ff_read_F (VALUE mod, VALUE vbuffer, VALUE vscale, VALUE vlength, VALUE vprec)
36
- {
37
- double val;
38
- int status;
39
- status = read_F(StringValuePtr(vbuffer), (int) RSTRING_LEN(vbuffer),
40
- NUM2INT(vscale), NUM2INT(vlength), NUM2INT(vprec), &val);
41
- if ( ! status ) {
42
- rb_raise(rb_eRuntimeError, "invalid string for F descriptor");
43
- }
44
- return rb_float_new(val);
45
- }
46
-
47
- static int
48
- write_F (char *buf, int buflen, int plus, int scale, int length, int prec, double a)
49
- {
50
- char fmt[128];
51
- if ( plus ) {
52
- snprintf(fmt, 128, "%%+%i.%if", length, prec);
53
- }
54
- else {
55
- snprintf(fmt, 128, "%%%i.%if", length, prec);
56
- }
57
- if ( scale == 0 ) {
58
- return snprintf(buf, buflen, fmt, a);
59
- }
60
- else {
61
- return snprintf(buf, buflen, fmt, a * pow(10, scale));
62
- }
63
- }
64
-
65
- static VALUE
66
- rb_ff_write_F (VALUE mod, VALUE vsign, VALUE vscale, VALUE vlength, VALUE vprec, VALUE va)
67
- {
68
- int length = NUM2INT(vlength);
69
- char buf[256];
70
- if ( length > 255 ) {
71
- rb_raise(rb_eRuntimeError, "too long decimal format for FortranFormat");
72
- }
73
- write_F(buf, 255,
74
- RTEST(vsign), NUM2INT(vscale), length, NUM2INT(vprec), NUM2DBL(va));
75
- return rb_str_new2(buf);
76
- }
77
-
78
-
79
- static int
80
- write_E (char *buf, int buflen, int plus, int scale, int length, int prec, int iexp, double a)
81
- {
82
- char fmt[128];
83
- int prec0;
84
- int e, sign = 1;
85
- prec0 = ( 1 - scale < 0 ) ? prec - scale + 1 : prec;
86
- sign = 1;
87
- if ( a < 0 ) {
88
- e = floor(log10(-a))+1;
89
- sign = -1;
90
- }
91
- if ( a > 0 ) {
92
- e = floor(log10(a))+1;
93
- }
94
- else {
95
- e = 0;
96
- }
97
- if ( prec0 == 0 ) {
98
- if ( plus ) {
99
- snprintf(fmt, 128, "%%+%i.0f.E%%+0%ii", length-iexp-3, iexp+1);
100
- }
101
- else {
102
- snprintf(fmt, 128, "%%%i.0f.E%%+0%ii", length-iexp-3, iexp+1);
103
- }
104
- }
105
- else {
106
- if ( plus ) {
107
- snprintf(fmt, 128, "%%+%i.%ifE%%+0%ii", length-iexp-2, prec0, iexp+1);
108
- }
109
- else {
110
- snprintf(fmt, 128, "%%%i.%ifE%%+0%ii", length-iexp-2, prec0, iexp+1);
111
- }
112
- }
113
- return snprintf(buf, buflen, fmt, sign * a * pow(10,scale-e), e-scale);
114
- }
115
-
116
- static VALUE
117
- rb_ff_write_E (VALUE mod, VALUE vsign, VALUE vscale, VALUE vlength, VALUE vprec, VALUE vexp, VALUE va)
118
- {
119
- int length = NUM2INT(vlength);
120
- int iexp = NIL_P(vexp) ? 2 : NUM2INT(vexp);
121
- char buf[256];
122
- if ( length > 255 ) {
123
- rb_raise(rb_eRuntimeError, "too long decimal format for FortranFormat");
124
- }
125
- write_E(buf, 255,
126
- RTEST(vsign), NUM2INT(vscale), length, NUM2INT(vprec), iexp, NUM2DBL(va));
127
- return rb_str_new2(buf);
128
- }
129
-
130
- static int
131
- write_GF (char *buf, int buflen, int plus, int length, int prec, int iexp, double a)
132
- {
133
- int e;
134
- if ( a < 0 ) {
135
- e = floor(log10(-a))+1;
136
- }
137
- if ( a > 0 ) {
138
- e = floor(log10(a))+1;
139
- }
140
- else {
141
- e = 0;
142
- }
143
- write_E(buf, 255, plus, e, length, prec-1, iexp, a);
144
- memset(buf+(length-iexp-2), ' ', iexp+2);
145
- return 1;
146
- }
147
-
148
- static VALUE
149
- rb_ff_write_G (VALUE mod, VALUE vsign, VALUE vscale, VALUE vlength, VALUE vprec, VALUE vexp, VALUE va)
150
- {
151
- int length = NUM2INT(vlength);
152
- int iprec = NUM2INT(vprec);
153
- int iexp = NIL_P(vexp) ? 2 : NUM2INT(vexp);
154
- double val = NUM2DBL(va);
155
- char buf[256];
156
- if ( length > 255 ) {
157
- rb_raise(rb_eRuntimeError, "too long decimal format for FortranFormat");
158
- }
159
- if ( ( fabs(val) <= 0.1 ) ||
160
- ( fabs(val) >= pow(10, iprec) ) ) {
161
- write_E(buf, 255,
162
- RTEST(vsign), NUM2INT(vscale), length, iprec, iexp, val);
163
- }
164
- else {
165
- write_GF(buf, 255, RTEST(vsign), length, iprec, iexp, val);
166
- }
167
- return rb_str_new2(buf);
168
- }
169
-
170
- void
171
- Init_fortio_ext ()
172
- {
173
- VALUE rb_cFF = rb_define_class("FortranFormat", rb_cObject);
174
- rb_define_singleton_method(rb_cFF, "read_F", rb_ff_read_F, 4);
175
- rb_define_singleton_method(rb_cFF, "write_F", rb_ff_write_F, 5);
176
- rb_define_singleton_method(rb_cFF, "write_E", rb_ff_write_E, 6);
177
- rb_define_singleton_method(rb_cFF, "write_G", rb_ff_write_G, 6);
178
- }
179
-
180
-
181
-
182
-
@@ -1,5 +0,0 @@
1
- require "fortio"
2
-
3
- p FortranFormat.new("((5(5Hhello)$))")
4
-
5
- puts fortran_format("(2(5(5Hhello))$)")
@@ -1,7 +0,0 @@
1
- require "fortio"
2
-
3
- fortran_format_write(STDOUT, "(TR12,A1)", "a")
4
- fortran_format_write(STDOUT, "(TR12,A1,TL5,A1,TL3,A1)", "a", "b", "c")
5
- fortran_format_write(STDOUT, "(TR12,A1,T5,A1,T3,A1)", "a", "b", "c")
6
-
7
- p FortranFormat.new("(A12)")
@@ -1,86 +0,0 @@
1
- require 'fortio'
2
-
3
- include Math
4
-
5
- #F77 = "ifort"
6
- F77 = "gfortran"
7
- #F77 = "g95"
8
- #F77 = "g77"
9
-
10
- def f77_compile_and_run (source)
11
- output = nil
12
- begin
13
- open("test.f", "w") { |io|
14
- io.write(source)
15
- }
16
- system("#{F77} test.f")
17
- output = `./a.out`.chomp
18
- ensure
19
- File.unlink("test.f")
20
- File.unlink("a.out")
21
- end
22
- end
23
-
24
- [
25
- ["F12.3", 10.0, nil],
26
- ["2F12.3", [10.0,11.0], nil],
27
- ["E12.2", 10.0, nil],
28
- ["2E12.2", [10.0,11.0], nil],
29
- ["2PE12.2", 10.0, nil],
30
- ["2P2E12.2", [10.0,11.0], nil],
31
- ["2G12.2", [10.0,11.0], nil],
32
- ["2PG12.2", 10.0, nil],
33
- ["2PG12.2E3",10.0, nil],
34
- ["2PG12.2", 1234567890.0, nil],
35
- ["2PG12.2E3",1234567890.0, nil],
36
- # ---
37
- ["F15.8", PI, "#{PI}D0"],
38
- ["E15.8", PI, "#{PI}D0"],
39
- ["2PE15.8", PI, "#{PI}D0"],
40
- # ---
41
- ["F10.8", PI, "#{PI}D0"],
42
- ["E10.8", PI, "#{PI}D0"],
43
- ["2PE10.8", PI, "#{PI}D0"],
44
- # ---
45
- ["I4.3", 123456, nil],
46
- ["I6.5", 123, nil],
47
- ["I6.5", 123, nil],
48
- ["I7.6", 123456, nil],
49
- ["I6", 123456, nil],
50
- # ---
51
- ["SPI6", 123456, nil],
52
- ["SPI7", 123456, nil],
53
- ["SPF12.4", 123456.0, nil],
54
- ["SPE12.4E3", 123456.0, nil],
55
- ["SPG12.4E3", 123456.0, nil],
56
- ["SPG12.4E3", 123.0, nil],
57
- ["TR2SPSG12.4E3", 123.0, nil],
58
- # ---
59
- ["L1", true, ".TRUE."],
60
- ["L1", false, ".FALSE."],
61
- ["L2", true, ".TRUE."],
62
- ["L2", false, ".FALSE."],
63
- ["L4", true, ".TRUE."],
64
- ["L4", false, ".FALSE."],
65
- # ---
66
- ["A1", "a", "'a'"],
67
- ["A2", "ab", "'ab'"],
68
- ["5Hhello", nil, nil],
69
- # ---
70
- ["/", "\n", ""],
71
- ["2/", "\n\n", ""],
72
- ].each do |fmt, rval, fval|
73
- fort_out = f77_compile_and_run %{
74
- write(6, '(#{fmt})') #{[fval||rval||[]].flatten.join(',')}
75
- end
76
- }
77
- ruby_out = fortran_format(fmt+"$", *rval)
78
- puts "-------------------------------------------------------------"
79
- printf("format : %s\n", fmt)
80
- printf("fortran input : %s\n", [fval||rval].flatten.join(','))
81
- printf("ruby input : %s\n", [rval].flatten.join(","))
82
- printf("fortran output : %s\n", fort_out.inspect)
83
- printf("ruby output : %s\n", ruby_out.inspect)
84
- printf("comparison : %s\n", fort_out == ruby_out)
85
- end
86
-
@@ -1,25 +0,0 @@
1
- require "fortio"
2
- require "pp"
3
-
4
- text =<<END
5
- aaaa bbbb cccc
6
- dddd eeee ffff
7
- &name
8
- c=30.d0,
9
- a=10.d0,
10
- b=20.d0,
11
- d(1:3) = 1,2,3
12
- &end
13
- &foo
14
- c=10.d+32,
15
- a=50.d0,
16
- b=90.d0,
17
- d(1:5) = 3*4,,3
18
- e="hello""world!"
19
- &end
20
- END
21
-
22
- pp nml = fortran_namelist_read(text, "name", {:d=>CArray.int(3)})
23
- pp nml = fortran_namelist_read(text, "foo", {:d=>CArray.int(5)})
24
-
25
- puts fortran_namelist("bar", nml)
@@ -1,10 +0,0 @@
1
- require "fortio"
2
-
3
- a = {
4
- :array => [1,2,3],
5
- :x => 1,
6
- :y => 2.2
7
- }
8
-
9
- fortran_namelist_write(STDOUT, "a", a)
10
- fortran_namelist_write(STDOUT, "a", a)
@@ -1,13 +0,0 @@
1
- require "fortio"
2
-
3
- fs = FortranSequential.open("test.dat", "w", :endian=>"big")
4
- rec = fs.record
5
- rec.write("d4l", [1.2, 2008, 6, 21, 9])
6
- fs.close
7
-
8
- fs = FortranSequential.open("test.dat", "r", :endian=>"big")
9
- rec = fs.record
10
- p rec.read("d4l")
11
- fs.close
12
-
13
- File.unlink("test.dat")
@@ -1,13 +0,0 @@
1
- require "fortio"
2
-
3
- a = CArray.float(3).seq!
4
-
5
- fortran_sequential_open("test.dat", "w") { |io|
6
- io.write(a)
7
- }
8
-
9
- fortran_sequential_open("test.dat") { |io|
10
- p io.read.unpack("e3")
11
- }
12
-
13
- File.unlink("test.dat")
@@ -1,10 +0,0 @@
1
- require "carray"
2
-
3
- text =<<END
4
- 1 2 3 4
5
- 5 6 7 8
6
- END
7
-
8
- ca = CArray.from_fortran_format("2I3,2F3.0/2F3.0,2I3", text)
9
-
10
- ca.to_fortran_format("2I3,1P,2E10.2E3", STDOUT)
@@ -1,19 +0,0 @@
1
- require "fortio"
2
-
3
- p f = FortranFormat("4(2P,3E6.2E4,2I2.1)$")
4
- p f.count_args
5
- p fortran_format("2P,E10.2E4,$", 0.000012345)
6
- p f = FortranFormat("2(E10.2E4,',')")
7
- p fortran_format("2(E10.2E4,',')", 0.000012345, 2.0)
8
- p f = FortranFormat('2(-2PG15.5 4X2(I2)/)')
9
- puts fortran_format(f, 3.1415926,2,4, 2.71828,3,5)
10
-
11
- p f = FortranFormat('3P,4(G15.5/)')
12
- p f.count_args
13
- puts fortran_format(f, 0.1, 0.11, 10**5-1, 10**5)
14
-
15
- p f = FortranFormat('A10,"""\'|\'"""')
16
- p f.count_args
17
- puts fortran_format(f, "hello")
18
-
19
- puts fortran_format_read("12345", "F5.2")
@@ -1,10 +0,0 @@
1
- require "fortio"
2
-
3
- fmt200 = FortranFormat.new("(3pe13.6,-2p2e13.6)")
4
-
5
- p fortran_format_write("", fmt200, *[0.000123456]*3)
6
-
7
- p text = fortran_format_write("", "3pf10.5", 3)
8
- p fortran_format_read(text, "3pf10.5")
9
-
10
- p fortran_format_write("", "g13.5", 893)
@@ -1,12 +0,0 @@
1
- require "carray"
2
- require "fortio"
3
-
4
- head = " 1440 721 0.00 90.00 0.2500 31 0.18712E+00 0.44215E-01 0.35660E-01 0.30406E-01 0.34569E-01 0.17713E-01 0.25666E-01 0.26762E-01 0.10912E-01 0.10623E-01 0.62775E-02 0.66029E-02 0.11870E+00 0.47465E-02 0.86580E-01 0.33813E-02 0.10799E+00 0.22265E-02 0.76236E-01 0.65007E-01 0.51308E-01 0.58308E-01 0.43458E-01 0.21357E-01 0.89651E-02 0.10000E-01 0.10000E-01 0.10000E-01 0.10000E-01 0.10000E-02 0.10000E+01"
5
-
6
- ffp = FortranFormat.new('2X,2i6,2f8.2,f8.4,i3,31e12.5')
7
- p list = ffp.read(head)
8
- ffp.write(test="", *list)
9
-
10
- p head
11
- p test
12
- p head == test
@@ -1 +0,0 @@
1
- require "carray/math/mathfunc"
@@ -1,15 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # lib/carray/graphics/imagemap.rb
4
- #
5
- # This file is part of Ruby/CArray extension library.
6
- # You can redistribute it and/or modify it under the terms of
7
- # the Ruby Licence.
8
- #
9
- # Copyright (C) 2005 Hiroki Motoyoshi
10
- #
11
- # ----------------------------------------------------------------------------
12
-
13
- require "carray/carray_mathfunc"
14
-
15
-
@@ -1,22 +0,0 @@
1
-
2
- This directory contains the plugin library used as the interface to NArray
3
- and NArrayMiss library from Ruby/CArray.
4
-
5
- ---
6
- NArray Library (http://narray.rubyforge.org/) by Masahiro Tanaka.
7
-
8
- NArray is an Numerical N-dimensional Array class. Supported element types
9
- are 1/2/4-byte Integer, single/double-precision Real/Complex, and Ruby
10
- Object. This extension library incorporates fast calculation and easy
11
- manipulation of large numerical arrays into the Ruby language. NArray
12
- has features similar to NumPy, but NArray has vector and matrix subclasses.
13
-
14
- (License: Ruby License)
15
-
16
- ---
17
- NArrayMiss Library (http://ruby.gfd-dennou.org/index.htm) by Seiya Nishizawa.
18
-
19
- NArrayMiss is a additional class processing of missing value with to NArray
20
- for Ruby.
21
-
22
- (License: GNU Lesser General Public License (LGPL) version 2.)