2014-01-01から1年間の記事一覧
前回のエントリで乗算器と除算器の話題に触れました、今回はコーヒーブレークとして実践的ではないですが乗算と除算をハードウェアではなくてソフトウェアで実現する場合どうするかを見ていきたいと思います。 乗算(掛け算) 筆算の手順をそのまま再現します…
何回かに渡り初等関数の計算について取り上げてきました。本ブログのテーマが組み込みである事を差し置いて変数の型にdoubleを使用していましたが、実際に組み込みにおいてdoubleを使用するには、対象マイコンのアーキテクチャにFPU(Floating point number P…
今回はデザインパターンの一つであるコンポジットパターンを応用してXMLを作ってみます。C言語で四苦八苦したソースが大分すっきりした形でかけます。前回と同様次のXMLを作成する事を目標とします。 <root> <tag1> <tag2>element_start</tag2> <tag2>element_middle</tag2> </tag1> <tag1> <tag3>element_last</tag3> </tag1> </root> コン…
今回は対数の数値的解法を整理しておこうと思います。まずは自然対数です。 テーラー展開での解法となりますが、ただ \(log(x)\) では0近傍でのテーラー展開ができませんので、工夫のためとりあえず\(log(1+x)\)及び、\(log(1-x)\)を展開します。 \begin{al…
既に平方根の計算方法として最も有用なニュートン法を紹介していますが、その他にも興味深い方法がありますので紹介しておきます。 <テーラー展開> 平方根の計算方法としては難がありますが、計算機科学はテーラー展開の発見なしには語れません。\( sin(x)…
引き続き平方根の数値的解法を見ていきたいと思います。ここではニュートン法での解法をまとめておきます。ほかの方法よりも収束が早く平方根の解法としてmath.hで定義されているのがニュートン法です。 <ニュートン法> ニュートン法も二分法と同じく平方…
math.h で定義されている初等関数の数値計算に関してまとめておこうかと思います。(必ずしもmath.hで定義されているものと同じとは限りませんので注意ください)まずは一番初歩的な平方根( sqrt )の解法を幾つか紹介します。 <二分法> 平方根を方程式の問題と…
doubleの中身を確認し整理しておこうと思います。浮動小数点演算標準としてIEEE754で定義されていますが、少し難解な印象があります。まず前提としてすべての実数\(x\)は \begin{align*} x=(-1)^{(2-\delta)} \cdot \alpha \cdot 2 ^n \tag{1}\end{align*} …