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

[dennou-ruby:002684] Re: bug in GPhys.each_along_dims



西澤さま

下記、対処して cvs commit しました。
(テストはしてますが、不具合ありましたらお知らせください。)


> 西澤です。
> 
> GPhys.each_along_dims
> で、
> 渡すGPhys が NArrayMiss を持っている(?)場合、
> 
> /usr/lib/ruby/1.8/numru/gphys/varray.rb:543:in `[]=': NArrayMiss#to_f
> should return Float (TypeError)
>        from /usr/lib/ruby/1.8/numru/gphys/varray.rb:543:in `[]='
>        from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:569:in `[]='
>        from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:894:in `each_along_dims'
>        from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:892:in `each_along_dims'
>        from /usr/lib/ruby/1.8/numru/gphys/gphys.rb:868:in `each_along_dims'
> 
> というエラーになります。
> 
> 
> gphys/gphys/rb の
>     888                 vary = VArray.new( NArray.new(rs.ntype,
> *grid.shape), rs.data )
> で NArray をつくっているので
> an_instans_of_NArray[hoge] = an_insans_of_NArrayMiss
> ということになっているのだと思われます。
> gphyes[0][*([0..0]*gphyses[0].rank)].val.class.new()
> とかするんでしょうか(あってるかな?)。
> 
> 
> あと、
>     816         if loopdims.length == 0
>     817           raise ArgumentError, "No loop dimension is specified "+
>     818             " -- In that case, you don't need this iterator."
>     819         end
> となっていて、第2引数の配列の長さが0のときは、
> 確かにこのメソッドをよぶ意味は無いのですが、
> 例外をあげるのではなく、
> return yield(gphyses)
> となっていると(あってるかな?)、
> 動的にスクリプトを生成する際に、loopdimsの長さが0でも期待したものが返って来るのでうれしいです。
> 
> 
> 
> -- 
> Seiya Nishizawa
> Research Institute for Mathematical Sciences, Kyoto University
> Oiwake-cho Kitarakawa Sakyo-ku Kyoto, Japan, 606-8502
> Tel: +81-75-753-7252
> Fax: +81-75-753-7272
> 

堀之内 武                      horinout@xxxxxxxxxxxxxxxxxx
京都大学生存圏研究所                 611-0011 宇治市五ヶ庄