add numerical recipes library
This commit is contained in:
34
lib/nr/k_and_r/recipes/simp2.c
Normal file
34
lib/nr/k_and_r/recipes/simp2.c
Normal file
@@ -0,0 +1,34 @@
|
||||
|
||||
#define EPS 1.0e-6
|
||||
|
||||
void simp2(a,m,n,ip,kp)
|
||||
float **a;
|
||||
int *ip,kp,m,n;
|
||||
{
|
||||
int k,i;
|
||||
float qp,q0,q,q1;
|
||||
|
||||
*ip=0;
|
||||
for (i=1;i<=m;i++)
|
||||
if (a[i+1][kp+1] < -EPS) break;
|
||||
if (i>m) return;
|
||||
q1 = -a[i+1][1]/a[i+1][kp+1];
|
||||
*ip=i;
|
||||
for (i=*ip+1;i<=m;i++) {
|
||||
if (a[i+1][kp+1] < -EPS) {
|
||||
q = -a[i+1][1]/a[i+1][kp+1];
|
||||
if (q < q1) {
|
||||
*ip=i;
|
||||
q1=q;
|
||||
} else if (q == q1) {
|
||||
for (k=1;k<=n;k++) {
|
||||
qp = -a[*ip+1][k+1]/a[*ip+1][kp+1];
|
||||
q0 = -a[i+1][k+1]/a[i+1][kp+1];
|
||||
if (q0 != qp) break;
|
||||
}
|
||||
if (q0 < qp) *ip=i;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#undef EPS
|
||||
Reference in New Issue
Block a user