JPRED-2 Add sources of all binaries (except alscript) to Git
[jpred.git] / sources / multicoil / nrutil.c
diff --git a/sources/multicoil/nrutil.c b/sources/multicoil/nrutil.c
new file mode 100644 (file)
index 0000000..cb63421
--- /dev/null
@@ -0,0 +1,209 @@
+
+#include <malloc.h>
+#include <stdio.h>
+
+void nrerror(error_text)
+char error_text[];
+{
+       void exit();
+
+       fprintf(stderr,"Numerical Recipes run-time error...\n");
+       fprintf(stderr,"%s\n",error_text);
+       fprintf(stderr,"...now exiting to system...\n");
+       exit(1);
+}
+
+
+
+double *vector(nl,nh)
+int nl,nh;
+{
+       double *v;
+
+       v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
+       if (!v) nrerror("allocation failure in vector()");
+       return v-nl;
+}
+
+int *ivector(nl,nh)
+int nl,nh;
+{
+       int *v;
+
+       v=(int *)malloc((unsigned) (nh-nl+1)*sizeof(int));
+       if (!v) nrerror("allocation failure in ivector()");
+       return v-nl;
+}
+
+double *dvector(nl,nh)
+int nl,nh;
+{
+       double *v;
+
+       v=(double *)malloc((unsigned) (nh-nl+1)*sizeof(double));
+       if (!v) nrerror("allocation failure in dvector()");
+       return v-nl;
+}
+
+
+
+double **matrix(nrl,nrh,ncl,nch)
+int nrl,nrh,ncl,nch;
+{
+       int i;
+       double **m;
+
+       m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
+       if (!m) nrerror("allocation failure 1 in matrix()");
+       m -= nrl;
+
+       for(i=nrl;i<=nrh;i++) {
+               m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
+               if (!m[i]) nrerror("allocation failure 2 in matrix()");
+               m[i] -= ncl;
+       }
+       return m;
+}
+
+double **dmatrix(nrl,nrh,ncl,nch)
+int nrl,nrh,ncl,nch;
+{
+       int i;
+       double **m;
+
+       m=(double **) malloc((unsigned) (nrh-nrl+1)*sizeof(double*));
+       if (!m) nrerror("allocation failure 1 in dmatrix()");
+       m -= nrl;
+
+       for(i=nrl;i<=nrh;i++) {
+               m[i]=(double *) malloc((unsigned) (nch-ncl+1)*sizeof(double));
+               if (!m[i]) nrerror("allocation failure 2 in dmatrix()");
+               m[i] -= ncl;
+       }
+       return m;
+}
+
+int **imatrix(nrl,nrh,ncl,nch)
+int nrl,nrh,ncl,nch;
+{
+       int i,**m;
+
+       m=(int **)malloc((unsigned) (nrh-nrl+1)*sizeof(int*));
+       if (!m) nrerror("allocation failure 1 in imatrix()");
+       m -= nrl;
+
+       for(i=nrl;i<=nrh;i++) {
+               m[i]=(int *)malloc((unsigned) (nch-ncl+1)*sizeof(int));
+               if (!m[i]) nrerror("allocation failure 2 in imatrix()");
+               m[i] -= ncl;
+       }
+       return m;
+}
+
+
+
+double **submatrix(a,oldrl,oldrh,oldcl,oldch,newrl,newcl)
+double **a;
+int oldrl,oldrh,oldcl,oldch,newrl,newcl;
+{
+       int i,j;
+       double **m;
+
+       m=(double **) malloc((unsigned) (oldrh-oldrl+1)*sizeof(double*));
+       if (!m) nrerror("allocation failure in submatrix()");
+       m -= newrl;
+
+       for(i=oldrl,j=newrl;i<=oldrh;i++,j++) m[j]=a[i]+oldcl-newcl;
+
+       return m;
+}
+
+
+
+void free_vector(v,nl,nh)
+double *v;
+int nl,nh;
+{
+       free((char*) (v+nl));
+}
+
+void free_ivector(v,nl,nh)
+int *v,nl,nh;
+{
+       free((char*) (v+nl));
+}
+
+void free_dvector(v,nl,nh)
+double *v;
+int nl,nh;
+{
+       free((char*) (v+nl));
+}
+
+
+
+void free_matrix(m,nrl,nrh,ncl,nch)
+double **m;
+int nrl,nrh,ncl,nch;
+{
+       int i;
+
+       for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
+       free((char*) (m+nrl));
+}
+
+void free_dmatrix(m,nrl,nrh,ncl,nch)
+double **m;
+int nrl,nrh,ncl,nch;
+{
+       int i;
+
+       for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
+       free((char*) (m+nrl));
+}
+
+void free_imatrix(m,nrl,nrh,ncl,nch)
+int **m;
+int nrl,nrh,ncl,nch;
+{
+       int i;
+
+       for(i=nrh;i>=nrl;i--) free((char*) (m[i]+ncl));
+       free((char*) (m+nrl));
+}
+
+
+
+void free_submatrix(b,nrl,nrh,ncl,nch)
+double **b;
+int nrl,nrh,ncl,nch;
+{
+       free((char*) (b+nrl));
+}
+
+
+
+double **convert_matrix(a,nrl,nrh,ncl,nch)
+double *a;
+int nrl,nrh,ncl,nch;
+{
+       int i,j,nrow,ncol;
+       double **m;
+
+       nrow=nrh-nrl+1;
+       ncol=nch-ncl+1;
+       m = (double **) malloc((unsigned) (nrow)*sizeof(double*));
+       if (!m) nrerror("allocation failure in convert_matrix()");
+       m -= nrl;
+       for(i=0,j=nrl;i<=nrow-1;i++,j++) m[j]=a+ncol*i-ncl;
+       return m;
+}
+
+
+
+void free_convert_matrix(b,nrl,nrh,ncl,nch)
+double **b;
+int nrl,nrh,ncl,nch;
+{
+       free((char*) (b+nrl));
+}