From: ruby-core@... Date: 2015-02-23T16:38:55+00:00 Subject: [ruby-core:68265] [Ruby trunk - Bug #10855] [PATCH] Matrix#inverse returns matrix of integers whenever possible Issue #10855 has been updated by Marc-Andre Lafortune. TBH, I can't think of any legitimate use of `Matrix#/` with integer division. Anyone? I never really thought of that, but it's a bit odd that there is no natural way to write `Matrix.I(3) / 2`, say. There's no `quo` method on `Matrix`, so one has to do `Matrix.I(3) / 2r`, `Matrix.I(3) * 0.5r` or `Matrix.diagonal([0.5r] * 3)`. I'm very tempted to change `/` to act like `quo`. ---------------------------------------- Bug #10855: [PATCH] Matrix#inverse returns matrix of integers whenever possible https://bugs.ruby-lang.org/issues/10855#change-51620 * 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/