# Three bugs of Matrix::Scalar

**URL:** <https://www.ruby-forum.com/t/three-bugs-of-matrix-scalar/182242>\
**Category:** Development\
**Created:** [January 25, 2010, 4:22pm UTC](https://www.ruby-forum.com/t/three-bugs-of-matrix-scalar/182242 "2010-01-25T16:22:11Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [January 25, 2010, 4:22pm UTC](https://www.ruby-forum.com/t/three-bugs-of-matrix-scalar/182242/1 "2010-01-25T16:22:11Z")

</div>

e$B1sF#$G$9!#e(B

Matrix::Scalar e$B$NDj5A$Ke(B 3 e$B$D$\*$+$7$$$H$3$m$r8+$D$1$^$7$?!#e(B  
nodoc e$B$J%/%i%9$G$9$,!"$I$l$bC1=c$JLdBj$@$H;W$&$N$GJs9p$7$^$9!#e(B

e$B!{e(B WrongArgType e$B$,L$Dj5Ae(B  
$ ./ruby -rmatrix -e ‘Matrix[[0]].coerce(1).first + Matrix[[0]]’  
/home/mame/work/ruby/lib/matrix.rb:979:in `+': uninitialized constant Matrix::Scalar::WrongArgType (NameError) from -e:1:in`’

e$B$?$@$NDj5AK:$l$@$H;W$$$^$9!#e(B

e$B!{e(B Matrix#powered\_by e$B$,L$Dj5Ae(B  
$ ./ruby -rmatrix -e ‘2 \*\* Matrix[[1]]’  
/home/mame/work/ruby/lib/matrix.rb:1032:in `**': undefined method`powered\_by’ for Matrix[[1]]:Matrix (NoMethodError)  
from -e:1:in `**' from -e:1:in`’

e$B$=$b$=$be(B 2 \*\* Matrix[[1]]  
e$B$K0UL#$O$J$$$H;W$&$N$G!"e(BMatrix::Scalar#\*\* e$B$Oe(B  
e$B0z?t$,e(B Matrix e$B$@$C$?$iNc30$K$9$Y$-$G$O$J$$$G$7$g$&$+!#e(B

e$B!{e(B when Numeric e$B$N8e$Ke(B when Scalar e$B$,$"$ke(B  
Scalar e$B$Oe(B Numeric e$B$N%5%V%/%i%9$J$N$G!"e(Bwhen Scalar  
e$B$O\<B9T$5$l$^$;$s!#e(B  
e$B$b$7\<B9T$5$l$k$h$&$K$J$C$?$H$7$F$b!“e(Bother.value  
e$B$H$$$&5-=R$,$”$j!"e(B  
Scalar e$B$Oe(B value e$B$H$$$&%a%=%C%I$rDs6!$7$F$$$J$$$N$Ge(B  
NoMethodError e$B$K$J$ke(B  
e$B$H;W$$$^$9!#e(B

— a/lib/matrix.rb  
+++ b/lib/matrix.rb  
@@ -27,6 +27,7 @@ module ExceptionForMatrix # :nodoc:  
def\_exception(“ErrDimensionMismatch”, “#{self.name} dimension  
mismatch”)  
def\_exception(“ErrNotRegular”, “Not Regular Matrix”)  
def\_exception(“ErrOperationNotDefined”, “This operation(%s) can\'t  
defined”)

- def\_exception(“WrongArgType”, “wrong argument type %s (expected %s)”)  
end

# 

@@ -977,8 +978,6 @@ class Matrix  
Scalar.new(@value + other)  
when Vector, Matrix  
Scalar.Raise WrongArgType, other.class, “Numeric or Scalar”

- 

```
 when Scalar

```

- 

```
   Scalar.new(@value + other.value)
 else
   x, y = other.coerce(self)
   x + y

```

@@ -991,8 +990,6 @@ class Matrix  
Scalar.new(@value - other)  
when Vector, Matrix  
Scalar.Raise WrongArgType, other.class, “Numeric or Scalar”

- 

```
 when Scalar

```

- 

```
   Scalar.new(@value - other.value)
 else
   x, y = other.coerce(self)
   x - y

```

@@ -1029,10 +1026,8 @@ class Matrix  
case other  
when Numeric  
Scalar.new(@value \*\* other)

- 

```
 when Vector

```

- 

```
   Scalar.Raise WrongArgType, other.class, "Numeric or Scalar or 

```

Matrix"

- 

```
 when Matrix

```

- 

```
   other.powered_by(self)

```

- 

```
 when Vector, Matrix

```

- 

```
   Scalar.Raise WrongArgType, other.class, "Numeric or Scalar"
 else
   x, y = other.coerce(self)
   x ** y
```

---

<div class="post-metadata">

**Author:** ![Yusuke\_ENDOH](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/c89c15/32.png) [@Yusuke\_ENDOH](https://www.ruby-forum.com/u/Yusuke_ENDOH)\
**Post date:** [January 27, 2010, 9:28am UTC](https://www.ruby-forum.com/t/three-bugs-of-matrix-scalar/182242/2 "2010-01-27T09:28:33Z")

</div>

e$B$1$$$8$e!w$$$7$D$+$G$9e(B.

In [ruby-dev:40149] the message: “[ruby-dev:40149] three bugs of  
Matrix::Scalar”, on Jan/26 00:21(JST) Yusuke ENDOH writes:

> ```
> from -e:1:in `<main>'
> 
> ```
> 
> e$B$?$@$NDj5AK:$l$@$H;W$$$^$9!#e(B

e$BN;2re(B. e$B$=$NDL$j$G$9e(B

> e$B!{e(B Matrix#powered\_by e$B$,L$Dj5Ae(B  
> $ ./ruby -rmatrix -e ‘2 \*\* Matrix[[1]]’  
> /home/mame/work/ruby/lib/matrix.rb:1032:in `**': undefined method`powered\_by’ for Matrix[[1]]:Matrix (NoMethodError)  
> from -e:1:in `**' from -e:1:in`’
> 
> e$B$=$b$=$be(B 2 \*\* Matrix[[1]] e$B$K0UL#$O$J$$$H;W$&$N$G!"e(BMatrix::Scalar#\*\* e$B$Oe(B  
> e$B0z?t$,e(B Matrix e$B$@$C$?$iNc30$K$9$Y$-$G$O$J$$$G$7$g$&$+!#e(B

exp(M) e$B$,Dj5A$G$-$k$N$Ge(B, 2\*\*Me$B$bDj5A$G$-$k$H;W$$$^$9$,e(B?  
e$B$?$@e(B, e$B\<B:]$K7We(B  
e$B;;$9$k$H$J$k$H$+$J$jLLE]$Ge(B, e$B:#$Ne(B matrix.rb  
e$B$K$O2Y$,=E$$$G$9$,e(B…

e$B$H$$$&$3$H$Ge(B, e$BNc30$rJQ$($k$J$ie(B NoImplimentError e$B$H$+e(B?

> e$B!{e(B when Numeric e$B$N8e$Ke(B when Scalar e$B$,$"$ke(B  
> Scalar e$B$Oe(B Numeric e$B$N%5%V%/%i%9$J$N$G!"e(Bwhen Scalar e$B$O\<B9T$5$l$^$;$s!#e(B  
> e$B$b$7\<B9T$5$l$k$h$&$K$J$C$?$H$7$F$b!“e(Bother.value e$B$H$$$&5-=R$,$”$j!"e(B  
> Scalar e$B$Oe(B value e$B$H$$$&%a%=%C%I$rDs6!$7$F$$$J$$$N$Ge(B NoMethodError e$B$K$J$ke(B  
> e$B$H;W$$$^$9!#e(B

e$B$&!\<$se(B. e$B3N$+$K$=$N$H$\*$j$@$H;W$$$^$9e(B.

\_\_  
----------------------------------------------------\>\> e$B@PDMe(B  
e$B7=\<ye(B \<\<—  
----------------------------------\>\> e-mail: removed\_email\_address@domain.invalid \<\<—
