carray 1.3.3 → 1.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (97) 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/ext/calculus/carray_calculus.c +235 -95
  13. data/ext/calculus/carray_interp.c +3 -1
  14. data/ext/calculus/lib/math/calculus.rb +4 -4
  15. data/lib/carray.rb +32 -1
  16. data/lib/carray/autoload/autoload_base.rb +0 -4
  17. data/lib/carray/autoload/autoload_gem_cairo.rb +9 -0
  18. data/lib/carray/autoload/autoload_gem_ffi.rb +9 -0
  19. data/lib/carray/autoload/autoload_gem_gnuplot.rb +2 -0
  20. data/lib/carray/autoload/autoload_gem_io_csv.rb +14 -0
  21. data/lib/carray/autoload/autoload_gem_io_pg.rb +6 -0
  22. data/lib/carray/autoload/autoload_gem_io_sqlite3.rb +12 -0
  23. data/lib/carray/autoload/autoload_gem_narray.rb +10 -0
  24. data/lib/carray/autoload/autoload_gem_numo_narray.rb +14 -0
  25. data/lib/carray/autoload/autoload_gem_opencv.rb +16 -0
  26. data/lib/carray/autoload/autoload_gem_rmagick.rb +23 -0
  27. data/lib/carray/autoload/{autoload_graphics_zimg.rb → autoload_gem_zimg.rb} +0 -0
  28. data/lib/carray/base/autoload.rb +47 -5
  29. data/lib/carray/base/basic.rb +70 -6
  30. data/lib/carray/base/math.rb +1 -1
  31. data/lib/carray/base/string.rb +242 -0
  32. data/lib/carray/base/struct.rb +4 -4
  33. data/lib/carray/io/table.rb +1 -0
  34. data/mkmath.rb +12 -2
  35. data/version.h +5 -5
  36. metadata +48 -141
  37. data/Gemfile +0 -8
  38. data/Gemfile.lock +0 -33
  39. data/ext/calculus/lib/autoload/autoload_math_calculus.rb +0 -2
  40. data/ext/fortio/extconf.rb +0 -3
  41. data/ext/fortio/lib/carray/autoload/autoload_fortran_format.rb +0 -5
  42. data/ext/fortio/lib/carray/io/fortran_format.rb +0 -43
  43. data/ext/fortio/lib/fortio.rb +0 -3
  44. data/ext/fortio/lib/fortio/fortran_format.rb +0 -605
  45. data/ext/fortio/lib/fortio/fortran_format.tab.rb +0 -536
  46. data/ext/fortio/lib/fortio/fortran_format.y +0 -215
  47. data/ext/fortio/lib/fortio/fortran_namelist.rb +0 -151
  48. data/ext/fortio/lib/fortio/fortran_namelist.tab.rb +0 -470
  49. data/ext/fortio/lib/fortio/fortran_namelist.y +0 -213
  50. data/ext/fortio/lib/fortio/fortran_sequential.rb +0 -345
  51. data/ext/fortio/ruby_fortio.c +0 -182
  52. data/ext/fortio/test/test_H.rb +0 -5
  53. data/ext/fortio/test/test_T.rb +0 -7
  54. data/ext/fortio/test/test_fortran_format.rb +0 -86
  55. data/ext/fortio/test/test_namelist.rb +0 -25
  56. data/ext/fortio/test/test_namelist_write.rb +0 -10
  57. data/ext/fortio/test/test_sequential.rb +0 -13
  58. data/ext/fortio/test/test_sequential2.rb +0 -13
  59. data/ext/fortio/work/test.rb +0 -10
  60. data/ext/fortio/work/test_e.rb +0 -19
  61. data/ext/fortio/work/test_ep.rb +0 -10
  62. data/ext/fortio/work/test_parse.rb +0 -12
  63. data/ext/imagemap/carray_imagemap.c +0 -495
  64. data/ext/imagemap/doc/call_graph.dot +0 -28
  65. data/ext/imagemap/draw.c +0 -567
  66. data/ext/imagemap/extconf.rb +0 -13
  67. data/ext/imagemap/lib/autoload/autoload_graphics_imagemap.rb +0 -1
  68. data/ext/imagemap/lib/graphics/imagemap.rb +0 -273
  69. data/ext/imagemap/lib/image_map.rb +0 -4
  70. data/ext/imagemap/test/swath_index.rb +0 -83
  71. data/ext/imagemap/test/swath_warp.rb +0 -99
  72. data/ext/imagemap/test/test.rb +0 -23
  73. data/ext/imagemap/test/test_image.rb +0 -42
  74. data/ext/imagemap/test/test_line.rb +0 -14
  75. data/ext/imagemap/test/test_rotate.rb +0 -17
  76. data/ext/imagemap/test/test_triangle.rb +0 -20
  77. data/ext/imagemap/test/test_warp.rb +0 -26
  78. data/ext/mathfunc/lib/autoload/autoload_math_mathfunc.rb +0 -1
  79. data/ext/mathfunc/lib/math/mathfunc.rb +0 -15
  80. data/ext/narray/README +0 -22
  81. data/ext/narray/ca_wrap_narray.c +0 -500
  82. data/ext/narray/carray_narray.c +0 -21
  83. data/ext/narray/extconf.rb +0 -57
  84. data/ext/narray/lib/autoload/autoload_math_narray.rb +0 -1
  85. data/ext/narray/lib/autoload/autoload_math_narray_miss.rb +0 -11
  86. data/ext/narray/lib/math/narray.rb +0 -17
  87. data/ext/narray/lib/math/narray_miss.rb +0 -45
  88. data/lib/carray/autoload/autoload_graphics_gnuplot.rb +0 -2
  89. data/lib/carray/autoload/autoload_io_csv.rb +0 -14
  90. data/lib/carray/autoload/autoload_io_pg.rb +0 -6
  91. data/lib/carray/autoload/autoload_io_sqlite3.rb +0 -12
  92. data/lib/carray/graphics/gnuplot.rb +0 -2131
  93. data/lib/carray/graphics/zimg.rb +0 -296
  94. data/lib/carray/io/csv.rb +0 -572
  95. data/lib/carray/io/pg.rb +0 -101
  96. data/lib/carray/io/sqlite3.rb +0 -215
  97. data/mkmf.log +0 -18
@@ -1,3 +0,0 @@
1
- require "fortio/fortran_format"
2
- require "fortio/fortran_namelist"
3
- require "fortio/fortran_sequential"
@@ -1,605 +0,0 @@
1
- # ----------------------------------------------------------------------------
2
- #
3
- # carray/io/fortran_format.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
- # Supported format descriptors
14
- # ----------------------------
15
- # nFw.d : floating point
16
- # nEw.d : floating point
17
- # nDw.d : floating point
18
- # nGw.d : floating point
19
- # nESw.d :
20
- # nEd : exponential
21
- # nIw(.d) : integer
22
- # nLw : logical
23
- # nAw : string
24
- # nX : write n white space or skip reading by n-characters
25
- # Tn : move to n-character from line head
26
- # TLn : move left relative by n-characters
27
- # TRn : move right relative by n-characters
28
- # +P, -P
29
- # S, SP, SS
30
- # BN,BZ
31
- # nH... : hollerith string (e.g. 5Hhello)
32
- # '...', "..." : quoted string
33
- # / : line feed
34
- # $ : surppress line feed
35
- #
36
- # Short methods
37
- # -------------
38
- #
39
- # ### fortran_format(fmt, *vals)
40
- #
41
- # ### fortran_format_write(io, fmt, *vals)
42
- #
43
- # ### fortran_format_read(io, fmt)
44
- #
45
-
46
-
47
- require "fortio_ext"
48
- require "fortio/fortran_format.tab"
49
- require "stringio"
50
-
51
- class FortranFormat
52
-
53
- FORMAT_POOL = Hash.new { |hash, fmt|
54
- hash[fmt] = FortranFormatParser.new.parse(fmt)
55
- }
56
-
57
- def self.reset
58
- FORMAT_POOL.clear
59
- end
60
-
61
- def initialize (fmt)
62
- @format = FORMAT_POOL[fmt]
63
- end
64
-
65
- def write (io, *list)
66
- io ||= ""
67
- buf = StringIO.new()
68
- @format.write_as_root(buf, list)
69
- io << buf.string
70
- return io
71
- end
72
-
73
- def read (io, list = [])
74
- if io.is_a?(String)
75
- io = StringIO.new(io)
76
- end
77
- @format.read_as_root(io, list)
78
- return list
79
- end
80
-
81
- def count_args
82
- return @format.count_args
83
- end
84
-
85
- def inspect
86
- return "<FortranFormat: #{@format.inspect}>"
87
- end
88
-
89
- end
90
-
91
- def FortranFormat.check_length (len, str)
92
- if str.length > len
93
- return "*" * len
94
- else
95
- return str
96
- end
97
- end
98
-
99
- def FortranFormat (fmt)
100
- return FortranFormat.new(fmt)
101
- end
102
-
103
- def fortran_format_write (io, fmt, *data)
104
- if fmt.is_a?(FortranFormat)
105
- return fmt.write(io, *data)
106
- else
107
- return FortranFormat.new(fmt).write(io, *data)
108
- end
109
- end
110
-
111
- def fortran_format_read (io, fmt)
112
- if fmt.is_a?(FortranFormat)
113
- return fmt.read(io)
114
- else
115
- return FortranFormat.new(fmt).read(io)
116
- end
117
- end
118
-
119
- def fortran_format (fmt, *data)
120
- return fortran_format_write(nil, fmt, *data)
121
- end
122
-
123
- class FortranFormatParser
124
-
125
- State = Struct.new(:scale, :sign, :zero, :continue, :pos0, :tab_move)
126
-
127
- Group = Struct.new(:count, :member)
128
- class Group
129
- def write_as_root (io, list)
130
- state = State.new(0, false, false, false, io.pos, false)
131
- write(io, list, state)
132
- if state.continue
133
- if state.tab_move
134
- io.string.gsub!(/\000/, ' ')
135
- end
136
- else
137
- if state.tab_move
138
- io.string.gsub!(/\000/, ' ')
139
- io.seek(0, IO::SEEK_END)
140
- end
141
- io.puts
142
- end
143
- end
144
- def write (io, list, state)
145
- count.times do |i|
146
- member.each do |mem|
147
- mem.write(io, list, state)
148
- end
149
- end
150
- end
151
- def read_as_root (io, list)
152
- state = State.new(0, false, false, false, io.pos, false)
153
- read(io, list, state)
154
- unless state.continue
155
- io.gets
156
- end
157
- end
158
- def read (io, list, state)
159
- count.times do |i|
160
- member.each do |mem|
161
- mem.read(io, list, state)
162
- end
163
- end
164
- end
165
- def count_args
166
- return count*member.inject(0){|s,m| s + m.count_args}
167
- end
168
- def inspect
169
- count_str = count == 1 ? "" : count.to_s
170
- return "#{count_str}(" + member.map{|x| x.inspect}.join(",")+ ')'
171
- end
172
- end
173
-
174
- class Continue
175
- def write (io, list, state)
176
- state.continue = true
177
- end
178
- def read (io, list, state)
179
- state.continue = true
180
- end
181
- def count_args
182
- return 0
183
- end
184
- def inspect
185
- return "$"
186
- end
187
- end
188
-
189
- Flush = Struct.new(:count)
190
- class Flush
191
- def write (io, list, state)
192
- io << "\n" * count
193
- end
194
- def read (io, list, state)
195
- count.times do
196
- io.gets
197
- end
198
- end
199
- def count_args
200
- return count
201
- end
202
- def inspect
203
- count_str = count == 1 ? "" : count.to_s
204
- return "#{count_str}/"
205
- end
206
- end
207
-
208
- NodeS = Struct.new(:text)
209
- class NodeS
210
- def write (io, list, state)
211
- io << text
212
- end
213
- def read (io, list, state)
214
- raise RuntimeError, "constant string for reading"
215
- end
216
- def count_args
217
- return 0
218
- end
219
- def inspect
220
- if text !~ /'/
221
- return "'" + text + "'"
222
- else
223
- return '"' + text.gsub(/"/, '""') + '"'
224
- end
225
- end
226
- end
227
-
228
- NodeT= Struct.new(:n)
229
- class NodeT
230
- def write (io, list, state)
231
- io.pos = state.pos0 + n
232
- state.tab_move = true
233
- end
234
- def read (io, list, state)
235
- io.pos = state.pos0 + n
236
- end
237
- def count_args
238
- return 0
239
- end
240
- def inspect
241
- return "TL#{n}"
242
- end
243
- end
244
-
245
- NodeTL = Struct.new(:n)
246
- class NodeTL
247
- def write (io, list, state)
248
- io.pos -= n
249
- state.tab_move = true
250
- end
251
- def read (io, list, state)
252
- io.pos -= n
253
- end
254
- def count_args
255
- return 0
256
- end
257
- def inspect
258
- return "TL#{n}"
259
- end
260
- end
261
-
262
- NodeTR = Struct.new(:n)
263
- class NodeTR
264
- def write (io, list, state)
265
- io.pos += n
266
- state.tab_move = true
267
- end
268
- def read (io, list, state)
269
- io.pos += n
270
- end
271
- def count_args
272
- return 0
273
- end
274
- def inspect
275
- return "TR#{n}"
276
- end
277
- end
278
-
279
- NodeX = Struct.new(:count)
280
- class NodeX
281
- def write (io, list, state)
282
- io << " " * count
283
- end
284
- def read (io, list, state)
285
- io.read(count)
286
- end
287
- def count_args
288
- return 0
289
- end
290
- def inspect
291
- count_str = count == 1 ? "" : count.to_s
292
- return "#{count_str}X"
293
- end
294
- end
295
-
296
- NodeP = Struct.new(:scale)
297
- class NodeP
298
- def write (io, list, state)
299
- state.scale = scale
300
- end
301
- def read (io, list, state)
302
- state.scale = scale
303
- end
304
- def count_args
305
- return 0
306
- end
307
- def inspect
308
- return "#{scale}P"
309
- end
310
- end
311
-
312
- NodeSp = Struct.new(:sign)
313
- class NodeSp
314
- def write (io, list, state)
315
- state.sign = sign
316
- end
317
- def read (io, list, state)
318
- end
319
- def count_args
320
- return 0
321
- end
322
- def inspect
323
- if sign
324
- return "SP"
325
- else
326
- return "SS"
327
- end
328
- end
329
- end
330
-
331
- NodeB = Struct.new(:zero)
332
- class NodeB
333
- def write (io, list, state)
334
- end
335
- def read (io, list, state)
336
- state.zero = zero
337
- # if zero
338
- # warn "FortranFormat: BZ is not supported descriptor"
339
- # end
340
- end
341
- def count_args
342
- return 0
343
- end
344
- def inspect
345
- if zero
346
- return "BZ"
347
- else
348
- return "BN"
349
- end
350
- end
351
- end
352
-
353
- NodeH = Struct.new(:count, :string)
354
- class NodeH
355
- def write (io, list, state)
356
- io << string
357
- end
358
- def read (io, list, state)
359
- raise "format h is not implemented for reading"
360
- end
361
- def count_args
362
- return count
363
- end
364
- def inspect
365
- count_str = count == 1 ? "" : count.to_s
366
- return "#{count_str}H#{string}"
367
- end
368
- end
369
-
370
- NodeA = Struct.new(:count, :length)
371
- class NodeA
372
- def write (io, list, state)
373
- len = length
374
- if len
375
- count.times do
376
- str = list.shift
377
- if str.length > len
378
- io << str[0,len]
379
- else
380
- io << str.rjust(len)
381
- end
382
- end
383
- else
384
- io << str
385
- end
386
- end
387
- def read (io, list, state)
388
- str = nil
389
- if length
390
- count.times do
391
- list << (str = io.read(length))
392
- end
393
- else
394
- list << (str = io.read)
395
- end
396
- rescue
397
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
398
- end
399
- def count_args
400
- return count
401
- end
402
- def inspect
403
- count_str = count == 1 ? "" : count.to_s
404
- return "#{count_str}A#{length}"
405
- end
406
- end
407
-
408
- NodeL = Struct.new(:count, :length)
409
- class NodeL
410
- def write (io, list, state)
411
- count.times do
412
- if list.shift
413
- io << " "*(length-1) + "T"
414
- else
415
- io << " "*(length-1) + "F"
416
- end
417
- end
418
- end
419
- def read (io, list, state)
420
- count.times do
421
- case io.read(length)
422
- when /\A *?\.?t/i
423
- list.push(true)
424
- else
425
- list.push(false)
426
- end
427
- end
428
- end
429
- def count_args
430
- return count
431
- end
432
- def inspect
433
- count_str = count == 1 ? "" : count.to_s
434
- return "#{count_str}L#{length}"
435
- end
436
- end
437
-
438
- NodeI = Struct.new(:count, :length, :prec)
439
- class NodeI
440
- def write (io, list, state)
441
- if prec
442
- if state.sign
443
- fmt = "%#{length-prec}s%+0#{prec-1}i"
444
- else
445
- fmt = "%#{length-prec}s%0#{prec}i"
446
- end
447
- else
448
- if state.sign
449
- fmt = "%s%+#{length-1}i"
450
- else
451
- fmt = "%s%#{length}i"
452
- end
453
- end
454
- count.times do
455
- str = format(fmt, "", list.shift)
456
- io << FortranFormat.check_length(length, str)
457
- end
458
- end
459
- def read (io, list, state)
460
- str = nil
461
- count.times do
462
- str = io.read(length)
463
- if state.zero
464
- list << str.gsub(/ /,'0').to_i
465
- else
466
- list << str.to_i
467
- end
468
- end
469
- rescue
470
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
471
- end
472
- def count_args
473
- return count
474
- end
475
- def inspect
476
- count_str = count == 1 ? "" : count.to_s
477
- if prec
478
- return "#{count_str}I#{length}.#{prec}"
479
- else
480
- return "#{count_str}I#{length}"
481
- end
482
- end
483
- end
484
-
485
- NodeF = Struct.new(:count, :length, :prec)
486
- class NodeF
487
- def write (io, list, state)
488
- count.times do
489
- str = FortranFormat.write_F(state.sign, state.scale, length, prec, list.shift)
490
- io << FortranFormat.check_length(length, str)
491
- end
492
- end
493
- def read (io, list, state)
494
- str = nil
495
- count.times do
496
- str = io.read(length)
497
- if state.zero
498
- str = str.gsub(/ /,'0')
499
- end
500
- list << FortranFormat.read_F(str, state.scale, length, prec)
501
- end
502
- rescue
503
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
504
- end
505
- def count_args
506
- return count
507
- end
508
- def inspect
509
- count_str = count == 1 ? "" : count.to_s
510
- return "#{count_str}F#{length}.#{prec}"
511
- end
512
- end
513
-
514
- NodeE = Struct.new(:count, :length, :prec, :exp)
515
- class NodeE
516
- def write (io, list, state)
517
- count.times do
518
- str = FortranFormat.write_E(state.sign, state.scale, length, prec, exp, list.shift)
519
- io << FortranFormat.check_length(length, str)
520
- end
521
- end
522
- def read (io, list, state)
523
- str = nil
524
- count.times do
525
- str = io.read(length)
526
- if state.zero
527
- str = str.gsub(/ /,'0')
528
- end
529
- list << str.to_f
530
- end
531
- rescue
532
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
533
- end
534
- def count_args
535
- return count
536
- end
537
- def inspect
538
- count_str = count == 1 ? "" : count.to_s
539
- exp_str = (exp.nil? or exp == 2) ? "" : "E#{exp}"
540
- return "#{count_str}E#{length}.#{prec}#{exp_str}"
541
- end
542
- end
543
-
544
- NodeES = Struct.new(:count, :length, :prec, :exp)
545
- class NodeES
546
- def write (io, list, state)
547
- count.times do
548
- str = FortranFormat.write_E(state.sign, 1, length, prec, exp, list.shift)
549
- io << FortranFormat.check_length(length, str)
550
- end
551
- end
552
- def read (io, list, state)
553
- str = nil
554
- count.times do
555
- str = io.read(length)
556
- if state.zero
557
- str = str.gsub(/ /,'0')
558
- end
559
- list << str.to_f
560
- end
561
- rescue
562
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
563
- end
564
- def count_args
565
- return count
566
- end
567
- def inspect
568
- count_str = count == 1 ? "" : count.to_s
569
- exp_str = (exp.nil? or exp == 2) ? "" : "E#{exp}"
570
- return "#{count_str}ES#{length}.#{prec}#{exp_str}"
571
- end
572
- end
573
-
574
- NodeG = Struct.new(:count, :length, :prec, :exp)
575
- class NodeG
576
- def write (io, list, state)
577
- count.times do
578
- str = FortranFormat.write_G(state.sign, state.scale, length, prec, exp, list.shift)
579
- io << FortranFormat.check_length(length, str)
580
- end
581
- end
582
- def read (io, list, state)
583
- str = nil
584
- count.times do
585
- str = io.read(length)
586
- if state.zero
587
- str = str.gsub(/ /,'0')
588
- end
589
- list << str.to_f
590
- end
591
- rescue
592
- raise "reading error in fortran format : #{str.dump} for #{self.inspect}"
593
- end
594
- def count_args
595
- return count
596
- end
597
- def inspect
598
- count_str = count == 1 ? "" : count.to_s
599
- exp_str = (exp.nil? or exp == 2) ? "" : "E#{exp}"
600
- return "#{count_str}G#{length}.#{prec}#{exp_str}"
601
- end
602
- end
603
-
604
- end
605
-