多倍長演算
(浮動小数点)


home戻る(メイン・メニュー) download

本プログラム群は、下記2〜13のプログラムを個別にコンパイルした後、1個のライブラリ化することを前提に 作成されています。 使用例は、そのライブラリを使用した例です。
各プログラムは、相互に関連しているため、各プログラム単独ではほとんど使用できません。

現ライブラリでは,仮数部を要素数100個の int 型配列で表し、最大10進約450桁までの演算をサポートします。ヘッダファイル(定義、定数)を変更しライブラリを再構築すれば、拡張することができます。

拡張する場合には、
  1. "mpa_d.h"の NMPA,NMPA1,NMPA2,MMPA を修正します。
  2. No.2〜8、13のプログラムをコンパイルし、暫定ライブラリを作成します。
    このとき、mpa.h の”#include <mpa_v.h> ”はコメントにしておかないとエラーになります。
  3. 暫定ライブラリを用いて、No.14 のプログラムをコンパイルし、実行すると "mpa_vXXX.h"が生成されます。
    ( XXX は仮数部の要素数。)
  4. "mpa_vXXX.h"を"mpa_v.h"にリネームします。
  5. 先ほどの mpa.h の”#include <mpa_v.h> ”はコメントを外し元に戻します。
  6. No.9〜12のプログラムを再コンパイルし、ライブラリを再構築して下さい。

MPAライブラリ 使用法参照    MPA:Multiple-Precision Arithmetic =多倍長浮動小数点演算

Cプログラム・ソース
No. 内容 機能 ソース
1 ヘッダー群 マスターヘッダー mpa.h
サブヘッダー(定義) mpa_d.h
サブヘッダー(宣言) mpa_p.h
サブヘッダー(定数) mpa_v.h
2 MPA値設定 m_set( ), m_set_a( ), m_set_l( )
m_int( ), m_frac( ), m_round( )
m_set.c
3 ゼロ値判定 m_z_chk( ) m_zero.c
4 比較 m_cmp( ), m_cmp_a( ), m_cmp_s( ), m_acc( ) m_cmp.c
5 加減算 m_add( ), m_sub( ), m_add_a( ), m_sub_a( )
m_prs( ), m_add1( ), m_sub1( ), m_add1_a( )
m_sub1_a( ), m_add_ss( ), m_sub_ss( ), m_adj( )
m_add.c
6 乗除算 m_mul( ), m_div( ), m_mul_s( ), m_div_s( )
m_mul1( ), m_div1( ), m_mul1_s( ), m_div1_s( )
m_mul_ss( ), m_div_ss( ), m_inv( ), m_pwr_s( )
m_sqr( ), m_sqrt( ), m_idiv( )
m_mul.c
7 表示・出力 m_print( ), m_printe( ), m_prt_b( ), m_prt_m( ) m_print.c
8 数値変換 m_iset( ), m_iset_s( ) m_iset.c
9 指数・対数・べき乗
双曲線関数
m_exp( ), m_log( ), m_log10( )
m_x_y( ), m_10( ), m_x1n( )
m_hcos( ), m_hsin( ), m_htan( )
m_ahsin( ), m_ahcos( ), m_ahtan( )
m_exp.c
10 三角関数 m_sin( ), m_cos( ), m_2pi( ), m_tan( )
m_asin( ), m_acos( ), m_atan( )
m_tri.c
11 公約数・公倍数
階乗・2項係数
m_gcd( ), m_lcm( ), m_kaijo( ), m_bino( ) m_gcd.c
12 乱数 m_rand( ), m_srand( ) m_rand.c
13 定数 e( ), pi( ), ln2( ), ln625( ), ln75( ) m_mak_v.c
14 定数ヘッダファイル生成 (独立プログラム) mak_vh.c

ライブラリ使用例
No. 内容 ソース
1 全般機能テスト mpa.c
2 数値設定・出力テスト test1.c
3 三角関数テスト test2.c