ruby-changes:14604
From: keiju <ko1@a...>
Date: Wed, 27 Jan 2010 23:29:05 +0900 (JST)
Subject: [ruby-changes:14604] Ruby:r26448 (trunk): * lib/matrix.rb: add exception Matrix::ErrOperationNotImplemented
keiju 2010-01-27 23:28:47 +0900 (Wed, 27 Jan 2010) New Revision: 26448 http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?view=rev&revision=26448 Log: * lib/matrix.rb: add exception Matrix::ErrOperationNotImplemented [ruby-dev:40149]. * lib/matrix.rb: change message of exception Matrix::ErrOperationNotDefined [ruby-dev:40150], [ruby-dev:40176]. * lib/matrix.rb: add method Vector#/ [ruby-dev:40151]. * lib/matrix.rb(Matrix::Scalar#+,-,/): delete meaningless when switch. [ruby-dev:40149] Modified files: trunk/ChangeLog trunk/lib/matrix.rb Index: ChangeLog =================================================================== --- ChangeLog (revision 26447) +++ ChangeLog (revision 26448) @@ -1,3 +1,13 @@ +Wed Jan 27 23:27:54 2010 Keiju Ishitsuka <keiju@e...> + + * lib/matrix.rb: add exception Matrix::ErrOperationNotImplemented + [ruby-dev:40149]. + * lib/matrix.rb: change message of exception + Matrix::ErrOperationNotDefined [ruby-dev:40150], [ruby-dev:40176]. + * lib/matrix.rb: add method Vector#/ [ruby-dev:40151]. + * lib/matrix.rb(Matrix::Scalar#+,-,/): delete meaningless when + switch. [ruby-dev:40149] + Wed Jan 27 23:22:54 2010 Kazuhiro NISHIYAMA <zn@m...> * vm_dump.c (bugreport_backtrace): trivial change. Index: lib/matrix.rb =================================================================== --- lib/matrix.rb (revision 26447) +++ lib/matrix.rb (revision 26448) @@ -26,7 +26,8 @@ def_exception("ErrDimensionMismatch", "\#{self.name} dimension mismatch") def_exception("ErrNotRegular", "Not Regular Matrix") - def_exception("ErrOperationNotDefined", "This operation(%s) can\\'t defined") + def_exception("ErrOperationNotDefined", "Operation(%s) can\\'t be defined: %s op %s") + def_exception("ErrOperationNotImplemented", "Sorry, Operation(%s) not implemented: %s op %s") end # @@ -497,7 +498,7 @@ def +(m) case m when Numeric - Matrix.Raise ErrOperationNotDefined, "+" + Matrix.Raise ErrOperationNotDefined, "+", self.class, m.class when Vector m = Matrix.column_vector(m) when Matrix @@ -525,7 +526,7 @@ def -(m) case m when Numeric - Matrix.Raise ErrOperationNotDefined, "-" + Matrix.Raise ErrOperationNotDefined, "-", self.class, m.class when Vector m = Matrix.column_vector(m) when Matrix @@ -649,9 +650,9 @@ x *= x end elsif other.kind_of?(Float) || defined?(Rational) && other.kind_of?(Rational) - Matrix.Raise ErrOperationNotDefined, "**" + Matrix.Raise ErrOperationNotImplemented, "**", self.class, other.class else - Matrix.Raise ErrOperationNotDefined, "**" + Matrix.Raise ErrOperationNotDefined, "**", self.class, other.class end end @@ -976,9 +977,7 @@ when Numeric Scalar.new(@value + other) when Vector, Matrix - Scalar.Raise WrongArgType, other.class, "Numeric or Scalar" - when Scalar - Scalar.new(@value + other.value) + Scalar.Raise ErrOperationNotDefined, "+", @value.class, other.class else x, y = other.coerce(self) x + y @@ -990,9 +989,7 @@ when Numeric Scalar.new(@value - other) when Vector, Matrix - Scalar.Raise WrongArgType, other.class, "Numeric or Scalar" - when Scalar - Scalar.new(@value - other.value) + Scalar.Raise ErrOperationNotDefined, "-", @value.class, other.class else x, y = other.coerce(self) x - y @@ -1016,7 +1013,7 @@ when Numeric Scalar.new(@value / other) when Vector - Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix" + Scalar.Raise ErrOperationNotDefined, "/", @value.class, other.class when Matrix self * other.inverse else @@ -1030,9 +1027,10 @@ when Numeric Scalar.new(@value ** other) when Vector - Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or Matrix" + Scalar.Raise ErrOperationNotDefined, "**", @value.class, other.class when Matrix - other.powered_by(self) + #other.powered_by(self) + Scalar.Raise ErrOperationNotImplemented, "**", @value.class, other.class else x, y = other.coerce(self) x ** y @@ -1214,6 +1212,8 @@ Vector.elements(els, false) when Matrix Matrix.column_vector(self) * x + when Vector + Vector.Raise ErrOperationNotDefined, "*", self.class, x.class else s, x = x.coerce(self) s * x @@ -1258,6 +1258,22 @@ end end + # + # Vector division. + # + def /(x) + case x + when Numeric + els = @elements.collect{|e| e / x} + Vector.elements(els, false) + when Matrix, Vector + Vector.Raise ErrOperationNotDefined, "/", self.class, x.class + else + s, x = x.coerce(self) + s / x + end + end + #-- # VECTOR FUNCTIONS -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=- #++ -- ML: ruby-changes@q... Info: http://www.atdot.net/~ko1/quickml/