文字列として記述された数式の値を求めるモジュールです。
例えば、 {log(2,8)+sqrt(81)}/5 という文字列から、 2.4 というdouble型の数値データを得られます。
前年度コンテストでもこのようなモジュールを応募させて頂きましたが、今回はその第2版です。 システムを根本から作り直し、拡張性を高めました。
数式文字列を一旦中間コードに変換するようにしました。 変換処理で文法エラーを完全に検出できるので、中間コードには文法エラーが一切含まれません。
数式(コード) → 中間コード → 結果
という流れになります。
第1版に対する主な美点・欠点は以下の通りです。
<美点> ・文法エラーチェックの厳格化 → 安全性向上
・扱える変数が a?z A?Z の計52個。(第1版では x,y,z のみだった)
・計算の精度が向上(第1版では有効数字が最大17桁かつ小数位6桁固定であったが、第2版では 有効数字17桁になった。)
・関数のパラメータ囲みに [] だけでなく () や {} も使える
・式中で {} () [] のすべてが使える
<欠点> ・計算の所要時間が約1.5倍になった
/// 修正報告 /// [ 2013/8/17/21:54 ] ・文書の軽微な表記ミスを修正 (「a,b,c,d」→「a,b,c」等)
|
No.6 [FunnyMaker]さんが作品にコメントしました - 2014/01/11 21:53:20
作者のFunnyMakerです。
前回のバージョンでドキュメントの表記ミスがありましたので、修正するとともに、マイナーアップデートも行いましたので、報告します。
今回で ver 2.1.1 になります。 変更の影響は内部で完結しているので、これまでと全く同様にお使いいただけます。
尚、計算速度の変化は確認されませんでした。(少なくとも、遅くはなっていません。)
|
No.5 [FunnyMaker]さんが作品にコメントしました - 2013/12/15 23:08:53
作者のFunnyMakerです。
この度、ver 2.1 にマイナーアップデートしました。
長らくHSP3dishのAndroid版で強制終了する問題がありましたが、 主要な機能について問題が解決されました。
・文字列数式からの中間コード生成 ・中間コードの実行&計算結果取得
この2つの機能がAndroid実機でも無事動くようになりました。 但し、問題解決のために、やむを得ず「Mfx_calc」を\"関数\"から\"命令\"に変更しています。注意してください。
更新が反映されるまでしばらくかかると思われますので、ダウンロードされる場合は注意してください。
|
No.3 [FunnyMaker]さんが作品にコメントしました - 2013/10/26 14:21:15
作者のFunnyMakerです。
返信が大変遅くなってしまいました。ごめんなさい。 返信のタイミングを失ってずるずると引きずってしまいました。
yamahubuki さん、 episuさん、コメントありがとうございます。 励ましの言葉とご意見を頂き、嬉しく思います。
制御構文についてご意見を頂きましたが、一連の処理をまとめて行ったりする場合に制御構文が使えれば確かに便利ですね。 実装するかどうか現時点では決めかねますが、前向きに検討したいと思います。
今後のさしあたっての予定では、Android版hsp3dishに対応しようかと思っています。
|
No.2 [yamahubuki]さんが作品を評価しました( 技術 完成度 ) - 2013/08/17 11:30:29
とても作りこまれていて、素晴らしいです。 説明がしっかりしているのもいいです。 今後、さらなる発展に期待します。
|
No.1 [episu]さんが作品を評価しました( 技術 完成度 ) - 2013/08/11 14:31:21
HSPのモジュール機能として数式の計算を実現しており、とても実装が難しいところだと思うのによく出来ていました いずれは数式より更に先に進んで、制御構文なども扱えるようになるかもと考えるとかなり期待できます 是非今後も開発を頑張って欲しいモジュールですね
|