[#35688] サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ? — Onodera Takafumi <onodera-tak@...>
9 messages
2002/08/01
[#35689] Re: サブクラスのオブジェクト生成時に、スーパークラスの初期化を行うには ?
— "Shin'ya Adzumi" <adzumi@...>
2002/08/01
あづみです。
[#35690] Ruby/SDL がうまく動きません — Mitsuhiko_Tomomi <mikkun_ota@...>
earthseaと申します。
4 messages
2002/08/01
[#35722] パターンマッチした値を保持する変数は — goto@...
後藤です。
8 messages
2002/08/08
[#35729] SMTP サーバクラス — とみたまさひろ <tommy@...>
とみたです。
5 messages
2002/08/08
[#35743] FortranArray, yet another handler of array — NISHIMATSU Takeshi <t-nissie@...>
西松と申します.
4 messages
2002/08/12
[#35745] Ruby vs. Expect — T_A_K_E <koichi.takehara@...>
たけはらと申します。
5 messages
2002/08/12
[#35754] [ANN] SWIG 1.3.14 リリース — Shibukawa Yoshiki <yoshiki@...>
渋川@SWIGコアメンバーです。
4 messages
2002/08/13
[#35759] Bignum fast multiplication — IKEGAMI Daisuke <daisu-ik@...>
いけがみです。
9 messages
2002/08/14
[#35772] Unsecure world writeable dirの警告 — "井上 浩一" <kyoui32@...>
井上です。
31 messages
2002/08/26
[#35774] Re: Unsecure world writeable dir の警告
— matz@... (Yukihiro Matsumoto)
2002/08/26
まつもと ゆきひろです
[#35775] Re: Unsecure world writeabledir の警告
— nobu.nakada@...
2002/08/26
なかだです。
[#35776] Re: Unsecure world writeabledir の警告
— matz@... (Yukihiro Matsumoto)
2002/08/26
まつもと ゆきひろです
[#35778] Re: Unsecure world writeabledir の警告
— nobu.nakada@...
2002/08/26
なかだです。
[#35779] Re: Unsecure world writeabledir の警告
— WATANABE Hirofumi <eban@...>
2002/08/26
わたなべです。
[#35780] Re: Unsecure world writeabledir の警告
— nobu.nakada@...
2002/08/26
なかだです。
[#35784] Re: Unsecure world writeabledir の警告
— "U.Nakamura" <usa@...>
2002/08/26
こんにちは、なかむら(う)です。
[#35854] Re: Unsecure world writeabledir の警告
— "Inoue" <rubyist@...1.117.ne.jp>
2002/09/04
井上です。
[#35865] Re: Unsecure world writeabledir の警告
— Koji Arai <JCA02266@...>
2002/09/05
新井です。
[#35866] Re: Unsecure world writeabledir の警告
— matz@... (Yukihiro Matsumoto)
2002/09/06
まつもと ゆきひろです
[#35867] Re: Unsecure world writeabledir の警告
— "NAKAMURA, Hiroshi" <nakahiro@...>
2002/09/06
なひです。
[#35870] Re: Unsecure world writeabledir の警告
— Koji Arai <JCA02266@...>
2002/09/06
新井です。
[#35789] multipart な CGI を速くしたい — Takashi Kanai <kanai@...4u.or.jp>
Windows上でRubyとMySQLを使ってショッピングサイトのようなものを作って
17 messages
2002/08/28
[#35790] Re: multipart な CGI を速くしたい
— "U.Nakamura" <usa@...>
2002/08/28
こんにちは、なかむら(う)です。
[ruby-list:35743] FortranArray, yet another handler of array
From:
NISHIMATSU Takeshi <t-nissie@...>
Date:
2002-08-12 10:48:57 UTC
List:
ruby-list #35743
西松と申します.
Fortran型の配列をRubyで扱うための拡張ライブラリとして
FortranArrayと名付けたものを書きはじめました.
下に README-jp.rd を添付しました.
tar-ballを
http://www-lab.imr.tohoku.ac.jp/~t-nissie/computer/software/FortranArray/README-jp.html
http://www-lab.imr.tohoku.ac.jp/~t-nissie/computer/software/FortranArray/FortranArray-0.00.23.tar.gz
に置きました.
% ls -l FortranArray-0.00.23.tar.gz
-rw-r--r-- 1 t-nissie kawazoe 22014 Aug 12 19:30 FortranArray-0.00.23.tar.gz
% md5sum FortranArray-0.00.23.tar.gz
52838c8f68354e4edf4c62da46007dec FortranArray-0.00.23.tar.gz
まだ実装していない機能が多いのですが, このままぼく一人
で書き進むのがちょっと不安なので, 皆様のご意見, 感想,
誤りの指摘などをいただければ幸いです. よろしくお願いし
ます.
=begin
= README before using Ruby/FortranArray (Japanese version)
Ruby/FortranArrayはFortran型の配列をRubyで扱うための
拡張ライブラリです.
== Ruby/FortranArrayの特徴
* 要素は倍精度実数または倍精度複素数に限定 (@kind = 'D' or 'Z').
* メモリに要素がFortranと同じ順序で並ぶ.
* デフォルトでインデックスが1から始まる.
* 要素のアクセス方法 (例: 二次元配列 mat_A[i,j]) は Fortran (A(i,j)) や
数学の行列の添字 (A_{ij}) と同じ.
* Rangeを使ってインデックスの範囲を任意に指定可能. 0や負の値から始める
こともできる.
* 自然な部分配列の参照 (手抜きともいう).
* 部分配列の参照方法のせいでコストはかかるが mat_A[j][i] という
要素のアクセスも可能.
* BLAS (dgemv, gemv, symv, zsymvのみ実装済), LAPACK (未実装) への自然な
インタフェース.
* BLAS, LAPACK の Matrix type (@matrix_type = 'GE', 'SY', 'HE', 'TR',
'GB', 'SB', 'HB', 'TB', 'SP', 'HP', 'TP'), UPLO (@uplo = 'UPPER' or
'LOWER'), DIAG (@diag = 'NON-UNIT' or 'UNIT'), band width (@band_width,
@band_width_u) を属性として持つので, あるメソッドから呼ばれる BLAS,
LAPACK のサブルーチンがある程度自動的に選択される.
* FFT. 数種のOSに付属の科学計算ライブラリの FFT subroutine を共通の
メソッドでラップ (未実装).
* Rubyで高速な数値計算が可能.
* logical dimension (ld) を指定できるので, 基数2のアルゴリズムで
発生しがちなキャッシュミス, バンクコンフリクト等による低速化を
回避できる (アホくさいけどかなり切実).
* Matrix type や ld は一度指定してしまえば忘れることができる.
* RubyUnitで書かれたtestcaseを使ってTestをしながら開発が可能.
== Ruby/FortranArrayの欠点かもしれないこと
* +,-,*,/,%,** 等の演算子を定義していない.
== NArrayとの比較
NArray ((<[NArray]>)) はRubyの拡張ライブラリで, 強力な多次元((*数値*))配列クラス
を提供している. 西松はNArrayのソースコードを見ながらFortranArrayを書いた.
NArrayとFortranArrayとを比較すると:
* NArrayは 1,2,4 byte 整数, 単/倍 精度 実数/複素数, およびRubyオブジェクトを
要素に持つことができる. FortranArrayは倍精度実数または倍精度複素数のみ.
* NArrayのインデックスは常に0から始まる. FortranArrayは任意.
* NArrayではNArrayのサブクラスとして行列 (NMatrix), ベクトル (NVector) が
定義されている. FortranArrayでは特に区別しない.
* 数学の行列: A_{ij} → NArray: mat_A[j-1, i-1], FortranArray: mat_A[i,j]
(であっていると思う).
* NArrayには強力な部分配列機能がある. FortranArrayのは手抜き.
== 入手方法
Please download a tar-ball from:
((<URL:http://www-lab.imr.tohoku.ac.jp/%7Et-nissie/computer/software/FortranArray/>))
== インストール方法
$ ruby install.rb config
$ ruby install.rb setup
# ruby install.rb install
== テストして動作を確認したOS
:GNU/Linux
Turbolinux 6.0 Workstation, ruby 1.6.6 (2001-12-26) [i686-linux], FortranArray-0.00.23
:sgi IRIX64
IRIX 6.5, ruby 1.6.7 (2002-03-01) [mips-irix6.5], FortranArray-0.00.23
:IBM AIX
AIX+ESSL, ruby 1.6.6 (2001-12-26) [powerpc-aix4.3.3.0], FortranArray-0.00.23
== 作者
西松 毅 ((<URL:mailto:t-nissie@imr.tohoku.ac.jp>))
== 書いた日
2002,08,12
== FortranArrayクラスメソッド
--- FortranArray.new(ndim,range[0], ... , range[ndim-1],ld[0], ... , ld[ndim-1],kind='D', matrix_type='GE', uplo='UP', diag='NON-UNIT', band_width, band_width_u)
新しいFortranArrayを作る.
:ndim
配列の次元.
:range[i]
範囲. 整数 n が指定された場合は 1..n と等価.
:ld[i]
logical dimension. 整数 n が指定された場合は 1..n と等価.
省略時は ld[i]==range[i] になる.
:kind
'D' - double precision (default value)
'Z' - complex double
:matrix_type
'GE', 'SY', 'HE', 'TR', 'GB', 'SB', 'HB', 'TB', 'SP', 'HP', 'TP'
:uplo
'UPPER' - upper triangular (はじめの2文字だけを見るので'UP'と省略可)
'LOWER' - lower triangular (はじめの2文字だけを見るので'LO'と省略可)
general matrix のときは意味を持たない.
:diag
'NON-UNIT' - NOT unit triangular matrix
'UNIT' - unit triangular matrix
triangular matrix のときにのみ意味を持つ.
:band_width
整数で指定できるldと区別するためにband_widthを指定する場合は
その前に必ず文字列の引数を置くこと.
matrix_type が 'GB' (General Band) のときはlowerのband_width.
:band_width_u
upperのband_width. matrix_type が 'GB' (General Band) のとき指定.
== FortranArrayインスタンスメソッド:
--- FortranArray#ndim
@ndim の reader.
--- FortranArray#range
@range の reader.
--- FortranArray#ld
@ld の reader.
--- FortranArray#kind
@kind の reader. 'D' か 'Z' のどちらかを返す.
--- FortranArray#matrix_type
@matrix_type の reader.
'GE', 'SY', 'HE', 'TR', 'GB', 'SB', 'HB', 'TB', 'SP', 'HP', 'TP' のどれかを返す.
--- FortranArray#uplo
@uplo の reader. 'UPPER' か 'LOWER' のどちらかを返す.
--- FortranArray#set_all(x)
配列の要素すべてを x にする.
x は倍精度実数か倍精度複素数に変換されて用いられる.
@rangeの中の要素だけでなく, @ldの中の要素すべてが
x になる (その方がコーディングが楽だったから) .
--- FortranArray#[]
reference or partial array.
@ndimより少ない数のFixnumのインデックスで指定した部分配列は
「親の配列」の要素をそのまま参照している. そのため, この部分
配列を書き換えると「親の配列」も変わる.
Partial array assigned by Ranges is not implemented yet.
こっちはクローンを作る予定.
--- FortranArray#[]=
代入.
@kind='Z' な FortranArray に Float, Fixnum, Bignum などを代入
することは可能. 虚部は0になる.
@kind='D' な FortranArray に Complex を代入しようとすると TypeError
になる.
--- FortranArray#set_all(all_value)
--- FortranArray#data(val1, val2, ...)
各要素に val1, val2, ... を代入.
--- FortranArray#to_s(with_attr=TRUE, format, fd)
FortranArrayをFortran風に書き出す.
第一引数がFALSEの場合は属性 (@ndim, @range, @ld, @kind, @matrix_type,
@uplo, @diag, @band_width, @band_width_u) を書かない.
formatが指定されたらそれが用いられる.
fd が指定されたならそこに書き出す (未実装).
FortranArrayがデカくてStringのためのメモリ領域を確保できない
ときなどに使う.
こfd が指定された時の戻り値は不定?????
--- FortranArray#clone
(未実装)
--- FortranArray#gemv(mat_A, x, alpha=(1.0, 0.0), beta=(0.0, 0.0), trans='N', incx=1, incy=1, m = mat_A.range[0].length, n = mat_A.range[1].length, lda = mat_A.ld[0].length)
incx, incy の方が m, n, lda より設定する機会が多そうだから前にした.
BLASのdgemvまたはzgemvを呼ぶ.
--- FortranArray#symv(mat_A, x, alpha=(1.0, 0.0), beta=(0.0, 0.0), uplo=mat_A.uplo, incx=1, incy=1, n = mat_A.range[0].length, lda = mat_A.ld[0].length)
BLASのdsymvまたはzsymvを呼ぶ.
== 参考文献
:[NArray]
Masahiro TANAKA: ((<"NArray"|URL:http://www.ir.isas.ac.jp/~masa/ruby/>))
:[BLAS]
((<URL:http://www.netlib.org/blas/>))
:[LAPACK]
((<URL:http://www.netlib.org/lapack/>))
=end
--
love && peace && free_software
NISHIMATSU Takeshi t-nissie@imr.edu OR t-nissie@imr.tohoku.ac.jp
西松 毅