nmatrix 0.0.1 → 0.0.2

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 (91) hide show
  1. data/.gitignore +27 -0
  2. data/.rspec +2 -0
  3. data/Gemfile +3 -5
  4. data/Guardfile +6 -0
  5. data/History.txt +33 -0
  6. data/Manifest.txt +41 -38
  7. data/README.rdoc +88 -11
  8. data/Rakefile +35 -53
  9. data/ext/nmatrix/data/complex.h +372 -0
  10. data/ext/nmatrix/data/data.cpp +275 -0
  11. data/ext/nmatrix/data/data.h +707 -0
  12. data/ext/nmatrix/data/rational.h +421 -0
  13. data/ext/nmatrix/data/ruby_object.h +446 -0
  14. data/ext/nmatrix/extconf.rb +101 -51
  15. data/ext/nmatrix/new_extconf.rb +56 -0
  16. data/ext/nmatrix/nmatrix.cpp +1609 -0
  17. data/ext/nmatrix/nmatrix.h +265 -849
  18. data/ext/nmatrix/ruby_constants.cpp +134 -0
  19. data/ext/nmatrix/ruby_constants.h +103 -0
  20. data/ext/nmatrix/storage/common.cpp +70 -0
  21. data/ext/nmatrix/storage/common.h +170 -0
  22. data/ext/nmatrix/storage/dense.cpp +665 -0
  23. data/ext/nmatrix/storage/dense.h +116 -0
  24. data/ext/nmatrix/storage/list.cpp +1088 -0
  25. data/ext/nmatrix/storage/list.h +129 -0
  26. data/ext/nmatrix/storage/storage.cpp +658 -0
  27. data/ext/nmatrix/storage/storage.h +99 -0
  28. data/ext/nmatrix/storage/yale.cpp +1601 -0
  29. data/ext/nmatrix/storage/yale.h +208 -0
  30. data/ext/nmatrix/ttable_helper.rb +126 -0
  31. data/ext/nmatrix/{yale/smmp1_header.template.c → types.h} +36 -9
  32. data/ext/nmatrix/util/io.cpp +295 -0
  33. data/ext/nmatrix/util/io.h +117 -0
  34. data/ext/nmatrix/util/lapack.h +1175 -0
  35. data/ext/nmatrix/util/math.cpp +557 -0
  36. data/ext/nmatrix/util/math.h +1363 -0
  37. data/ext/nmatrix/util/sl_list.cpp +475 -0
  38. data/ext/nmatrix/util/sl_list.h +255 -0
  39. data/ext/nmatrix/util/util.h +78 -0
  40. data/lib/nmatrix/blas.rb +70 -0
  41. data/lib/nmatrix/io/mat5_reader.rb +567 -0
  42. data/lib/nmatrix/io/mat_reader.rb +162 -0
  43. data/lib/{string.rb → nmatrix/monkeys.rb} +49 -2
  44. data/lib/nmatrix/nmatrix.rb +199 -0
  45. data/lib/nmatrix/nvector.rb +103 -0
  46. data/lib/nmatrix/version.rb +27 -0
  47. data/lib/nmatrix.rb +22 -230
  48. data/nmatrix.gemspec +59 -0
  49. data/scripts/mac-brew-gcc.sh +47 -0
  50. data/spec/4x4_sparse.mat +0 -0
  51. data/spec/4x5_dense.mat +0 -0
  52. data/spec/blas_spec.rb +47 -0
  53. data/spec/elementwise_spec.rb +164 -0
  54. data/spec/io_spec.rb +60 -0
  55. data/spec/lapack_spec.rb +52 -0
  56. data/spec/math_spec.rb +96 -0
  57. data/spec/nmatrix_spec.rb +93 -89
  58. data/spec/nmatrix_yale_spec.rb +52 -36
  59. data/spec/nvector_spec.rb +1 -1
  60. data/spec/slice_spec.rb +257 -0
  61. data/spec/spec_helper.rb +51 -0
  62. data/spec/utm5940.mtx +83844 -0
  63. metadata +113 -71
  64. data/.autotest +0 -23
  65. data/.gemtest +0 -0
  66. data/ext/nmatrix/cblas.c +0 -150
  67. data/ext/nmatrix/dense/blas_header.template.c +0 -52
  68. data/ext/nmatrix/dense/elementwise.template.c +0 -107
  69. data/ext/nmatrix/dense/gemm.template.c +0 -159
  70. data/ext/nmatrix/dense/gemv.template.c +0 -130
  71. data/ext/nmatrix/dense/rationalmath.template.c +0 -68
  72. data/ext/nmatrix/dense.c +0 -307
  73. data/ext/nmatrix/depend +0 -18
  74. data/ext/nmatrix/generator/syntax_tree.rb +0 -481
  75. data/ext/nmatrix/generator.rb +0 -594
  76. data/ext/nmatrix/list.c +0 -774
  77. data/ext/nmatrix/nmatrix.c +0 -1977
  78. data/ext/nmatrix/rational.c +0 -98
  79. data/ext/nmatrix/yale/complexmath.template.c +0 -71
  80. data/ext/nmatrix/yale/elementwise.template.c +0 -46
  81. data/ext/nmatrix/yale/elementwise_op.template.c +0 -73
  82. data/ext/nmatrix/yale/numbmm.template.c +0 -94
  83. data/ext/nmatrix/yale/smmp1.template.c +0 -21
  84. data/ext/nmatrix/yale/smmp2.template.c +0 -43
  85. data/ext/nmatrix/yale/smmp2_header.template.c +0 -46
  86. data/ext/nmatrix/yale/sort_columns.template.c +0 -56
  87. data/ext/nmatrix/yale/symbmm.template.c +0 -54
  88. data/ext/nmatrix/yale/transp.template.c +0 -68
  89. data/ext/nmatrix/yale.c +0 -726
  90. data/lib/array.rb +0 -67
  91. data/spec/syntax_tree_spec.rb +0 -46
data/lib/array.rb DELETED
@@ -1,67 +0,0 @@
1
- # = NMatrix
2
- #
3
- # A linear algebra library for scientific computation in Ruby.
4
- # NMatrix is part of SciRuby.
5
- #
6
- # NMatrix was originally inspired by and derived from NArray, by
7
- # Masahiro Tanaka: http://narray.rubyforge.org
8
- #
9
- # == Copyright Information
10
- #
11
- # SciRuby is Copyright (c) 2010 - 2012, Ruby Science Foundation
12
- # NMatrix is Copyright (c) 2012, Ruby Science Foundation
13
- #
14
- # Please see LICENSE.txt for additional copyright notices.
15
- #
16
- # == Contributing
17
- #
18
- # By contributing source code to SciRuby, you agree to be bound by
19
- # our Contributor Agreement:
20
- #
21
- # * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
22
- #
23
- # == array.rb
24
- #
25
- # Ruby core extensions for NMatrix.
26
-
27
- class Array
28
- # Convert a Ruby Array to an NMatrix.
29
- #
30
- # You must provide a shape for the matrix as the first argument.
31
- #
32
- # == Arguments:
33
- # <tt>shape</tt> :: Array describing matrix dimensions (or Fixnum for square) -- REQUIRED!
34
- # <tt>dtype</tt> :: Override data type (e.g., to store a Float as :float32 instead of :float64) -- optional.
35
- # <tt>stype</tt> :: Optional storage type (defaults to :dense)
36
- def to_nm *args
37
- pos = 0
38
-
39
- shape = args[pos]; pos += 1
40
-
41
- dtype = begin
42
- if pos >= args.size
43
- # TODO: Upcasting.
44
- if self[0].is_a?(Fixnum)
45
- :int64
46
- elsif self[0].is_a?(Float)
47
- :float64
48
- elsif self[0].is_a?(Rational)
49
- :rational128
50
- elsif self[0].is_a?(Complex)
51
- :complex128
52
- end.tap { pos += 1 }
53
- else
54
- args[pos].tap { pos += 1 }
55
- end
56
- end
57
-
58
- stype = args[pos].is_a?(Symbol) ? args[pos].tap { pos += 1} : :dense
59
-
60
-
61
- if stype == :dense
62
- NMatrix.new(stype, shape, self, dtype)
63
- else
64
- NMatrix.new(:dense, shape, self, dtype).cast(:stype, dtype)
65
- end
66
- end
67
- end
@@ -1,46 +0,0 @@
1
- # = NMatrix
2
- #
3
- # A linear algebra library for scientific computation in Ruby.
4
- # NMatrix is part of SciRuby.
5
- #
6
- # NMatrix was originally inspired by and derived from NArray, by
7
- # Masahiro Tanaka: http://narray.rubyforge.org
8
- #
9
- # == Copyright Information
10
- #
11
- # SciRuby is Copyright (c) 2010 - 2012, Ruby Science Foundation
12
- # NMatrix is Copyright (c) 2012, Ruby Science Foundation
13
- #
14
- # Please see LICENSE.txt for additional copyright notices.
15
- #
16
- # == Contributing
17
- #
18
- # By contributing source code to SciRuby, you agree to be bound by
19
- # our Contributor Agreement:
20
- #
21
- # * https://github.com/SciRuby/sciruby/wiki/Contributor-Agreement
22
- #
23
- # == syntax_tree_spec.rb
24
- #
25
- # Tests for the source code generator (syntax_tree.rb in the
26
- # ext/nmatrix/generator dir).
27
- #
28
- require "./ext/nmatrix/generator/syntax_tree.rb"
29
-
30
- describe SyntaxTree do
31
- #it "correctly handles rational == 0" do
32
- # SyntaxTree.parse("x == 0").operate(:rational,:r128).should == "x.n == 0"
33
- #end
34
- #
35
- #it "correctly handles rational = 0" do
36
- # SyntaxTree.parse("x == 0").operate(:rational,:r128).split("\n").should == ["x.n = 0", "x.d = 1;"]
37
- #end
38
- #
39
- #it "correctly handles complex == 0" do
40
- # SyntaxTree.parse("x == 0").operate(:complex,:c128).should == "x.r == 0 && x.i == 0"
41
- #end
42
- #
43
- #it "correctly handles complex = 0" do
44
- # SyntaxTree.parse("x = 0").operate(:complex,:c128).split("\n").should == ["x.r = 0", "x.i = 1;"]
45
- #end
46
- end