★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★ : : : とどのつまり今作はちょー桁電卓とその計算をする多倍長整数・実数演算モジュールのセットです。 : : : : version : P01 HP『略して仮。』http://www.tvg.ne.jp/menyukko/ : : Last Update : 2017.10.18 Copyright (C) 2017 衣日和 All rights reserved. : : : ★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★‥‥‥‥‥‥★ ◆ 概要 Outline +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ 【 パッケージ 】 tododen_p01.zip ※配信方法により変動あり 【 区分 】 フリーソフト 【 製作者 】 衣日和 【 更新情報、連絡先 】 ホームページにて案内しています 【 ダウンロード 】 HSPプロコン2017 http://hsp.tv/contest2017/ ユーザーページ http://dev.onionsoft.net/seed/info.ax?user=192 【WebGL/JavaScript版】 ブラウザ動作の電卓 http://www.tvg.ne.jp/menyukko/rncltr.html 製作中の作品に、多倍長整数の演算を取り入れようと思い立ち作り始めて1年……やっとモジュールとし てまとまりました。実数の計算や使い勝手や速度などで右往左往しているあいだにコンテストの期限が近 づいてしまったこともあり、結局モジュール単体で公開することになりました。 とどのつまり今作はちょー桁電卓とその計算をする多倍長整数・実数演算モジュールのセットです。 ◆ パッケージ内容 Included Files +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ 本パッケージに含まれるファイルは以下の通りです。 ▽ とどでんP01 ▽ ソース ◇ RNCalcModule.hsp モジュール本体 ◇ rncltr.png 電卓用画像 ◇ rncltr.hsp 電卓ソースファイル ◇ hsp3dish.ini DISH設定ファイル(電卓用) ◇ RNCalculator.exe 電卓 ◇ readme_tododen_p01.txt 本ドキュメント 本パッケージのみで実行可能です。レジストリ・システム等への影響はありませんので、不要になったら すべてのファイルを捨ててください。製作にはHSP3.5のベータ版を使用しました。 ◆ 電卓 Calculator +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ 左右のパネルを使ってそれぞれ10進数表記の文字列を入力すると、加算・減算・乗算・除算・剰余・大小 の比較ならびに計算と描画に要した時間を表示します。乗算と除算では複数の結果が表示されます(小数桁 の扱いが異なるモードがあるため)。精度や速度の検証にどうぞ。 HSP3.5のベータ版にて追加された機能を使用しているため、HSP3.4以前の環境ではソースファイルからの 実行はできません。 とりあえずコンテスト期間中は、WebGL/JavaScript版のブラウザ上で手軽に試用できる電卓をHPで公開し ています。 ◆ モジュール Module +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ このモジュールを使用すると、HSPでint型整数やdouble型実数の限度以上の値を扱えるようになります。 HSP本体パッケージのcommonフォルダ下にモジュールファイル(RNCalcModule.hsp)を置くとHDL(F1ヘルプ) に項目が追加され説明を読むことができるようになります。 スクリプトの上部(定義関数の登場前)でモジュールをインクルードしてください。 インクルードに先立ちRealNumMod_BreakKeyと定義すると緊急停止機能が有効になります。getkeyで使用す るキーコード(27:エスケープ、32:スペース、等)を定義してください。 有効にした場合、システムが長考で応答しないとき当該キーの押下で数秒間のwaitが実行され最低限の操 作を受け付けるようになります。ただし実行速度が著しく低下しますので十分なデバッグののち無効にす ることをおすすめします。 ;#define global RealNumMod_BreakKey 27 ; 有効にすると[ESC]キーで緊急停止します #include "RNCalcModule.hsp" ◇想定環境(動作を保証するものではありません) 【 本体 】 HSP3.4以上 【ランタイム】 標準、コンパクト版、コンソール版、DISH(Win,WebGL)版、と互換のもの 【 整数演算 】 32bitで演算を行うCPU 【文字コード】 ASCII系(Shift_JIS,UTF-8等) 標準命令・関数のみで製作し、FPU,GPU,DLL,API,マシン語等は使用しません。速度対策のためリトル エンディアンを前提に設計しています。UTF-16には対応していません。 ◇関数 strR = RoseFromStr( strA ) ;値変換(文字列→rosemod形式) strN = RoseToStr( strA ) ;値変換(rosemod形式→10進文字列) intR = RoseCompare( strA , strB ) ;大小比較 strR = RoseAdd( strA , strB ) ;加算(たし算) strR = RoseSub( strA , strB ) ;減算(ひき算) strR = RoseMul( strA , strB ) ;乗算(かけ算) strR = RosePro( strA , strB ) ;乗算2(かけ算、高詳細) strR = RoseDiv( strA , strB ) ;除算(わり算) strR = RoseQuo( strA , strB ) ;除算2(わり算、高詳細) strR = RoseMod( strA , strB ) ;除余算(わり算のあまり) strA,strB は文字列(str型)です。10進数表記またはrosemod形式を指定してください。 strR は関数がrosemod形式の文字列(str型)を返すことを示しています。 strN は関数が10進数表記の文字列(str型)を返すことを示しています。 intR は関数が整数(int型)を返すことを示しています。 RoseToStr関数の返値(strN)は標準的な数値表記の文字列です。 0未満の場合マイナス記号が付加されます。0以上の場合はプラス記号の付加はありません。 指数表記にはなりません。 RoseCompare関数の返値(intR)は以下のいずれかです。 -1 : strA < strB のとき 0 : strA = strB のとき 1 : strA > strB のとき RoseDiv関数,RoseQuo関数,RoseMod関数において除数(strB)が0を示す場合はエラーとなります。 ◇10進数表記文字列 SD.FeN形式の一般的な数値表現に(一応)対応しています。各要素は省略可能です。 S [符号] + か - D [整数値] 任意桁 . [小数点] . F [小数値] 任意桁 e [指数詞] e か E N [指数] 10のN乗(小数点の移動量) ◇rosemod形式文字列 値の取り扱いやすさと実行速度の兼ね合いで生まれた妥協案。実体は文字列ですのでsdimやstrlen等 の通常命令で扱うことができます。 整数部の有効桁数は自動で決定され、システムの許す限り大きな値を扱うことができます。 小数部の有効桁数は任意長で固定されます。おもに10進数⇒rosemod形式への変換時に決定され、以降は必 要以上に増えることはありません。有効桁数が0桁の場合、その値は整数(多倍長整数)を意味します。 RoseAdd関数,RoseSub関数,RoseMul関数,RoseDiv関数,RoseMod関数で実数演算をする場合、小数部の有効桁 数は2項の多い方に合わせられます。RoseMul関数・RoseDiv関数では切り捨てによる誤差が生じます。その 場合RosePro関数・RoseQuo関数を使用することで、小数部の有効桁数を増減させ誤差を抑えることも可能 です。 ◇サンプル #include "RNCalcModule.hsp" data = "100", "7e2", "+50e+1", "-300000e-3", "-10.5", "0.75", "9.0025", "" ;data(8) = "0.7474", "0.0001" sum = str(0) ; この変数に全部足し合わせる repeat length(data) : sum = RoseAdd(sum, data(cnt)) : loop mes RoseToStr(sum) ; 10進数にして描画 ◆ 著作権、利用条件 Copyright / Escape Clause +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ 本パッケージの著作権は作者である 衣日和 が有します。 モジュール・スクリプトを使用したソフトウェアを開発した場合その著作権は開発者にあります。 本パッケージの使用に起因するトラブル・損害等について衣日和は一切責任を負いません。全て自己責任 でご利用ください。 本パッケージの使用に際し以下の禁止事項を除き一切の制限はありません。改造・ソフトウェアへの組み 込み・再配布・Web紹介・雑誌書籍への掲載等すべて無断・無償でご利用いただけます。 禁止事項 ・人を陥れ損害を与える目的のソフトウェア(ウィルス・スパイウェア)に組み込む行為 ・人に迷惑をかける目的のソフトウェア(ジョークソフト)に組み込む行為 ・作者を偽り貶める行為 いずれの場合も、衣日和に対して一切の連絡・許諾を取る必要はありません。ドキュメント・テロップ等 に記載する義務もありません。しかしながら事後にでも一報を頂けると衣日和は喜びます(≧▽≦)。感想 などもお待ちしています。 ◆ 改訂履歴 History +‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥+‥‥‥‥‥‥‥‥*☆*‥‥‥+ 2016. 8. 6 試作開始 2017.10.18 P01 一式パッケージ化(HSPプロコン2017出展用) ━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…━…‥…*☆*…‥…━ ♪Thank you for reading.