平方根(固定桁)計算
ニュートン法で、小数点以下10桁まで求めていますが、どの桁まで精度があるかは未検証です。
L小数の二倍とは (L小数 → L小数)
小数Aは 構造体情報
整数Aは 構造体 L小数型
小数桁数Aは 変数
小数桁数は 変数
整数積は 構造体 L小数型
小数Aに 入れる
小数Aの L小数桁数を 小数桁数Aに 入れる
小数Aを 小数桁数Aだけ L小数を指定桁桁上げし 整数Aに 入れる
整数Aの L整数の二倍を 整数積に 入れる
整数積を 小数桁数Aだけ L小数を指定桁桁下げし 返す。
L小数の自然数乗とは (L小数、整数 → L小数)
小数Aは 構造体情報
累乗数は 変数
小数積は 構造体 L小数型
小数Aと 累乗数に 入れる
小数積を クリアする
1を 小数積の L符号に 入れる
1を 小数積の L桁数に 入れる
1を 小数積の L数字(1)に 入れる
累乗数 回数指定し
小数積と 小数Aの L小数の掛け算結果を 小数積に 入れる
繰り返す
小数積を 返す。
L小数の二乗とは (L小数、整数 → L小数)
小数Aは 構造体情報
小数積は 構造体 L小数型
小数Aに 入れる
小数Aと 小数Aの L小数の掛け算結果を 小数積に 入れる
小数積を 返す。
L小数の平方根とは (L小数 → L小数)
小数Aは 構造体情報
分子は 構造体 L小数型
分母は 構造体 L小数型
近似値は 構造体 L小数型
二乗値は 構造体 L小数型
桁数は 変数
小数Aに 入れる
小数Aを 近似値に 入れる
1を 桁数に 入れる
10 回数指定し
桁数を 一つ増加する
近似値の L小数の二乗を 二乗値に 入れる
二乗値と 小数Aの L小数の加算結果を 分子に 入れる
近似値の L小数の二倍を 分母に 入れる
分子を 分母で 桁数 L桁未満切り捨てした商を 近似値に 入れる
繰り返す
近似値を 返す。
実行結果
2,3,4,5の平方根を求めました。(各100回)
c:\mind8\pmind\sample>lnumtime
156ミリ秒経過
+1.41421356237
297ミリ秒経過
+1.73205080756
375ミリ秒経過
+2.00000000000
562ミリ秒経過
+2.23606797749
@killy さんへ L小数型を 100桁で定義すると、途中で黙って終わってしまいましたので50桁にすると正常終了しました。