[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:002347] Re: NArrayMiss



堀之内様

以下、直してCVSにアップしました。

西澤

On Thu, 16 Jun 2005 23:00:14 +0900
Takeshi Horinouchi <horinout@xxxxxxxxxxxxxxxxxx> wrote:

> 西澤さま
> 
> 竹広さんとのやりとりとは独立なんですが,
> NArrayMiss に関しちょっと気づいた点がありまして,
> 以下お願いできないでしょうか.
> 
> * to_nam / to_nam_no_dup で NArray かどうかの判断を
>   class == NArray でなく,is_a? 関係でやって欲しいです.
>   NArray には NMatrix とか NArrayScalar などのサブクラスが
>   あるので.たぶん,サブクラスでも問題ないことが多いんでは?
>   この件は,簡単なので現在のcvs版に対するパッチを末尾につけます.
> 
> * 長さの違う NArrayMiss どうしの2項演算第一項めのほうが短い場合
>   うまく行きません.ちょっとみたのですが,どうすればいいか良く分
>   からなかったので,すみませんが対応して頂けると嬉しいです.以下,
>   例です(cvs版利用).
> 
> % irb --simple-prompt
> >> require "narray_miss"
> => true
> >> na = NArray.sfloat(2,1).indgen!(10,10)
> => NArray.sfloat(2,1): 
> [ [ 10.0, 20.0 ] ]
> >> nb = NArray.sfloat(2,2).indgen!
> => NArray.sfloat(2,2): 
> [ [ 0.0, 1.0 ], 
>   [ 2.0, 3.0 ] ]
> >> na+nb
> => NArray.sfloat(2,2): 
> [ [ 10.0, 21.0 ], 
>   [ 12.0, 23.0 ] ]
> >> nb+na
> => NArray.sfloat(2,2): 
> [ [ 10.0, 21.0 ], 
>   [ 12.0, 23.0 ] ]
> >> nam = NArrayMiss.to_nam(na)
> => NArrayMiss.sfloat(2,1):
> [ [ 10.0, 20.0 ] ]
> >> nbm = NArrayMiss.to_nam(nb)
>   => NArrayMiss.sfloat(2,2):
> [ [ 0.0, 1.0 ], 
> [ 2.0, 3.0 ] ]
> >> nbm+nam
>   => NArrayMiss.sfloat(2,2):
> [ [ 10.0, 21.0 ], 
> [ 12.0, 23.0 ] ]
> >> nam+nbm
> TypeError: self.size(=4) != mask.size(=2)
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `[]='
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `set_without_validation'
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:1321:in `routine2'
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:394:in `+'
>         from (irb):9
> >> nc = NArray.sfloat(1).fill!(100)
> => NArray.sfloat(1): 
> [ 100.0 ]
> >> ncm = NArrayMiss.to_nam(nc)
> => NArrayMiss.sfloat(1):
> [ 100.0 ]
> >> nc + nb
> => NArray.sfloat(2,2): 
> [ [ 100.0, 101.0 ], 
>   [ 102.0, 103.0 ] ]
> >> ncm + nbm
> TypeError: self.size(=4) != mask.size(=1)
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `[]='
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:303:in `set_without_validation'
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:1321:in `routine2'
>         from /usr/local/lib/ruby/site_ruby/1.8/narray_miss.rb:394:in `+'
>         from (irb):8
> 
> # しかし,なんでタイプエラー?
> 
> 毎度すみませんが,よろしくお願い致します.
> 
> 堀之内
> 
> ---- diff -u narray_miss.rb~ narray_miss.rb で作ったパッチ (ここから)----
> --- narray_miss.rb~     Thu May 26 15:14:47 2005
> +++ narray_miss.rb      Thu Jun 16 22:17:09 2005
> @@ -167,7 +167,7 @@
>      array = arg[0]
>      if Numeric===array then array = NArray[array] end
>      if array.class == Array then array = NArray.to_na(array) end
> -    if array.class != NArray then
> +    if !array.is_a?(NArray) then
>        raise("argument must be Numeric, NArray or Array")
>      end
>  
> @@ -195,7 +195,7 @@
>      __new__(array,mask)
>    end
>    def self.to_nam(*arg)
> -    if !(Numeric===arg[0]) && arg[0].class!=Array && arg[0].class!=NArray
> +    if !(Numeric===arg[0]) && arg[0].class!=Array && !arg[0].is_a?(NArray)
>        raise "first argument must be Numeric, NArray or Array"
>      end
>      arg[0] = arg[0].dup if !(Numeric===arg[0])
> ---- diff -u narray_miss.rb~ narray_miss.rb で作ったパッチ (ここまで)----
> 
> 
> 
> 


--------------
Seiya Nishizawa
seiya@xxxxxxxxxxxxxxxxxx
GnuPG Fingerprint = 0696 D312 5737 929A B481 FC91 44F4 6BA0 467A 7703