虚数部分の取り出し

虚数の実数部分と虚数部分の取り出しには+.(プラスドット)という動詞を使います。+.yとすると、引数yの実数部分(real part)と虚数部分(imaginary part)の2項目からなるリストを返します。たとえば、+3j5は3 5ですし、+.3は3 0です。

二項動詞としては、x+.yはxとyの最大公約数(gcd: greatest common divisor)を返します。引数xとyがブール型(0または1)の場合は、+.と*.は論理演算子としてorとandの機能になります。関数-.(マイナスドット)もブール演算子としてはnotの機能になります。

   ]y=: i+2*j. i=: i.4
0 1j2 2j4 3j6
   +. y
0 0
1 2
2 4
3 6

引数xとyが最大公約数をもつ場合、最大公約数でxとyを割ると、1以外の共通の約数を持たない結果が得られます。すなわち最大公約数が1となります。さらに、xをyで割った結果のx%yの約分された形でもあります。

   x=: 24 [ y=: 60
   x;y;(x +. y);( (x , y) % (x +. y))
 +--+--+--+---+
 |24|60|12|2 5|
 +--+--+--+---+

   lff=: , % +.       NB.約分後の分数
   x;y;(x lff y);(%/x lff y);(%/x,y);(+./x lff y)
 +--+--+---+---+---+-+
 |24|60|2 5|0.4|0.4|1|
 +--+--+---+---+---+-+

関数=|(負でない数であることの確認)や関数=<.(整数であることの確認)の結果はブール型なので、フレーズ(=|)+.(=<.)は負でない数であるか、もしくは整数であるかというテストの結果を返す。

   (test=: (=|) +. (=<.)) _2 _2.4 3 3.5
1 0 1 1

下記の例では、orとandの相対性を示している。

   d (+./ ; *.&.-./ ; *./ ; +.&.-./) d=: 0 1
 +---+---+---+---+
 |0 1|0 1|0 0|0 0|
 |1 1|1 1|0 1|0 1|
 +---+---+---+---+