電卓記法

ブログに使うには高機能すぎるぐらい色々計算できる記法です。*1

*1 : 元々C71/C72 Special Edition用にジョークで開発された記法でした。プラグインとして実装されています。adiary開発のごく初期(Ver1スナップショット初期)にインタプリタ方式で動作していた昔のSatsuki-systemを流用して作られました。

電卓記法の基本

基本的にはとして使用します。

2の16乗は[calc:2^16]。3+4は[calc:3+4]。√2は[calc:sqrt(2)]。

2の16乗は65536。3+4は7。√2は1.4142135623731

となります。加減乗除やいろいろな関数が使えます。

電卓記法で変数が使える

変数を使うことができます。変数の代入は次のように行います。

[calcx:x=15]
[calcx:y="test"]

[calcx]は結果を出力しない記法です。

変数はさつき記法の自由変数を使用していますので、さつき記法からも代入や表示することができます。

:::z1=220
:::z2=あいうえお
z1の値は「[$z1]」です。

電卓記法で何ができる

この例はせりかさんに提供して頂きました。

2次方程式

y = x2 - 6x + 9

の解は以下で計算できます.

[calcx: a = 1][calcx: b = - 6][calcx: c = 9][calcx: d = b * b - 4 * a * c] \
[calc: if(d < 0, "解無し", if(d==0, (-b/(2 * a))."(重回)", (-b+sqrt(d))/(2 * a)) )]

3(重回)

お金の計算

表と連携した場合

[calcx:total=0]
|* 商品  |* 価格         |* 個数      |* 計         |
| 端麗   | [calc: p=198] | [calc:n=2] | [calc:t=p*n][calcx:total += t]|
| エビス | [calc: p=248] | [calc:n=1] | [calc:t=p*n][calcx:total += t]|
| 生搾り | [calc: p=198] | [calc:n=2] | [calc:t=p*n][calcx:total += t]|
|合計    |<|<|[calc:total]|
商品 価格 個数
端麗1982396
エビス2481248
生搾り1982396
合計1040

使える関数や式

電卓記法では、次の式や関数が使用できます。

利用可能な演算子(優先度の低い順)。

; , = += *= /= %= .= **= <<= >>= &= |= &&= ||=
|| && | & == != <=> eq ne < > <= >= defined >> <<
+ - . * / % x(文字列をn回複製) ++ -- ! ~ ^(べき乗) **(べき乗) #(配列参照)

利用可能な関数

sin cos tan asin acos atan atan2(x,y) rand oct hex abs ln log exp
sqrt pow(x,y) sqr root
floor round ceil int rint cint ceiling
max(a,b, ... ,z) min(a,b, ... ,z) pow10(x) log10 log2
hypot fabs fma remainder ldexp scalb rad2deg def2rag
time localtime substr ord length index rindex
chop chomp regexp replace split join crypt
push pop unshift shift sort strsort reverse
if(式, x, y) ("式"が真ならばxを、偽ならばyを返す)

ポーランド記法

[poland]というタグがあり、入力した式を逆ポーランド記法で出力します。

たとえば[poland:(b^2-sqrt(4*a*c))/(2*a)]と入力すると次のようになります。

b 2 ^ sqrt 4 a * c * %r - 2 a * /

内部処理の都合で %r とかでていますが気にしないでください。