|
MPAライブラリは,多倍長浮動小数点演算をサポートするライブラリである。 現ライブラリでは,最大10進約450桁までの演算をサポートする。 (mpa_d.h の定義を変更し,ライブラリ再構築を行えば,拡張は可能。 但し,定数の再計算の為,m_mak_v.c を実行し,mpa_v.h の再設定要。) 1.コーディング上の注意 (目次に戻る)#include "mpa.h" を指定すること。注:内部で,標準ヘッダファイル <stdio.h>, <math.h>, <string.h>, 2.ライブラリ一覧 (目次に戻る)(1) 構造体 (目次に戻る)"mpa_d.h" 内で、多倍長浮動小数の1要素を、下記構造体として定義している。(符号、指数、ゼロ判定フラグ、仮数部配列)
(2) 要素関数 (目次に戻る) |
関数名及び型 | 引数及び型 | 機能 | |
MPA m_set(a) | double a; | MPA値設定 | double → MPA |
MPA m_set_a(s) | char *s; | 文字列 → MPA | |
MPA m_set_l(n) | long n; | long int → MPA | |
MPA m_int(a) | MPA a; | 部分抽出 | 整数部 |
MPA m_frac(a) | MPA a; | 小数部 | |
MPA m_round(a, n) | MPA a; int n; |
n 桁に丸め | |
int m_z_chk(a) | MPA *a; | 0(ゼロ)値の検査 | |
int m_cmp(a, b) | MPA a, b; | 比較 | 符号含む |
int m_cmp_a(a, b) | MPA a, b; | 絶対値 | |
int m_cmp_s(a, b) | MPA a; double b; |
MPA vs. double | |
int m_acc(a, b) | MPA a, b; | 一致する桁数を戻り値とする | |
MPA m_add(a, b) | MPA a, b; | 加算 | 符号含む |
MPA m_add_a(a, b) | MPA a, b; | 絶対値 | |
MPA m_sub(a, b) | MPA a, b; | 減算 | 符号含む |
MPA m_sub_a(a, b) | MPA a, b; | 絶対値 | |
int m_prs(a, b) | MPA a, *b; | 指数部等値変換(|a| < |b|) | |
void m_add1(a, b) | MPA *a, b; | インクリメント | 通常(単位b) |
void m_add1_a(a, b) | MPA *a, b; | 絶対値(単位b) | |
void m_sub1(a, b) | MPA *a, b; | デクリメント | 通常(単位b) |
void m_sub1_a(a, b) | MPA *a, b; | 絶対値(単位b) | |
MPA m_add_ss(m, a, b) | int m; MPA a, b; |
加算ルーチン( m 桁目以降対象,スレーブルーチン) | |
MPA m_sub_ss(m, a, b) | int m; MPA a, b; |
減算ルーチン( m 桁目以降対象,スレーブルーチン) | |
void m_adj(a, n) | MPA *a; int n; |
指数部指定変換 | |
MPA m_mul(a, b) | MPA a, b; | 乗算 | a × b |
MPA m_mul_s(a, x) | MPA a; int x; |
a × x(整数) | |
void m_mul1(a, b) | MPA *a, b; | a × b → a | |
void m_mul1_s(a, x) | MPA *a; int x; |
a × x(整数)→ a | |
MPA m_div(a, b) | MPA a, b; | 除算 | a ÷ b |
MPA m_div_s(a, x) | MPA a; int x; |
a ÷ x(整数) | |
void m_div1(a, b) | MPA *a, b; | a ÷ b → a | |
void m_div1_s(a, x) | MPA *a; int x; |
a ÷ x(整数)→ a | |
MPA m_idiv(a, b, r) | MPA a, b, *r; | 戻り値:除算値(整数), r:剰余 | |
int m_mul_ss(m, a, x, b) | int m; MPA a, *b; UINT x; |
整数乗算ルーチン( m 桁目以降対象,スレーブルーチン) | |
int m_div_ss(m, a, x, b) | int m; MPA a, *b; UINT x; |
整数除算ルーチン( m 桁目以降対象,スレーブルーチン) | |
MPA m_inv(b) | MPA b; | 逆数 | |
MPA m_pwr_s(a, x) | MPA a; long x; |
整数ベキ乗 | |
MPA m_sqr(a) | MPA a; | 平方 | |
MPA m_sqrt(a) | MPA a; | 平方根 | |
void m_print(s, a, _short) | char *s; MPA a; int _short; |
MPA 表示出力 | 10進表示 |
void m_printe(s, a, _short) | char *s; MPA a; int _short; |
指数部、仮数部別表示 | |
void m_prt_b(s, a, _short) | char *s; MPA a; int _short; |
要素内容表示 | |
void m_prt_m(s, a, _short) | char *s; MPA a; int _short; |
基数表示 | |
double m_iset(a) | MPA a; | 型変換 | MPA → double |
long m_iset_s(a) | MPA a; | MPA → long | |
MPA m_exp(x) | MPA x; | 指数関数 | |
MPA m_log(x) | MPA x; | 対数関数 | 自然対数 |
MPA m_log10(x) | MPA x; | 常用対数 | |
MPA m_x_y(x, y) | MPA x, y; | ベキ乗関数 | x ^ y |
MPA m_10(x) | MPA x; | 10 ^ x | |
MPA m_x1n(x, n) | MPA x; long n; |
n 乗根 | |
MPA m_hcos(x) | MPA x; | 双曲線関数 | 余弦双曲線関数 |
MPA m_hsin(x) | MPA x; | 正弦双曲線関数 | |
MPA m_htan(x) | MPA x; | 正接双曲線関数 | |
MPA m_ahsin(x) | MPA x; | 逆正弦双曲線関数 | |
MPA m_ahcos(x) | MPA x; | 逆余弦双曲線関数 | |
MPA m_ahtan(x) | MPA x; | 逆正接双曲線関数 | |
MPA m_sin(x) | MPA x; | 三角関数 | 正弦関数 |
MPA m_cos(x) | MPA x; | 余弦関数 | |
MPA m_tan(x) | MPA x; | 正接関数 | |
MPA m_asin(x) | MPA x; | 逆正弦関数 | |
MPA m_acos(x) | MPA x; | 逆余弦関数 | |
MPA m_atan(x) | MPA x; | 逆正接関数 | |
MPA m_2pi(t1) | MPA t1; | 角度正規化 | |
MPA m_gcd(a, b) | MPA a, b; | 整数演算 | 最大公約数 |
MPA m_lcm(a, b) | MPA a, b; | 最小公倍数 | |
MPA m_kaijo(n) | UINT n; | 階乗 | |
MPA m_bino(m, n) | UINT m, n; | 2項係数 ( mCn ) | |
MPA m_rand( ) | 乱数 | 一様乱数 | |
void m_srand(seed) | long seed: | 一様乱数初期設定 | |
MPA e( ) | 定数計算 | ネピア定数(e) | |
MPA pi( ) | 円周率π | ||
MPA ln2( ) | ln 2 | ||
MPA ln625( ) | ln 0.625 | ||
MPA ln75( ) | ln 0.75 |