« NeoOffice 2.2.1 Early Access | トップページ | MacPortsをインストールしてみた »

2007年7月27日 (金)

exp(-x^2)という式の評価順序

以前Excelでexp(-x^2)という形の関数を計算しようとしたら、意図しない計算結果になってしまって戸惑った事がある。いつもはx^2の部分はx*xと書くようにしているのだけど、この時はxに相当するのが結構長い式だったので^2としたのだけど、Excelはべき乗の演算子^よりも負号の-の方が優先順位が高いため(これは仕様と明記されている)、exp(-x^2)はexp((-x)^2)と解釈されたのである。私が期待していたのはexp(-(x^2))だったのだけど。

それ以来、手元にあるソフトで負号の優先順位を調べるのが癖になってしまった。せっかくなのでここに記録しておく。

表計算ソフトの場合はA1セルに =-2^2 、A2セルに =EXP(-A1^2) と入れる。表計算ソフト以外では x = -2^2、y = exp(-x^2) という表現で値を調べる。

負号よりもべき乗の方が優先順位が高いもの:-2^2=-(2^2), exp(-x^2)=exp(-(x^2)) と解釈
NumberCrunch/MacOS 7〜9、数式電卓
クラリスワークス 4.0 for Mac/Mac OS 7〜9, for Win/Win 95〜XP、表計算書類
AppleWorks 5/Mac OS 9、表計算書類
AppleWorks 6/Mac OS 9, X、表計算書類
グラフ計算機/Mac OS 9、数式電卓
VisualBasic for Applications(VBA)/Mac OS 7〜9, Windows 3.1〜XPのExcel 5〜2003で確認
Google、Googleの電卓機能
Mariner 4.0〜5.5.1/Mac OS 7〜9, X、表計算ソフト、=-A1^2 や =exp(-A1^2)の様にセル参照の前に置かれた負号の場合
FX-890P BASIC/CASIOのポケットコンピュータ

負号の方がべき乗よりも優先順位が高いもの:-2^2=(-2)^2, exp(-x^2)=exp((-x)^2) と解釈
Microsoft Excel 5.0〜2003/Mac OS 7〜9, X, Win 3.1〜XP
OpenOffice.org Calc/Mac OS X, Win XP
NeoOffice Calc/Mac OS X
OpenOffice.org BASIC/Mac OS X, Win XPのCalcで確認
Gnumeric/Win XP、表計算ソフト
HyperTalk/漢字Talk 7.5.5、MacのHyperCardのスクリプト言語
Mariner 4.0〜5.5.1/Mac OS 7〜9, X、表計算ソフト、=-2^2 や =exp(-2^2)の様に数字の前に置かれた負号の場合

Excelはワークシートでの優先順位とVBAでの優先順位が異なるというすばらしさである。普段VisualBasicやVBAになじんでいる人がExcelのワークシートで計算したり、その逆のパターンだと罠にはまりそう。
また、ExcelのVBAとOpenOffice BASICの間でも違いがあるので、マクロを相互に移植する場合は注意が必要。
Marinerなんかは数値とセル参照で負号の扱いが異なるというこれまたややこしい仕様。

世界は混沌の中にあるなあ (^^;)

|

« NeoOffice 2.2.1 Early Access | トップページ | MacPortsをインストールしてみた »

AppleWorks」カテゴリの記事

NeoOffice/OpenOffice」カテゴリの記事

Excel」カテゴリの記事

Gnumeric」カテゴリの記事

コメント

最近知りました。これはびっくりですね。

投稿: | 2017年11月29日 (水) 17時29分

コメントありがとうございます。最近のソフトでは確かめていないので、時間があったら確かめてみようと思います。

投稿: yish | 2017年12月 6日 (水) 21時27分

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: exp(-x^2)という式の評価順序:

« NeoOffice 2.2.1 Early Access | トップページ | MacPortsをインストールしてみた »