40 double divider_limit=1.0E-12;
42 if(data_nr<0 || i==NULL || ii==NULL || c==NULL || x==NULL || y==NULL)
44 for(fi=0; fi<data_nr; fi++) {
46 if(isnan(i[fi]) || isnan(ii[fi]) || isnan(c[fi]))
continue;
47 if(!(i[fi]>-1.0E+20 && i[fi]<+1.0E+20))
continue;
48 if(!(ii[fi]>-1.0E+20 && ii[fi]<+1.0E+20))
continue;
49 if(!(c[fi]>-1.0E+20 && c[fi]<+1.0E+20))
continue;
51 if(ii[fi]<0.0) {plot_nr=0;
continue;}
53 if(fabs(i[fi])<divider_limit)
continue;
55 x[plot_nr]=ii[fi]/i[fi];
56 if(!(x[plot_nr]>-1.0E+20 && x[plot_nr]<+1.0E+20))
continue;
57 if(x[plot_nr]<0.0)
continue;
59 y[plot_nr]=c[fi]/i[fi];
60 if(!(y[plot_nr]>-1.0E+20 && y[plot_nr]<+1.0E+20))
continue;
101 double divider_limit=1.0E-18;
103 if(data_nr<0 || i==NULL || ii==NULL || c==NULL || ci==NULL)
return -1;
104 if(x==NULL || y==NULL)
return -1;
106 for(fi=0; fi<data_nr; fi++) {
108 if(isnan(i[fi]) || isnan(ii[fi]) || isnan(c[fi]) || isnan(ci[fi]))
continue;
109 if(!(i[fi]>-1.0E+30 && i[fi]<+1.0E+30))
continue;
110 if(!(ii[fi]>-1.0E+30 && ii[fi]<+1.0E+30))
continue;
111 if(!(c[fi]>-1.0E+30 && c[fi]<+1.0E+30))
continue;
112 if(!(ci[fi]>-1.0E+30 && ci[fi]<+1.0E+30))
continue;
114 if(ii[fi]<0.0) {plot_nr=0;
continue;}
115 if(ci[fi]<0.0) {plot_nr=0;
continue;}
117 if(fabs(c[fi])<divider_limit)
continue;
119 if(k2>0.0) x[plot_nr]=(ii[fi]+i[fi]/k2)/c[fi];
120 else x[plot_nr]=ii[fi]/c[fi];
121 if(!(x[plot_nr]>-1.0E+30 && x[plot_nr]<+1.0E+30))
continue;
123 y[plot_nr]=ci[fi]/c[fi];
124 if(!(y[plot_nr]>-1.0E+30 && y[plot_nr]<+1.0E+30))
continue;
157 int from, to, ret, from_min, to_min;
158 double lic, lslope, lssd, ssd_min;
161 ssd_min=9.99E+99; from_min=to_min=-1;
163 ret=
llsqperp(x+from, y+from, (to-from)+1, &lslope, &lic, &lssd);
164 if(ret==0 && lssd<ssd_min) {
165 ssd_min=lssd; from_min=from; to_min=to;
166 *slope=lslope; *ic=lic;
if(ssd!=NULL) *ssd=lssd;
170 if(fnr!=NULL) *fnr=0;
171 if(ssd!=NULL) *ssd=0.0;
174 if(fnr!=NULL) *fnr=(to_min-from_min)+1;
Header file for libtpcmodel.
int llsqperp(double *x, double *y, int nr, double *slope, double *ic, double *ssd)
int patlak_data(int data_nr, double *i, double *ii, double *c, double *x, double *y)
int mtga_best_perp(double *x, double *y, int nr, double *slope, double *ic, double *ssd, int *fnr)
int logan_data(int data_nr, double *i, double *ii, double *c, double *ci, double k2, double *x, double *y)