Perlテックブログ

ITエンジニアの成長意欲を刺激する技術考察、モジュール開発の日記。Perlイベントや国内や海外のPerlの記事の紹介。

複素数と複素数の配列 - SPVM開発日記

f:id:perlcodesample:20180718071305p:plain

SPVMで次に実装するのは、複素数を簡単に記述できる関数。現在、複素数複素数の配列は次のように表現できる。

たとえば、doubleの複素数の場合。

# 複素数
my $z1 = new SPVM::Complex_d2;
$z1->{re} = 0.25;
$z1->{im} = 1.5;

doubleの複素数の配列の場合。

my $z_array = new SPVM::Complex_d2[100];
$z_array->[20]{re} = 0.25;
$z_array->[20]{im} = 0.5;

この配列は、参照を要素に持っているのではなくって、連続したdouble型のデータで表現される。100個の複素数の場合は「doubleが二つ」が100個だから

# 1600バイト
sizeof(double) * 2 * 100

で、表現できる。

シンタックスシュガーのための関数

もう少し簡単に書けると便利だ。シンタックスシュガーとして、次のような関数を実装する予定。

# 複素数
my $z1 = new_dcomplex(0.25, 1.5);

# 複素数の配列
my $z_array = new_dcomplex_array([(0.25, 14), (2.5, 6.3), (1.6, 5.3)]);

型を記述しなくっても、型推論で、自動的に型を決定してくれる。関数を使って記述すると、完全にPerl互換のシンタックスとなるね。