- Timestamp:
- Dec 22, 2009, 9:52:30 AM (17 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/20091201/Ohana/src/opihi/cmd.data/hermitian2d.c
r26463 r26467 3 3 int hermitian2d (int argc, char **argv) { 4 4 5 int i, j, N x, Ny, N;5 int i, j, N, Nx, Ny, Xorder, Yorder, Poly; 6 6 float *in; 7 double Sig_x, Sig_y, Theta; 8 double root1, root2, R, A1, A2, A3; 9 double Sx, Sy, Sxy; 10 double x, y, r, f, Xo, Yo; 7 double Xo, Yo, sigma; 8 double x, y, xf, yf, value, norm, weight; 9 double nf, mf; 11 10 Buffer *buf; 12 11 13 Poly = FALSE; 12 // optionally return the Hermitian Polynomial or the Hermitian Function 13 Poly = FALSE; 14 14 if ((N = get_argument (argc, argv, "-poly"))) { 15 15 Poly = TRUE; … … 26 26 } 27 27 28 if (argc > 5) { 29 gprint (GP_ERR, "USAGE: hermitian2d (buffer) (sigma) Xorder Yorder\n"); 30 return (FALSE); 31 } 28 if (argc != 5) goto usage; 32 29 33 30 /* select input / output buffers */ … … 43 40 Xorder = atof (argv[3]); 44 41 Yorder = atof (argv[4]); 42 if (Xorder < 0) goto usage; 43 if (Yorder < 0) goto usage; 44 if (Xorder > 10) goto usage; 45 if (Yorder > 10) goto usage; 46 47 nf = exp(lgamma(Xorder + 1)); 48 mf = exp(lgamma(Yorder + 1)); 49 norm = 1.0 / sqrt(nf*mf*2*M_PI) / sigma; 45 50 46 51 in = (float *) buf[0].matrix.buffer; … … 58 63 value = xf*yf; 59 64 if (!Poly) { 60 value *= xf*yf; 65 weight = norm*exp(-0.25*(x*x + y*y)); 66 value *= weight; 61 67 } 62 68 63 *in += xf*yf;69 *in += value; 64 70 } 65 71 } 66 72 67 73 return (TRUE); 74 75 usage: 76 gprint (GP_ERR, "USAGE: hermitian2d (buffer) (sigma) Xorder Yorder\n"); 77 gprint (GP_ERR, " Note : only orders up to 10 are supported\n"); 78 return (FALSE); 68 79 }
Note:
See TracChangeset
for help on using the changeset viewer.
