2012/12/04

Numerical Calculation Packages for TeX & LaTeX ("TeX & LaTeX Advent Calendar")

~TeX & LaTeXで数値計算するためのパッケージ~

1. はじめに
本投稿は"TeX & LaTeX Advent Calendar"の参加記事です (http://atnd.org/events/34318)。

12/3 は k16.shikano 氏の "TeXを電卓として使おう(あるいは、TeXでベキ乗根)" です。
12/5 は munepi 氏 (http://d.hatena.ne.jp/munepi/) です。

参加者の皆様が高度なネタを披露されている中,私のような初級者レベルの人間が参加しているというのも恐縮ではありますが,初心者歓迎,いやむしろ初心者来て,というTeX & LaTeX Advent Calendar主催のZR氏の悲鳴に応えたということでここはひとつ。
(本当のところは,開催が宣言されたときに意気揚々と参加したのですが)

さて,本日はTeX/LaTeXで数値計算ができるようになるパッケージを紹介します。
"fp-package" と "rsmath" の2つです。
それぞれのパッケージを私はどこで入手したか,というURLも併記しておきます。

2. fp-package (Fixed point arithmetic for TeX)
入手元(CTAN):http://www.ctan.org/tex-archive/macros/latex/contrib/fp/


固定小数点演算マクロを提供するパッケージ
数値代入,四則演算,条件分岐が主に提供され,ネイピア数の演算(指数関数,自然対数)もある。たしか数値の冪乗もある。
ただしREADMEには
Fixed point arithmetic for TeX with numbers ranging from
-999999999999999999.999999999999999999
to
+999999999999999999.999999999999999999
とあり,扱える数値の桁数は整数部18桁,小数部18桁となっている。

TeX には元々変数と呼べるようなものは,整数型しかありません。
では,どのようにして実数値を扱っているのかと言うと,マクロです。
文字列を展開するだけのマクロに,数値を与えることで実現しております。

fp-packageにある実数値を代入する(設定する)ためのマクロ\FPsetを同じような動作をするマクロで書けば
\def\pi{3.1415926535897932384626...}
ということです(内部での処理は違うかもしれませんが)。
例で示したものは単純に "3.1415926535897932384626..." と置換されるだけのマクロです。
このような "文字列に置換されるだけのマクロ" を実数型変数として使っています。

ちなみに,このfp-packageは条件分岐のマクロの構文がよくないことがZR氏に指摘されています。
(ZR氏のツイートを参照のこと [1], [2])
そういうわけで,[2]にあるように条件分岐を使うときには
\@gobble\if\FPifxx
としましょう。
さもなくば理由のわからないエラーで苦しむことになるかも(私は苦しんだ)。

もし作者がZR氏のツイートを見て修正していたならば,\FPifxxはそのまま使って大丈夫でしょう。

さすがに,円周率xx桁とかネイピア数xx桁求める!とか言わなければ小数部は18桁求められれば十分だと思います。
整数部も18桁まで表現できます。きっと十分すぎるくらいだと思います(1000兆だって13桁程度なんですから大丈夫でしょう)。

3. rsmath
入手元:http://www.geocities.co.jp/AnimalPark-Tama/8129/texmacro/index.html


多倍長整数演算及び初等関数の計算マクロを提供するパッケージ
まだ使っていないので,どんなことができるのかはよくわからないが,ひとまず四則演算のマクロはあるようだ。

まだバグがあるかもしれないらしく,参考としてスタイルファイル中にコメントが入っている。
また,使用例は拡張子を変えてコンパイルと書いてある。
しかし,実際に眺めてみるとどうもそれだけで済みそうにない気がするのだが気のせいか。
実際私はエラーが出た。
というかスタイルファイルを見ていたら「コンパイルするときはここをコメントアウト」みたいなコメントが見える。
あれ,私は疲れているのか…?

などと,酷評してしまったが,作者は(初級者の)私よりもずっとレベルの高い人のはずである。
…すいません。

そんなわけで私はこれを見つつ,実装方法について勉強したいと思う。

4. 最後に
以上,TeX/LaTeXで数値計算するためのパッケージ紹介でした。
とはいえ,私が見つけたものだけですので,他にもいいパッケージがあるかと思います。
CTANなんかで探してみるといいのではないでしょうか。
あるいは,Googleとかの検索サイトで検索してみるのもいいと思います。
実際私はぐぐってrsmathを見つけました。

数値計算と言えばネイピア数と円周率の計算が真っ先に思い浮かぶ人なので,fp-packageを使ってさっそく実装しましたがそれについてはまた後日?
rsmathは見つけた,というだけでまだ使ってません。

では,皆様よきTeX/LaTeX Lifeを。

0 件のコメント:

コメントを投稿