SciRuby / nmatrix

Dense and sparse linear algebra library for Ruby via SciRuby
Other
469 stars 133 forks source link

puts or p on simple matrix crashes #625

Open ljulliar opened 5 years ago

ljulliar commented 5 years ago

Just installed nmatrix on Ruby 2.5.3 / Debian 9. Trying to print a simple matrix under irb would crash:


2.5.3 :001 > require 'nmatrix'
 => true 
2.5.3 :002 > m =  NMatrix.new([2, 3], [0, 1, 2, 3, 4, 5], dtype: :int64)
 => #<NMatrix:0x000055694e8bd028 shape:[2,3] dtype:int64 stype:dense> 
2.5.3 :003 > puts m
Traceback (most recent call last):
Traceback (most recent call last):
        18: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/bin/irb:11:in `<main>'
        17: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:383:in `start'
        16: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:427:in `run'
        15: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:427:in `catch'
        14: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:428:in `block in run'
        13: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:487:in `eval_input'
        12: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:231:in `each_top_level_statement'
        11: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:231:in `catch'
        10: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:232:in `block in each_top_level_statement'
         9: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:232:in `loop'
         8: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb/ruby-lex.rb:246:in `block (2 levels) in each_top_level_statement'
         7: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:488:in `block in eval_input'
         6: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:623:in `signal_status'
         5: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:529:in `block (2 levels) in eval_input'
         4: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:529:in `puts'
         3: from /home/ljulliard/.rvm/rubies/ruby-2.5.3/lib/ruby/2.5.0/irb.rb:529:in `puts'
         2: from /home/ljulliard/.rvm/gems/ruby-2.5.3/gems/packable-1.3.10/lib/packable/extensions/io.rb:62:in `write_with_packing'
         1: from /home/ljulliard/.rvm/gems/ruby-2.5.3/gems/packable-1.3.10/lib/packable/extensions/io.rb:86:in `pack_and_write'
/home/ljulliard/.rvm/gems/ruby-2.5.3/gems/packable-1.3.10/lib/packable/extensions/io.rb:86:in `pos': Illegal seek @ rb_io_tell - <STDOUT> (Errno::ESPIPE)```

Any clue on what's happening here ?
WaKeMaTTa commented 5 years ago

Try this:

require 'nmatrix'
m =  NMatrix.new([2, 3], [0, 1, 2, 3, 4, 5], dtype: :int64)
m
kojix2 commented 5 years ago

To be honest and not afraid to criticize, NMatrix is not well maintained, and Numo::NArray is better in many ways. Please try NArray before giving up Nmarix and using NumPy.