ベクトル演算
ここでは、配列同士の演算である、ベクトル演算を扱います。
ベクトル演算
ベクトル演算とは、大量の値に対して、同じ処理規則を適用するような演算のことです。 これに対し、1 つずつの値に対する演算をスカラ演算と呼びます。
VCSSL では、配列変数同士の演算において、全要素に同じ演算を行うベクトル演算をサポートしています。
ベクトル演算を行うには、原則として、式の中にある全配列変数の次元と要素数が等しい必要があります。 ただし代入(=)では要素数が異なっても構いません。 また、式には配列でない変数を含ませる事も可能で、その場合、配列でない変数は、 要素が全て等しい配列変数と同様に扱われます。
ベクトル演算子
VCSSL では、以下のようなベクトル演算子がサポートされています:
記号 | 意味 | 扱える型 | 詳細 |
---|---|---|---|
= | ベクトル 代入演算 |
全ての型 | 右の配列の中身を、左の配列に代入します。代入後の左辺の要素数は、右辺と同じになります。 |
+ | ベクトル 加算 |
int, float, complex, varint, varfloat, varcomplex, string |
右の配列の中身と、左の配列の中身を、同じインデックスのもの同士で全て加算します。配列の次元と要素数が異なる場合には使用できません。 |
- | ベクトル 減算 |
int, float, complex, varint, varfloat, varcomplex |
ベクトル加算が減算になったものです。 |
* | ベクトル 乗算 |
int, float, complex, varint, varfloat, varcomplex |
ベクトル加算が乗算になったものです。 |
/ | ベクトル 除算 |
int, float, complex, varint, varfloat, varcomplex |
ベクトル加算が除算になったものです。 |
% | ベクトル 剰余算 |
int, varint |
ベクトル加算が剰余算になったものです。 |
** | ベクトル 指数 |
float, varfloat |
ベクトル加算が指数演算になったものです。 |
ベクトル加算を行う
実際に、ベクトル加算を行ってみましょう:
- 実行結果 -
これを実行すると 30 が表示されます。少し長いプログラムなので、処理内容を追ってみましょう。
まず、要素数が11 個の配列a,b が用意され、そしてa の中には1 から10 までの整数の2 乗が代入され、 b の中には1 から10 までの整数がそのまま代入されます。 続いて、要素数が11 個の配列c が用意されます。
続いて「 c = a + b 」というベクトル加算が実行され、これにより、c の中身には、
c[1] = a[1] + b[1] ;
…
c[10] = a[10] + b[10] ;
という内容が代入されます。
そしてc[5]を出力する関数が呼ばれ、プログラムが終了します。
c[5]には5*5+5 が入っているはずですから、確かに30 という値は正しいものです。 つまり、正常にベクトル演算が実行できた事がわかります。