[#68137] improve semantics of manpages — "Anthony J. Bentley" <anthony@...>
Hi,
1 message
2015/02/17
[#68144] Re: Future of test suites for Ruby — Anthony Crumley <anthony.crumley@...>
FYI...
4 messages
2015/02/17
[#68343] [Ruby trunk - Bug #10916] [Open] What the Ruby? SegFault? — ruby@...
Issue #10916 has been reported by why do i need this acct just to create a bug report.
5 messages
2015/02/27
[#68373] Re: [Ruby trunk - Bug #10916] [Open] What the Ruby? SegFault?
— "Martin J. Dürst" <duerst@...>
2015/03/02
> * Author: why do i need this acct just to create a bug report
[#68358] [Ruby trunk - Bug #10902] require("enumerator") scans LOAD_PATH 2x on every invocation — ruby@...1.net
Issue #10902 has been updated by Aman Gupta.
3 messages
2015/02/28
[ruby-core:68126] [Ruby trunk - Bug #10855] [PATCH] Matrix#inverse returns matrix of integers whenever possible
From:
eregontp@...
Date:
2015-02-16 10:42:17 UTC
List:
ruby-core #68126
Issue #10855 has been updated by Benoit Daloze.
Lito Nicolai wrote:
> Marc-Andre Lafortune wrote:
> > Interesting.
> >
> > I'm thinking it might be best to do the conversion even if some entries are not integral. Why do you feel it's best to have uniform types accross a matrix, in particular when would having an Integer instead of a Rational be a problem?
It means every operation that follows must go through rational arithmetic which is likely to be slower and more memory hungry, isn't it?
But of course homogeneity also has its value and the code to lower explicitly Rational to Integer is not exactly nice.
> In the Matrix class, scalar divison is implemented by using the usual `/`
> operation, which loses precision on `Integer`s but not on `Rational`s. If
> the Matrix is a mix of the two, something like this will happen:
>
> > x = Matrix[[(3/1), 3, 3], [3, (3/1), 3], [3, 3, (3/1)]]
> => # as above
> > x / 2
> => Matrix[[(3/2), 1, 1], [1, (3/2), 1], [1, 1, (3/2)]]
>
> I would find this mixed precision *really* surprising when writing matrix code!
> Especially because the loss of precision could be hidden across a number
> of matrix, vector, and scalar multiplications.
I would think this is a bug. Matrix division by a scalar should be exact, no?
----------------------------------------
Bug #10855: [PATCH] Matrix#inverse returns matrix of integers whenever possible
https://bugs.ruby-lang.org/issues/10855#change-51511
* Author: Lito Nicolai
* Status: Open
* Priority: Normal
* Assignee: Marc-Andre Lafortune
* ruby -v: 2.3.0
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
Currently, Matrix#inverse returns a matrix of Rationals, even when each
element has a denominator of 1. This leads to
> x = Matrix.identity 3
=> Matrix[[1, 0, 0],
[0, 1, 0],
[0, 0, 1]]
> x.inverse
=> Matrix[[(1/1), (0/1), (0/1)],
[(0/1), (1/1), (0/1)],
[(0/1), (0/1), (1/1)]]
Even though `Matrix.identity.inverse` should be identical to `Matrix.identity`.
This patch guarantees that Matrix#inverse will return a matrix of integers
whenever it can. To maintain uniform types across a matrix, the conversion
is only performedif *every* element can be converted to an integer.
---Files--------------------------------
matrix_inverse_to_integer.patch (2.14 KB)
--
https://bugs.ruby-lang.org/