MPAライブラリ ヘッダー(定義)



[ 簡単な説明 ]

本ライブラリ中で使用する標準ライブラリヘッダのインクルード、マクロ変数の定義、構造体等の定義を行うサブ・ヘッダー。

本ライブラリでサポートする多倍長の桁数は、NMPA、NMPA1、NMPA2、MMPA の定数で決定する。
NMPA は、仮数部の int 型配列要素数である。 NMPA1、NMPA2、MMPA はコメントで示す計算式に従って定義する。(間違った値を指定したときの動作は保証できない。)

int 型 を基本とするため、基数が 32768 であり、従って、10進表示での有効桁数は、NMPA × log10(32768) となる。

現ライブラリは、NMPA = 100 としているので、10進表示での有効桁数は、451桁となる。

RADIXBITS 以下の定数は変更してはならない。

また、unsigned int 及び unsigned long を、タイピング量低減のため、UINT 及び ULONG という型に再定義している。

プログラム・ソース("mpa_d.h")           top (トップに戻る)
/*		mpa_d.h		*/
#ifdef		_MPA

#include <stdio.h>
#include <stdlib.h>
#include <math.h>
#include <string.h>
#include <time.h>
#include <values.h>
/*
		NMPA1 = NMPA + 1
		NMPA2 = NMPA1 * 2
		MMPA  = NMPA1 * log10(RADIX) / 4
*/
#define		NMPA		100
#define		NMPA1		101
#define		NMPA2		202
#define		MMPA		114

#define		RADIXBITS	15
#define		RADIX		0x8000			/* = 2 ^ RADIXBITS */
#define		RADIX1		0x7fff			/* = RADIX - 1 */
#define		RADIX_2		16384			/* = RADIX / 2 */
#define		RADIX2		1073741824L		/* = RADIX ^ 2 */
#define		MAXEXP		16383
#define		MINEXP		-16384
#define		MAX_LONG	0x7FFFFFFFL
#define		MIN_LONG	0x80000000L
#define		MAX_K		180				/* < (sqrt(4 * RADIX + 1) - 1) * 0.5 */

typedef		unsigned int		UINT;
typedef		unsigned long		ULONG;
typedef		struct
			{
				int sign;
				int exp;
				int zero;
				UINT num[NMPA1];
			}							MPA;

#endif