From: gotoken / math.sci.hokudai.ac.jp (GOTO Kentaro)
Subject: [ruby-math:00086] Ruby/LAPACK working group
Date: Thu, 20 Jan 2000 23:38:38 +0900 (JST)

るびきちです。

> なんですよねえ ^^;; どうせ1000個ちょっとしかないから、人手が

1000もあるんだ・・・
すごっ。

> 一緒にやりましょうってひとはいますか?? 人数にもよりますけど
> 作業の分担ならぼくにもある程度は出来ますし、必要なら議論と作
> 業のために専用のメーリングリストも作成できます。

僕はまず卒論があるから、その後になるね。

> まず議論すべきことは Complex と Matrix の仕様だと思います。

Complex がなぁ。Matrix の仕様は添付しておこう。

> つまり現状をどれくらい引きずるかという点。それと、これやるな
> らSingleFloatは是非欲しいですよね。次にBLASのbindingあたりか
> らはじめるのが良いかと。

SingleFloat ってどういう目的で使うのかな??
僕的には後回しになってる。


s=""; [8257, 24930, 31074, 21024, 25205, 8313, 24936, 27491, 29285].each{|x| s << [x].pack ("s")}; print s+","
るびきち☆

=begin
= dmatrix.o
class DMatrix        要素が double な行列クラス
== Abstract
要素が倍精度浮動小数点数の行列クラス。
演算ルーチンに BLAS/LAPACK を使用。
libdmatrix という完全に C で書かれた独立した行列クラスの
 Ruby インターフェースである。

== Usage
=== DMatrix
==== Class Method on `DMatrix': [](* rows)
2次元配列から行列を作る。
指定方法は Matrix と同じく行の配列とする。
それぞれの行の配列は同じ長さでなくてはならない。

例えば、DMatrix[[1,2],[3,4]] は

/ 1 2 \
\ 3 4 /

である。

==== Class Method on `DMatrix': alloc(row, col)
row x col 行列の領域を確保する。
後から値を入れるために使える。

==== Class Method on `DMatrix': rand(row, col)
row x col なランダム要素の行列を作る。

==== Class Method on `DMatrix': scalar(dimension, alpha)
対角要素がすべて alpha な dimension 次元正方行列
(単位行列の alpha 倍)を作る。

==== Class Method on `DMatrix': unit(dimension)
==== Class Method on `DMatrix': I(dimension)
dimension 次元の単位行列を作る。

DMatrix.I(dimension) は、
DMatrix.scalar(1,dimension) と定義されている。

==== Class Method on `DMatrix': max(A,B)
行列 A, B のそれぞれの要素で大きい方を取った行列を作る。

==== Class Method on `DMatrix': min(A,B)
行列 A, B のそれぞれの要素で小さい方を取った行列を作る。

==== Class Method on `DMatrix': solve(A,B)
連立方程式 Ax = B の解 x を求める。
==== Class Method on `DMatrix': solve!(A,B)
連立方程式 Ax = B の解 x を求める。
A は LU 分解になる。

==== Method on `DMatrix': +(B)
==== Method on `DMatrix': plus!(B)
==== Method on `DMatrix': -(B)
==== Method on `DMatrix': minus!(B)
==== Method on `DMatrix': *(B)
==== Method on `DMatrix': mul!(B)
==== Method on `DMatrix': /(B)
==== Method on `DMatrix': div!(B)
行列の加減乗除。ただし、行列で割ることはサポートされていない。
! が付いたものは、 self が上書きされる。
行列はメモリを食うので、破壊的メソッドの存在意義がある。

==== Method on `DMatrix': clone
==== Method on 'DMatrix': dup
行列をコピーする。

==== Method on `DMatrix': dimension
次元情報を得る。[行サイズ, 列サイズ]の配列を返す。

==== Method on `DMatrix': [](i,j)
==== Method on `DMatrix': [](i)
==== Method on `DMatrix': [](j)
行列の要素 (i,j) の参照。
行列がベクトルのとき (つまり、行か列が大きさ1のとき)、
一方を省略できる。

==== Method on `DMatrix': []=(i,j,v)
==== Method on `DMatrix': []=(i,v)
==== Method on `DMatrix': []=(j,v)
行列の要素 (i,j) へ値を代入。
同じく、行列がベクトルのとき (つまり、行か列が大きさ1のとき)、
一方を省略できる。

==== Method on `DMatrix': inner_product(b)
self と b がベクトルのとき、内積を求める。

==== Method on `DMatrix': inv
逆行列。

==== Method on `DMatrix': maxabs
行列のすべての要素のうち、絶対値最大のものを返す。

==== Method on `DMatrix': norm1
1-norm。

==== Method on `DMatrix': normF
Frobenius-norm。

==== Method on `DMatrix': normI
∞-norm。

==== Method on `DMatrix': norm(kind=I)
ノルムを求める。デフォルトは∞-norm。
0, 'M', 'm' で maxabs。
1, '1', 'O', 'o' で 1-norm。
2, 'F', 'f', 'E', 'e' で Frobenius-norm。
その他を指定すると∞-norm。

==== Method on `DMatrix': abs
行列の絶対値。要素すべての絶対値をとったもの。

==== Method on 'DMatrix': inspect
==== Method on 'DMatrix': to_s
行列の文字列表現を得る。 print で表示するときに、これが呼ばれる。

==== Method on `DMatrix': to_a
行列を2次元配列に変換。

==== Method on `DMatrix': to_m
DMatrix を Matrix クラスへ変換。

=== HDVector, VDVector
横ベクトルと縦ベクトル。 DMatrix の下位クラス。

==== Class Method on `HDVector': [](elms)
==== Class Method on `VDVector': [](elms)
1次元配列からベクトルを作る。

==== Class Method on `HDVector': alloc(n)
==== Class Method on `VDVector': alloc(n)
n 次元ベクトルの領域を確保。

==== Class Method on `HDVector': rand(n)
==== Class Method on `VDVector': rand(n)
n 次元のランダム要素なベクトルを作る。

==== Method on `HDVector': [](j)
==== Method on `VDVector': [](i)
ベクトルの要素の参照。

==== Method on `HDVector': []=(j,v)
==== Method on `VDVector': []=(i,v)
ベクトルの要素の代入。

=== dmatrix-util.rb
これを使うと DMatrix を M で、
HDVector を HV で、 VDVector を VV でアクセスできるようになる。

=== libdmatrix
C の行列ライブラリ。エラーチェックはしていない。