Changeset 41340 for trunk/Ohana/src/opihi/cmd.data/vgauss.c
- Timestamp:
- Apr 16, 2020, 1:54:47 PM (6 years ago)
- File:
-
- 1 edited
-
trunk/Ohana/src/opihi/cmd.data/vgauss.c (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.data/vgauss.c
r41164 r41340 3 3 /* local private functions */ 4 4 opihi_flt fgaussOD (opihi_flt, opihi_flt *, int, opihi_flt *); 5 int vgauss_apply (int argc, char **argv);6 5 7 6 # define GET_VAR(V,A) \ … … 21 20 Vector *xvec, *yvec, *svec, *ovec; 22 21 char *c, name[16]; 23 24 if ((N = get_argument (argc, argv, "-apply"))) {25 remove_argument (N, &argc, argv);26 int status = vgauss_apply (argc, argv);27 return status;28 }29 22 30 23 Quiet = FALSE; … … 111 104 } 112 105 if (!Quiet) gprint (GP_ERR, "%d iterations\n", i); 113 set_variable ("Chisq", chisq);114 set_variable ("ChisqNu", chisq / (float) (Npts - Npar));115 106 116 107 for (i = 0; i < Npts; i++) { … … 134 125 } 135 126 136 int vgauss_apply (int argc, char **argv) {137 138 opihi_flt par[4];139 Vector *xvec, *ovec;140 char *c;141 142 // NOTE: -apply has already been stripped by vgauss call143 if (argc != 3) {144 gprint (GP_ERR, "USAGE: vgauss -apply <x> <out>\n");145 return (FALSE);146 }147 148 if ((xvec = SelectVector (argv[1], OLDVECTOR, TRUE)) == NULL) return (FALSE);149 if ((ovec = SelectVector (argv[2], ANYVECTOR, TRUE)) == NULL) return (FALSE);150 151 CastVector (xvec, OPIHI_FLT);152 153 GET_VAR (par[0], "C0");154 GET_VAR (par[1], "C1");155 GET_VAR (par[2], "C2");156 GET_VAR (par[3], "C3");157 int Npar = 4;158 159 int Npts = xvec[0].Nelements;160 ResetVector (ovec, OPIHI_FLT, Npts);161 162 for (int i = 0; i < Npts; i++) {163 ovec[0].elements.Flt[i] = fgaussOD (xvec[0].elements.Flt[i], par, Npar, NULL);164 }165 ovec[0].Nelements = Npts;166 167 return TRUE;168 }169 170 127 /* pars: x_o, sigma, I, back */ 171 128 opihi_flt fgaussOD (opihi_flt x, opihi_flt *par, int Npar, opihi_flt *dpar) { … … 178 135 f = par[2]*r + par[3]; 179 136 180 if (dpar) { 181 dpar[0] = par[2]*r*z/par[1]; 182 dpar[1] = par[2]*r*z*z/par[1]; 183 dpar[2] = r; 184 dpar[3] = 1; 185 } 137 dpar[0] = par[2]*r*z/par[1]; 138 dpar[1] = par[2]*r*z*z/par[1]; 139 dpar[2] = r; 140 dpar[3] = 1; 186 141 187 142 return (f);
Note:
See TracChangeset
for help on using the changeset viewer.
