Tclで多倍長演算

高木です。おはようございます。

昨日は、GCC 7.1を使ってTcl/Tkのラッパーライブラリを作る話をしました。

Tcl/Tkというように、大体はTkが主役で、Tkを使うためにしかたなくTclと付き合うような話になりがちです。
そこで今回は、純粋にTclに注目してみたいと思います。

昔のバージョンはともかく、近年のTclはずいぶん高速化されましたし、機能も豊富になっています。
比較的新しい機能として、多倍長演算があります。

普通、コンピュータで扱える数値は、32ビットとか64ビットとか、ある程度制限された精度しか持っていません。
多倍長演算を使うと任意精度が実現できるのです。

64ビット整数の場合、せいぜい(十進法で)20桁ぐらいの精度しかありません。
ところが、多倍長演算を使えば、100桁でも200桁でも扱うことができるのです。

そうした多倍長演算がTclでも使えるようになっています。
ちょっとしたコードを書いてみましょう。

このように意地の悪い計算を試したとしても、ちゃんと

という答えを返してくれます(横スクロールしないと表示しきれないぐらいの桁数です)。

CやC++には多倍長演算の機能が標準では備わっていません。
多倍長演算のライブラリはいろいろあるのですが、GNU関連のものはライセンス的に使いにくかったりしますし、Boost C++ Librariesのそれは手軽さに欠けるように思います。

今回、Tcl/Tkのラッパーライブラリを作るわけですから、Tclの多倍長演算を使わない手はありません。

実は、Tclの多倍長演算には、LibTomMathというライブラリが使われています。
このLibTomMathは、Boost C++ Librariesの多倍長演算ライブラリでも、その実装のひとつに使われているものです。
比較的軽量のライブラリで、ちょっと多倍長演算を使いたいときにはもってこいかと思います。

今回は、Tclの多倍長演算について紹介してみました。
ほかにもTclには、マルチプラットフォームで使えるライブラリ機能が豊富にあるので、機会があればまた紹介してみたいと思います。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です