[#28015] RCR: RUBY_VERSION_INT — Roger Pack <rogerdpack2@...>

Situation:

14 messages 2010/02/02

[#28113] [Bug #2723] $: length affects re-require time of already loaded files — Greg Hazel <redmine@...>

Bug #2723: $: length affects re-require time of already loaded files

16 messages 2010/02/08

[#28151] [Bug #2739] ruby 1.8.7 built with pthreads hangs under some circumstances — Joel Ebel <redmine@...>

Bug #2739: ruby 1.8.7 built with pthreads hangs under some circumstances

31 messages 2010/02/11

[#28188] [Bug #2750] build fails on win32/MinGW: "executable host ruby is required." even when --with-baseruby is used — Christian Bodt <redmine@...>

Bug #2750: build fails on win32/MinGW: "executable host ruby is required." even when --with-baseruby is used

9 messages 2010/02/16

[#28206] Is Math module a wrapper of libm? — Yusuke ENDOH <mame@...>

Hi matz --

23 messages 2010/02/18
[#28212] Re: Is Math module a wrapper of libm? — Yukihiro Matsumoto <matz@...> 2010/02/18

Hi,

[#28219] Re: Is Math module a wrapper of libm? — Yusuke ENDOH <mame@...> 2010/02/18

Hi,

[#28225] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/18

Hi,

[#28233] Re: Is Math module a wrapper of libm? — Kenta Murata <muraken@...> 2010/02/18

Hi,

[#28265] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/20

Hi,

[#28286] Re: Is Math module a wrapper of libm? — Kenta Murata <muraken@...> 2010/02/21

Hi

[#28291] Re: Is Math module a wrapper of libm? — Marc-Andre Lafortune <ruby-core-mailing-list@...> 2010/02/22

Hi!

[#28235] [Feature #2759] Regexp /g and /G options — Michael Fellinger <redmine@...>

Feature #2759: Regexp /g and /G options

35 messages 2010/02/18
[#28459] [Feature #2759] Regexp /g and /G options — caleb clausen <redmine@...> 2010/03/04

Issue #2759 has been updated by caleb clausen.

[#28329] [ANN] Ruby 1.9.2dev has passed RubySpec! — Yusuke ENDOH <mame@...>

Hi,

12 messages 2010/02/24

[#28355] [ANN] Toward rich diversity of Ruby development. — Urabe Shyouhei <shyouhei@...>

A short announcement: thanks to some helps of GitHub people, I now have

12 messages 2010/02/27

[#28365] Indentifying key MRI-on-Windows issues — Jon <jon.forums@...>

In an effort to begin summarizing key MRI-on-Windows open issues I'm starting this thread in hopes that those interested will respond with details on the key MRI issues they feel need resolution for Windows users.

11 messages 2010/02/27
[#28690] Re: Indentifying key MRI-on-Windows issues — Roger Pack <rogerdpack2@...> 2010/03/16

> My key concern is http://blade.nagaokaut.ac.jp/cgi-bin/scat.rb/ruby/ruby-core/24968

[ruby-core:28166] Improved Matrix Determinant

From: Yu Ichino <noagony@...>
Date: 2010-02-13 11:02:56 UTC
List: ruby-core #28166
Hi,
I have an idea on the stability and performance of matrix determinant.
Improved algorithm with complete source code is at the end of this post.
I hope someone would test it and give me a feed-back :-)

note:
 Similar issues have discussed in ruby-dev around 2005.
 They compromised to the current state.

Good Day,
Yu (Kyoto JAPAN)

------------------------
Ruby Matrix Library (matrix.rb) is easygoing and I love it.
Determinant (presumably rank too), however, contains critical flaws.
Ruby 1.9 API document says;
 [determinant] require 'mathn' for integer matrices. (already resolved?)
 [determinant_e] doesn't work for matrices with Float elements.

Flaws in current version (1.9.1)
 0. typo bug (http://redmine.ruby-lang.org/issues/show/1531)
    Matrix[[0,1],[1,0].determinant #=> nil error
 1. returns Rational without mathn (unnatural)
    Matrix[[0,1],[1,0]].det #=> (-1/1)
 2. indivisible fraction (quo) must be avoided (not exact)
 3. unnecessary swap operation (slow)

Solution
 fraction-free version of Gaussian elimination (Bareiss algorithm)
 1. mathn is unnecessary
 2. exact for integer matrix
 3. modest speed

Benchmark
 A: 10 random (Integer) matrix with size 44
  det:   10.0 sec
  det_e: 10.3 sec
  det_b:  1.3 sec
 B: 10 random (Float) matrix with size 44
  det:   0.36 sec
  det_b: 0.88 sec

Issue
 - what is the reason det is faster in Float?
 - many test cases required

#############################################
require 'matrix'
class Matrix
 def det_b
  abort '!error: not square!' unless square?
  n=row_size
  a=to_a
  (0...n).inject(1) do |det,k|
   i=a.transpose[k].slice(k...n).index{|e| e!=0}
   return 0 if i.nil? #not full ranked
   if i!=0 then
    a[k],a[k+i]=a[k+i],a[k]
    det*=-1
   end
   for i in (k+1)...n
    for j in (k...n).to_a.reverse
     a[i][j]=a[k][k]*a[i][j]-a[i][k]*a[k][j]
     a[i][j]/=a[k-1][k-1] if k!=0
    end
   end
   det/=a[k-1][k-1] if k!=0
   det*a[k][k]
  end
 end
end
#############################################

EOF the post.

In This Thread

Prev Next