科学技術計算ライブラリ プログラム・ヘッダ


index 目次

(1) 複素数 (10) 確率分布
(2) 一般・特殊関数 (11) グラフィックス・ユーティリティ
(3) 微積分 (12) 回帰
(4) 代数方程式 (13) 分散分析
(5) 連立1次方程式 (14) 検定
(6) 行列 (15) 区間推定
(7) 高速フーリエ変換 (16) 常微分方程式
(8) 補間 (17) その他
(9) 標準統計量
 
 ・ プログラム・ソース("sslib.h")

[ 簡単な説明 ]

科学技術計算ライブラリ内で定義している関数のプロトタイプ宣言を行っています。
以下に各関数名と機能の一覧表を示します。

(1) complex.c : 複素数ライブラリ          index (目次に戻る)

関数名 関数の機能   関数名 関数の機能
cadd( ) 四則演算 加算 csin( ) 三角関数 正弦関数
csub( ) 減算 ccos( ) 余弦関数
cmul( ) 乗算 ctan( ) 正接関数
cmul1( ) 乗算(対 double) csqrt( ) 平方根
cdiv( ) 除算 tocomplex( ) double → Complex データ変換
cdiv1( ) 除算(対 double) conj( ) 複素共役
cln( ) 対数関数 自然対数 cfunc( ) 代数多項式の値計算
clog10( ) 対数関数 cabslt( ) 絶対値
cexp( ) 指数関数 carg( ) 偏角
cpow( ) ベキ乗 Complex 乗 cne( ) 判定 異値判定
cpowd( ) double 乗 ceq( ) 等値判定


(2) function.c : 一般・特殊関数ライブラリ        index (目次に戻る)

関数名 関数の機能   関数名 関数の機能
besj0( ) ベッセル関数 第1種 J0(x) cbrt( ) 立方根
besj1( ) 第1種 J1(x) erfnc( ) 誤差関数
besy0( ) 第2種 Y0(x) gammaf( ) ガンマ関数Γ(x)
besy1( ) 第2種 Y1(x) legend( ) ルジャンドルの多項式
besi0( ) 第1種変形 I0(x) celi1( ) 完全楕円積分 第1種
besi1( ) 第1種変形 I1(x) celi2( ) 第2種
besk0( ) 第2種変形 K0(x)  
besk1( ) 第2種変形 K1(x)  


(3) difint.c, bibun.c, simp.c : 微積分ライブラリ     index (目次に戻る)

関数名 微積分 関数の機能
lagdif( ) 微分 ラグランジェ法
spldif( ) 3次スプライン関数法
difm1( ) 中点法 1次
difm2( ) 2次
difm3( ) 3次
difm4( ) 4次
difm5( ) 5次
difm6( ) 6次
difm7( ) 7次
difm8( ) 8次
diff2( ) 前進法 2次
diff3( ) 3次
diff4( ) 4次
diff5( ) 5次
difb2( ) 後退法 2次
difb3( ) 3次
difb4( ) 4次
difb5( ) 5次
subspl( ) (両用) 3次スプライン関数ルーチン
trap( ) 積分 有限区間 台形法
simpei( ) シンプソン法 等間隔
simpui( ) 不等間隔
splitg( ) 3次スプライン関数法
cheb3( ) チェビシェフ法 3点法
cheb4( ) 4点法
cheb6( ) 6点法
dgl3( ) ガウス・ルジャンドル法 3分点
dgl10( ) 10分点
dgl20( ) 20分点
dgl32( ) 32分点
dgl48( ) 48分点
hardy( ) ハーディ法
lomberg( ) ロンバーグ法
nc1( ) ニュートン・コーツ式 第1式
nc2( ) 第2式
nc3( ) 第3式
nc4( ) 第4式
nc5( ) 第5式
nc6( ) 第6式
nc7( ) 第7式
nc8( ) 第8式
weddle( ) ウェドル法
dglg3( ) 半無限区間 ガウス・ラゲール法 3分点
dglg5( ) 5分点
dglg10( ) 10分点
dgh10( ) 無限区間 ガウス・エルミート法 10分点
dgh15( ) 15分点
simpe2( ) 2次元 等間隔シンプソン法
_Normal( ) (積分) 積分区間正規化変換関数


(4) poly.c, regula.c : 代数方程式ライブラリ     index (目次に戻る)

関数名 関数の機能
qurt( ) 2次代数方程式
carda( ) 3次代数方程式 カルダノ法
newton( ) 高次代数方程式 ニュートン法
bairs( ) ベアストウ法
regula( ) 超越代数方程式 レギュラ・ファルシ法
cnewton( ) 複素係数高次代数方程式 ニュートン法
dka( ) DKA法


(5) linear.c : 連立1次方程式ライブラリ

関数名 関数の機能
gausei( ) 実係数連立1次方程式 ガウス・ザイデル法
gauss( ) ガウス消去法
gaujor( ) ガウス・ジョルダン法
ludcmp( ) LU分解法
cgm( ) 共役傾斜法
trdiam( ) 三角対角行列の解法
cgauj( ) 複素係数連立1次方程式 ガウス・ジョルダン法


(6) matrix.c : 行列ライブラリ            index (目次に戻る)

関数名 関数の機能   関数名 関数の機能
madd( ) 行列加算 mtra1( ) 行列転置( a T → a )
msub( ) 行列減算 mtra2( ) 行列転置( a T → b )
mmul1( ) 行列乗算( a × b → b ) minver( ) 逆行列と行列式の値
mmul2( ) 行列乗算( a × b → c ) mmove( ) 行列コピー
    mswap( ) 行列入替え


(7) fft.c : 高速フーリエ変換ライブラリ

関数名 関数の機能
fft1( ) 高速フーリエ変換 1次元 double 型データ
fft1x( ) Complex 型データ
fft2( ) 2次元 double 型データ
fft2x( ) Complex 型データ


(8) interp.c : 補間ライブラリ         index (目次に戻る)

関数名 関数の機能
lstsq( ) 最小2乗近似法
lagra( ) ラグランジェ補間
splint( ) スプライン補間
chebyshev( ) チェビシェフ近似
polynomial( ) 多項式計算


(9) basstat.c : 標準統計量ライブラリ

関数名 関数の機能
sorti1( ) int 型データ 昇順ソート
sorti2( ) 降順ソート
sortii1( ) 間接昇順ソート
sortii2( ) 間接降順ソート
sortd1( ) double 型データ 昇順ソート
sortd2( ) 降順ソート
sortdi1( ) 間接昇順ソート
sortdi2( ) 間接降順ソート
stat( ) 基本統計量計算
swapi( ) データ入替え int 型データ
swapd( ) double 型データ
swapc( ) char 型データ
swapx( ) Complex 型データ


(10) dist.c : 確率分布ライブラリ         index (目次に戻る)

関数名 関数の機能
qnorm( ) 正規分布 累積確率
pnorm( ) パーセント点
qchi( ) χ2分布 上側確率
pchi( ) パーセント点
qt( ) t分布 両側確率
qtsub( ) 両側確率用スレーブルーチン
pt( ) パーセント点
ptsub( ) パーセント点用スレーブルーチン
qf( ) F分布 上側確率
pf( ) パーセント点
pfsub( ) パーセント点用スレーブルーチン


(11)axis.c : グラフィックス・ユーティリティライブラリ  index (目次に戻る)

関数名 関数の機能
dtor( ) 角度変換 度→ラジアン
rtod( ) ラジアン→度
dtop2( ) 2次元 座標変換 デカルト座標→極座標
ptod2( ) 極座標→デカルト座標
dmov2( ) 平行移動 デカルト座標
pmov2( ) 極座標
drot2( ) 回転移動 デカルト座標
prot2( ) 極座標
dtoc3( ) 3次元 座標変換 デカルト座標→円柱座標
ctod3( ) 円柱座標→デカルト座標
dtop3( ) デカルト座標→極座標
ptod3( ) 極座標→デカルト座標
ptoc3( ) 極座標→円柱座標
ctop3( ) 円柱座標→極座標
dpmov3( ) 平行移動 デカルト座標
cpmov3( ) 円柱座標
ppmov3( ) 極座標
drot3( ) 回転移動 デカルト座標
crot3( ) 円柱座標
prot3( ) 極座標


(12) corr.c : 回帰ライブラリ             index (目次に戻る)

関数名 関数の機能
corr( ) 相関係数
sreg( ) 単回帰分析


(13) vari.c : 分散分析ライブラリ

関数名 関数の機能
aov1( ) 1元配置
aov2( ) 2元配置


(14) test.c : 検定ライブラリ

関数名 関数の機能
mtst1( ) 母平均検定 母分散既知
mtst2( ) 母分散未知
mdtst1( ) 2つの母平均の差の検定 母分散既知
mdtst2( ) 母分散未知(等しい)
mdtst3( ) 母分散未知(異なる)
nbptst( ) 母百分率(不良率)の検定 正規分布検定
fbptst( ) F分布検定
bpdtst( ) 2つの母百分率(不良率)の差の検定
vtst( ) 母分散の検定
vdtst( ) 等分散の検定
cont22( ) 独立性検定 2元分割表
contlm( ) L×M分割表
thomp( ) 棄却検定(Thompsonの方法)
rttst( ) 無相関のt検定
rptst( ) 母相関係数の検定
rptst2( ) 2つの母集団の母相関係数の等値検定


(15)esti.c : 区間推定ライブラリ             index (目次に戻る)

関数名 関数の機能
mest1( ) 母平均の区間推定 母分散既知
mest2( ) 母分散未知
mdest1( ) 母平均の差の区間推定 母分散既知
mdest2( ) 母分散未知(等しい)
vest( ) 母分散の区間推定
vpest( ) 母分散の比の区間推定
bpest( ) 母百分率(不良率)の区間推定
bpdest( ) 2つの母百分率(不良率)の差の区間推定
rest( ) 母相関係数の区間推定


(16)rkg.c : 常微分方程式ライブラリ
関数名 関数の機能
rngkg( ) 1階常微分方程式 ルンゲ・クッタ・ギル法
hamng( ) ハミング法
rngkgm( ) 連立1階常微分方程式 ルンゲ・クッタ・ギル法


(17) etc.c : その他関数ライブラリ             index (目次に戻る)

関数名 関数の機能
normal( ) 乱数 正規乱数
rnd( ) 一様乱数
poison( ) ポアソン乱数
bino( ) 2項係数
filt( ) 逆ラプラス変換
kaijo1( ) 階乗 n!計算
kaijo2( ) 10 log10n!
log_kai1( ) 階乗の常用対数 log10n!
log_kai2( ) 近似式使用
minmax_i( ) 最大値、最小値 int 型配列
minmax_d( ) double 型配列
minmax_c( ) unsigned char 型配列

プログラム・ソース("sslib.h")           index (目次に戻る)
/*		sslib.h		include file for sslib		*/
#ifndef _SSLIB
#define _SSLIB

#include	<math.h>

typedef		struct
			{
				double r;
				double i;
			}				Complex;

#ifndef	MAX_LONG
#define		MAX_LONG		 2147483647L
#endif
#ifndef	MIN_LONG
#define		MIN_LONG		-2147483648L
#endif

/*	complex.c	*/
Complex cadd(Complex a, Complex b);
Complex csub(Complex a, Complex b);
Complex cmul(Complex a, Complex b);
Complex cmul1(Complex a, double k);
Complex cdiv(Complex a, Complex b);
Complex cdiv1(Complex a, double k);
Complex cln(Complex a);
Complex clog10(Complex a);
Complex cexp(Complex a);
Complex cpow(Complex a, Complex b);
Complex cpowd(Complex a, double n);
Complex csin(Complex a);
Complex ccos(Complex a);
Complex ctan(Complex a);
Complex csqrt(Complex a);
Complex tocomplex(double x, double y);
Complex conj(Complex a);
Complex cfunc(Complex *a, int n, Complex x);
double cabslt(Complex a);
double carg(Complex a);
int ceq(Complex a, Complex b);
int cne(Complex a, Complex b);

/*	function.c	*/
double cbrt(double a);
double besj0(double x);
double besj1(double x);
double besy0(double x);
double besy1(double x);
double besi0(double x);
double besi1(double x);
double besk0(double x);
double besk1(double x);
double erfnc(double x);
double gammaf(double x);
double legend(double x, int n);
double celi1(double k, double eps);
double celi2(double k, double eps);

/*	difint.c	*/
double cheb3(double a, double b);
double cheb4(double a, double b);
double cheb6(double a, double b);
double dgl3(double a, double b);
double dgl10(double a, double b);
double dgl20(double a, double b);
double dgl32(double a, double b);
double dgl48(double a, double b);
double dglg3(void);
double dglg5(void);
double dglg10(void);
double dgh10(void);
double dgh15(void);
double hardy(double xmin, double xmax, int n);
double lomberg(double xmin, double xmax, double eps);
double nc1(double xmin, double xmax, int n);
double nc2(double xmin, double xmax, int n);
double nc3(double xmin, double xmax, int n);
double nc4(double xmin, double xmax, int n);
double nc5(double xmin, double xmax, int n);
double nc6(double xmin, double xmax, int n);
double nc7(double xmin, double xmax, int n);
double nc8(double xmin, double xmax, int n);
double weddle(double xmin, double xmax, int n);
double _Normal(double a, double b, double x);
double difm1(double x, double h);
double difm2(double x, double h);
double difm3(double x, double h);
double difm4(double x, double h);
double difm5(double x, double h);
double difm6(double x, double h);
double difm7(double x, double h);
double difm8(double x, double h);

/*	bibun.c	*/
double diff2(double x, double h);
double diff3(double x, double h);
double diff4(double x, double h);
double diff5(double x, double h);
double difb2(double x, double h);
double difb3(double x, double h);
double difb4(double x, double h);
double difb5(double x, double h);

/*	simp.c	*/
double lagdif(double xd[], double yd[], int n, double xx);
double spldif(double xd[], double yd[], int n, double xx);
void subspl(double x[], double y[], int n, double h[], double sp[]);
double trap(double xx[], double yy[], int n);
double simpei(double y[], int n, double h);
double simpui(double xx[], double yy[], int n);
double splitg(double xx[], double yy[], int n);
double simpe2(double y[], int m, int n, double h1, double h2);

/*	poly.c	*/
void qurt(Complex a, Complex b, Complex c, Complex x[]);
void carda(double a[], Complex x[]);
double newton(double a[], int n, double eps, int iter);
void bairs(double a[], int n, double eps, int iter, Complex x[]);
int cnewton(Complex a[], Complex r[], int n, double eps, int iter);
int dka(Complex a[], Complex r[], int n, double eps, int iter);

/*	regula.c	*/
double regula(double xs, double xe, double h, double eps, int iter);

/*	linear.c	*/
void gausei(double a[], int l, int m, int iter, double eps, double x[]);
void gauss(double a[], int l, int m, int n, double eps);
void gaujor(double a[], int l, int m, int n, double eps);
int ludcmp(double aa[], double b[], double x[], double eps, int n);
int trdiam(double al[], double am[], double au[], double b[], int n, double x[]);
void cgauj(Complex a[], int l, int m, int n, double eps);

/*	matrix.c	*/
void madd(double a[], double b[], double c[], int la, int lb, int lc, int m, int n);
void msub(double a[], double b[], double c[], int la, int lb, int lc, int m, int n);
void mmul1(double a[], double b[], int la, int lb, int m);
void mmul2(double a[], double b[], double c[], int la, int lb, int lc, int m, int n, int k);
void mtra1(double a[], int l, int m, int n);
void mtra2(double a[], double b[], int la, int lb, int m, int n);
double minver(double a[], int l, int m, double eps);
void mmove(double a[], double b[], int la, int lb, int m, int n);
void mswap(double a[], double b[], int la, int lb, int m, int n);
int jacobi(double a[], double v[], int l, int m, int *nr, double eps);

/*	fft.c	*/
void fft1(double ar[], double ai[], int n, int iter, int flag);
void fft1x(Complex a[], int n, int iter, int flag);
void fft2(double ar[], double ai[], int n, int nmax, int flag);
void fft2x(Complex a[], int n, int nmax, int flag);

/*	interp.c	*/
void lstsq(double x[], double y[], int n, int m, double c[]);
double lagra(double xx[], double yy[], int n, double xi);
double splint(double xx[], double yy[], int n, double xi);
double polynomial(double a[], double x, int n);
void chebyshev(double min, double max, int n, double a[]);

/*	basstat.c	*/
void sorti1(int a[], int n);
void sorti2(int a[], int n);
void sortii1(int a[], int n, int jun[]);
void sortii2(int a[], int n, int jun[]);
void sortd1(double a[], int n);
void sortd2(double a[], int n);
void sortdi1(double a[], int n, int jun[]);
void sortdi2(double a[], int n, int jun[]);
int stat(double a[], int n, double *min, double *max, double *amp, double *sum, double *sum2, double *ave, double *gmean, double *hmean, double *amad, double *s, double *v, double *st, double *uv, double *squv, double *cv, double *sk, double *ku);
void swapi(int *a, int *b);
void swapd(double *a, double *b);
void swapc(char *a, char *b);
void swapx(Complex *a, Complex *b);

/*	dist.c	*/
double qnorm(double u);
double pnorm(double qn);
double qchi(double x2, int n);
double pchi(double qc, int n);
double qt(double t, int n);
void qtsub(double *q, int n, double w2, double w3, double t2);
double pt(double q, int n);
double ptsub(double q, int n);
double qf(double f, int n1, int n2);
double pf(double q, int n1, int n2);
double pfsub(double x, double y, double z);

/*	axis	*/
int dtor(double deg, double *rad);
int rtod(double rad, double *deg);
int dtop2(double xo, double yo, double *r, double *t);
int ptod2(double r, double t, double *x, double *y);
int dmov2(double xo, double yo, double xm, double ym, double *x, double *y);
int pmov2(double ro, double to, double xm, double ym, double *r, double *t);
int drot2(double xo, double yo, double t, double *x, double *y);
int prot2(double ro, double to, double trot, double *r, double *t);
int dtoc3(double dx, double dy, double dz, double *cr, double *ct, double *cz);
int ctod3(double cr, double ct, double cz, double *dx, double *dy, double *dz);
int dtop3(double dx, double dy, double dz, double *pr, double *pe, double *pp);
int ptod3(double pr, double pe, double pp, double *dx, double *dy, double *dz);
int ptoc3(double pr, double pe, double pp, double *cr, double *ct, double *cz);
int ctop3(double cr, double ct, double cz, double *pr, double *pe, double *pp);
int dpmov3(double xo, double yo, double zo, double dx, double dy, double dz,
	double *x, double *y, double *z);
int cpmov3(double cro, double cto, double czo, double dx, double dy, double dz,
	double *cr, double *ct, double *cz);
int ppmov3(double pro, double peo, double ppo, double dx, double dy, double dz,
	double *pr, double *pe, double *pp);
int drot3(double dxo, double dyo, double dzo, double phai, double thet,
	double psai, double *dx, double *dy, double *dz);
int crot3(double cro, double cto, double czo, double phai, double thet,
	double psai, double *cr, double *ct, double *cz);
int prot3(double pro, double peo, double ppo, double phai, double thet,
	double psai, double *pr, double *pe, double *pp);

/*	corr.c	*/
int corr(double x[], double y[], int n, double xbar, double ybar,
	double *uxy, double *r0);
int sreg(double x[], double y[], int n, double sx, double g,
	double *a, double *b, double *dyx, double *va, double *vb, double *al,
	double *au, double *bl, double *bu);

/*	vari.c	*/
int aov1(double x[], int n[], int l, int m, double al, double *sa, double *se,
	double *st, int *nua, int *nue, int *nut, double *va, double *ve,
	double *f0, double *f);
int aov2(double x[], int l, int m, int n, double al, double *sa, double *sb,
	double *se, double *st, int *nua, int *nub, int *nue, int *nut, double *va,
	double *vb, double *ve, double *f0a, double *f0b, double *fa, double *fb);

/*	test.c	*/
int mtst1(int n, double xbar, double pm, double pv, double al,
	int *sw, double *u0, double *u);
int mtst2(int n, double xbar, double pm, double uv, double al,
	int *sw, double *t0, double *t);
int mdtst1(int n1, int n2, double xbar1, double xbar2, double pv1, double pv2,
	double al, int *sw, double *u0, double *u);
int mdtst2(int n1, int n2, double xbar1, double xbar2, double s1, double s2,
	double al, int *sw, double *t0, double *t);
int mdtst3(int n1, int n2, double xbar1, double xbar2, double uv1, double uv2,
	double al, int *sw, double *t0, double *t);
int nbptst(int n, double ps, double pp, double al, int *sw, double *u0, double *u);
int fbptst(int n, double ps, double pp, double al, int *sw, double *f0, double *f);
int bpdtst(int n1, int n2, double ps1, double ps2, double al,
	int *sw, double *u0, double *u);
int vtst(int sw1, int n, double s, double v, double al,
	int *sw2, double *x20, double *x21, double *x22);
int vdtst(int n1, int n2, double uv1, double uv2, double al,
	int *sw, double *f0, double *f);
int cont22(int *sw, double a, double b, double c, double d, double al,
	double *x20, double *x2);
int contlm(int l, int m, double a[], double al, double ac[],
	double ar[], double *at, double ef[], double *x20, double *x2, int *sw);
int thomp(int n, double xk, double xbar, double v, double al,
	int *sw, double *t0, double *t);
int rttst(int n, double r0, double al, int *sw, double *t0, double *t);
int rptst(int n, double r0, double rp, double al, int *sw, double *u0, double *u);
int rptst2(int n1, int n2, double r01, double r02, double al,
	int *sw, double *u0, double *u);

/*	esti.c	*/
int mest1(int n, double xbar, double pv, double g, double *xl, double *xu);
int mest2(int n, double xbar, double squv, double g, double *xl, double *xu);
int mdest1(int n1, int n2, double xbar1, double xbar2, double pv1, double pv2,
	double g, double *xl, double *xu);
int mdest2(int n1, int n2, double xbar1, double xbar2, double v1, double v2,
	double g, double *xl, double *xu);
int vest(int sw, int n, double s, double g, double *xl, double *xu);
int vpest(int n1, int n2, double uv1, double uv2, double g, double *xl, double *xu);
int bpest(int n, double ps, double g, double *xl, double *xu);
int bpdest(int n1, int n2, double ps1, double ps2, double g, double *xl, double *xu);
int rest(int n, double r0, double g, double *xl, double *xu);

/*	rkg.c	*/
int rngkg(double x0, double y0, int n, double h, double y[]);
int hamng(double x0, double y0, int n, double h, double y[]);
int rngkgm(double x, double y[], double h, int multi, int n);

/*	etc.c	*/
double normal(double av, double st);
double rnd(void);
int poison(double av);
double bino(int m, int n);
void filt(double ts, double te, double *f, int nt, int n, int m, double *a1, double *b1, double a, double k1, double k2, int p);
double kaijo1(int n);
double kaijo2(int n);
double log_kai1(int n);
double log_kai2(int n);
void minmax_i(int a[], int n, int *min, int *max);
void minmax_d(double a[], int n, double *min, double *max);
void minmax_c(unsigned char *a[], int n, unsigned char **min, unsigned char **max);

extern double _f(double x);
extern double _fxy(double x, double y);
extern void _fmxy(double x, double y[], double dif[], int multi);

#endif