見出し画像

RPN(逆ポーランド記法)電卓 第3弾

第3弾ということで、ここまでの詳細は

を、確認いただければと思います。

で今回の本題ですが、
三角関数はCORDICアルゴリズムで実装したので、逆三角関数も使えるようにしたいと思って検討した結果、テーラー展開にて実装しようと思い立ち、係数にできるところは事前に計算しておいてデータで持たせて置くこととして、できるだけ計算量を少なくしようと取り組みました。

そして16桁の電卓ですからできるだけ精度も高くしたいと、テーラー展開の級数を20次までとしました。あんまり高くしてもとは思いましたが、なんせ16桁の電卓ですから…

で、いざ電卓内部の計算ロジックを使って逆三角関数の計算をと取り掛かったところで、意外に手ごわい計算だということを痛感し、思い切って方針転換。
それはこの計算機のRPN電卓の特徴であるスタックをフル活用することです。具体的には、逆三角関数を計算するときにスレッドを生成し、そのスレッドでキー操作されたように見せかけて計算するということです。具体的には、逆三角関数計算スレッドが”*”や”+”等の演算子、”Enter"を押下したように見せかけて、内部メモリ(スタック)を使った計算をするスクリプトのようにプログラムできるようにするということです。
逆三角関数計算スレッドが、電卓を操作しているようになるので、計算途中には表示画面がチラチラ書き変わって行くのも面白いんじゃないかと思い開発しました。

「Tab」キーに「Sin」、「Esc」キーに「Cos」、「Backspace」キーに「Tan」を、
Num Lock + 「7」キーに「arcSin」、Num Lock + 「8」キーに「arcCos」、Num Lock + 「9」キーに「arcTan」を
配置しています。
動画では、Tan(30) → arcTan. Cos(15) → arcCos. Sin(45) → arcSinの順で計算しています。
逆三角関数の計算中に画面がチラチラと書き変わっているのが分かると思います。
逆三角関数計算スレッドが電卓を操作しているっていう感じがして面白いなと思っています。

この記事が気に入ったらサポートをしてみませんか?