APL/J言語:共役(conjugate)

J言語で+(プラス)を単項動詞として使うと引数の共役(きょうやく、conjugate)を返します。
複素数yは共役を掛けるとyの絶対値の二乗になります。

   ]y=:3j4  NB.複素数
3j4
   |y       NB.絶対値
5
   y * +y   NB.yとyの共役を掛ける
25
   +y
3j_4
   3j4 * +3j4
25
   3j4 * 3j_4
25

また、J言語には、j.(ジェイドット)という動詞があります。これは単項動詞で引数にマイナス1のルート(\sqrt{-1}=>0j1)を掛けるものです。

   ]i=:i.5
0 1 2 3 4
   j. i
0 0j1 0j2 0j3 0j4
   0j1 * i.5
0 0j1 0j2 0j3 0j4
   ]y=: i + 2 * j. i
0 1j2 2j4 3j6 4j8
   +y
0 1j_2 2j_4 3j_6 4j_8
   y * +y
0 5 20 45 80
   %: y * +y
0 2.23607 4.47214 6.7082 8.94427
   |y
0 2.23607 4.47214 6.7082 8.94427

yの共役は(|y*y)%yと表現することもできる。

   (|y*y)%y
0 1j_2 2j_4 3j_6 4j_8
 

以上