2021年4月27日火曜日

1のべき根を計算してみる (Root of unity) — D 言語篇

 rosettacode.org からコードをコピーして実行してみる。

 $ dmd roots_of_unity.d

$ ./roots_of_unity

#1: [1.000+0.000i]

#2: [-1.000-0.000i, 1.000+0.000i]

#3: [-0.500+0.866i, -0.500-0.866i, 1.000+0.000i]

#4: [-0.000+1.000i, -1.000-0.000i, 0.000-1.000i, 1.000+0.000i]

#5: [0.309+0.951i, -0.809+0.588i, -0.809-0.588i, 0.309-0.951i, 1.000+0.000i]

#6: [0.500+0.866i, -0.500+0.866i, -1.000-0.000i, -0.500-0.866i, 0.500-0.866i, 1.000+0.000i]

#7: [0.623+0.782i, -0.223+0.975i, -0.901+0.434i, -0.901-0.434i, -0.223-0.975i, 0.623-0.782i, 1.000+0.000i]

#8: [0.707+0.707i, -0.000+1.000i, -0.707+0.707i, -1.000-0.000i, -0.707-0.707i, 0.000-1.000i, 0.707-0.707i, 1.000+0.000i]


std.range を import して iota を利用し、

auto nthRoots(in int n)  pure nothrow {

   return n.iota.map!(k => expi(PI * 2 * (k+1)/n));

}

で計算する。

https://en.wikipedia.org/wiki/Root_of_unity  にあるは、上の #5 である。





0 件のコメント:

コメントを投稿

ジェームズ・エルロイの L.A. Quartet シリーズを読みはじめようと計画

 きっかけは『ホワイト・ジャズ』に興味を持ったのがきっかけですが、 注文しようとしたら、日本語訳はほとんど絶版のようになっていて、 キンドルでサンプルを読みはじめると、スラスラ読めるようなものでは無い ことがわかって逆に紙のペーパーバックスでシリーズを注文しようとすると L.A....