@comment $OpenXM: OpenXM/src/asir-doc/int-parts/datatype/vect.texi,v 1.1 2001/04/23 05:45:37 noro Exp $ @section ベクトル @example struct oVECT @{ ベクトル short id; 識別子 (= O_VECT) short pad; pointer *body; 成分配列へのポインタ @} *VECT; @end example @noindent ベクトルは, 数学的な対象としてのベクトルとして用いられるほか, さまざまな object を成分に持つ一次元配列としても用いられる. 前者の場合, ベクトルどうし の和, 差, スカラー倍, 行列との積が基本演算として提供される. 行列との積を計算する場合, 行列を左からかける場合には, ベクトルは列ベクトル, 右からかける場合には行ベクトルと見なされる. @subsection ベクトルの生成 @example #include "ca.h" MKVECT(m,l) (macro; VECT m; int l) 長さ l のベクトル m を生成する. @end example @subsection 四則 @example #include "ca.h" void addvect(VL vl,VECT a,VECT b,VECT *rp) *rp = a + b void subvect(VL vl,VECT a,VECT b,VECT *rp) *rp = a - b void mulvect(VL vl,Obj a,Obj b,Obj *rp) *rp = a * b (一方がスカラーすなわち数, 多項式または有理数の場合のスカラー倍) void divvect(VL vl,Obj a,Obj b,Obj *rp) *rp = a / b (スカラー b による 1/b 倍) int compvect(VL vl,P a,Q e) 以下で述べる順序で比較. @end example @noindent ベクトルどうしの順序比較は以下による. @enumerate @item 長さが大きい方が順序が上. @item 長さが等しい場合, 成分どうしを先頭から比較. @end enumerate