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なんかは数値とセル参照で負号の扱いが異なるというこれまたややこしい仕様。
世界は混沌の中にあるなあ (^^;)
| 固定リンク
「AppleWorks」カテゴリの記事
- 表計算ソフトの負号の優先順位(2019.01.19)
- Snow LeopardでのAppleWorks(2009.10.31)
- ワープロ文書で文字の上線(2009.08.15)
- AppleWorks 6が立ち上がらない(2009.01.10)
- AppleWorks6は10.3では不安定(2007.12.24)
「NeoOffice/OpenOffice」カテゴリの記事
- Mac版LibreOffice 7.1の言語パックのインストールエラー(2021.05.08)
- 表計算ソフトの負号の優先順位(2019.01.19)
- LibreOffice 5.4.0 Mac版(2017.08.05)
- OOo BasicでCalcの関数を作ってみた(2016.04.16)
- Excelのグラフの軸ラベルの指数表記(2015.11.07)
「Excel」カテゴリの記事
- Officeのライセンス認証が外れた(2023.01.01)
- FormsとSharePointとExcel VBA(2021.11.01)
- 64 bit版ExcelでVBAマクロを走らせたら(2021.11.01)
- Excelのリボンに「アドイン」が表示されなくなった(2021.05.23)
- Excel 365 2002 12527.20612でのアドインの挙動(2020.06.20)
「Gnumeric」カテゴリの記事
- High SierraでもMacportsのエラー(2019.02.09)
- 表計算ソフトの負号の優先順位(2019.01.19)
- macportsでエラー(2017.08.26)
- Excelのグラフの軸ラベルの指数表記(2015.11.07)
- Macportsでgnumeric 1.12.22.2のビルド(2015.08.01)
コメント
最近知りました。これはびっくりですね。
投稿: | 2017年11月29日 (水) 17時29分
コメントありがとうございます。最近のソフトでは確かめていないので、時間があったら確かめてみようと思います。
投稿: yish | 2017年12月 6日 (水) 21時27分