円周率

円周率の計算 (15) -- BBP 公式による計算 (4)

ATtiny10 版のプログラムができました。 全てアセンブラ記述で、プログラム・サイズは 860 バイト (430 ワード) です。 思ったより小さくなりました。 SRAM の使用量はデータ 22 バイト、スタック 6 バイトの計 28 バイトで、まだ 4 バイト余っています。 内…

円周率の計算 (14) -- BBP 公式による計算 (3)

今回は PC (intel x86 プロセッサ) 用の C ソース・プログラムを示します。 前々回の「pi_BBP.pde」ファイルと、下の「pi_BBP.c」ファイルを同じフォルダに置き、「pi_BBP.c」をコンパイルするだけです。 整数演算だけなので、math ライブラリ (libm) をリン…

円周率の計算 (13) -- BBP 公式による計算 (2)

今回は AVRStudio で ATtiny13A 用にコンパイルするソースファイル一式を掲載します。 使用したのは AVRStudio 4.19 (build 730) gcc Version 4.5.1 (AVR_8bit_GNU_Toolchain_3.3.0_364) の組み合わせで、他の環境では試していません。 まず、AVRStudio で A…

円周率の計算 (12) -- BBP 公式による計算 (1)

フラッシュ ROM 2 K バイト、RAM 128 バイトの ATtiny2313 で円周率Πの値を BBP 公式 (後述) を使って UART 経由で 16 進数で 4000 桁出力するという記事 (ドイツ語のサイト) 4000 Stellen von Pi mit ATtiny2313 – Mikrocontroller.net があることを知り、…

LPC1114FN28/102 (7) -- 円周率の計算 (11)

LPC1114FN28/102 で Spigot アルゴリズムを使って円周率Πの値 500 桁を UART 経由でシリアル回線に出力するプログラムを作りました。 プログラムの大きさは、フラッシュに書き込むサイズとして 0x47c = 1148 バイトです。 ターミナル・ソフト (tt.exe) でキ…

円周率の計算 (10)

アセンブリ言語による arctan 公式による円周率の計算プログラムを、8 ビット縛りで STM8S-Discovery 用に、16 ビット縛りで PC (x86 プロセッサ) 用に作成しました。 ソース・プログラムは、両者とも 500 行を超えるので、この blog 上には置かず、web サイ…

円周率の計算 (9)

8 月 20 日の記事で検討した spigot アルゴリズムの変更点を、8 月 15 日の記事の Arduino 用のスケッチに適用し、乗除算部分をインライン・アセンブラによる 8 ビット演算に置き換えたプログラムを下に示します。 (Spigot 関数の部分のみ) 全体のスケッチの…

円周率の計算 (8)

8 月 20 日の記事で検討した、spigot アルゴリズムを base = 100、つまり 100 進数として扱う場合に 8 ビット演算におさまる条件は、100 進に限らず、他の場合でも有効であることが分かりました。 それは、 num[] の初期値を base にかかわらず「2」とする …

円周率の計算 (7)

STmicroelectronics 社の開発環境 ST Visual Develop (STVD) 用の spigot アルゴリズムのアセンブラ・ソースプログラムを下に示します。 STM8S Discovery 上で実行すると、PD5/UART2_TX 端子 (コネクタ CN4 の 10 番ピン) から 38.4 kbps シリアルでπの値を…

円周率の計算 (6)

「8 ビット縛り」の 8 ビット・マイコンとして、次は手持ちの STM8S Discovery (STmicroelectronics 製、STM8 コア) を選びました。 STM32F103 を使ったフラッシュ・ライタ/デバッグ・インターフェース部分と、切り離し可能な STM8S ターゲットボード部分と…

円周率の計算 (5)

8 月 13 日版のプログラム・リストを下に掲載します。 (8 月 17 日追記: コメント中の aran255 の公式の 44*acot(2072) の符号が誤っていたのを修正しました。 プログラム本体には誤りはありません。)

円周率の計算 (4)

8 月 9 日版のプログラムを改訂し、ATmega168 使用の Arduino でも修正なく実行可能にした 8 月 13 日版のプログラムを作りました。 バイナリ・スケッチ・サイズは 5602 バイトです。 プログラム・リストは次回、掲載します。 今回のプログラムでは、arctan …

円周率の計算 (3)

前回までの記事で書き忘れていたことがあったので、補足しておきます。 まず、「pi_atan.pde」の中の #define ADDSUBONLY 1 の行を削除あるいはコメント・アウトして、「ADDSUBONLY」というシンボルが未定義な状態にすると、MUL / ROL 命令を使ったプログラ…

円周率の計算 (2)

Arduino 用のスケッチを下に示します。 (8 月 11 日追記: ATmega328P を使ったタイプの Arduino 用のプログラムです。 ATmega168 を使ったタイプでの実行には修正が必要になります。 修正方法は 8 月 11 日の記事を参照してください。) 「pi_atan.h」と、「…

円周率の計算 (1)

今回からは、シンセ関係から離れて、円周率の計算について触れたいと思います。 それと言うのも、20 個ほどの LSTTL を使った「RETROF-8」という 8 ビット・コンピュータを製作されている方がいて、Web サイト上で進行状況を公開されています。 TTLのみでコ…