diff options
author | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
---|---|---|
committer | Joseph Hunkeler <jhunkeler@gmail.com> | 2015-07-08 20:46:52 -0400 |
commit | fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4 (patch) | |
tree | bdda434976bc09c864f2e4fa6f16ba1952b1e555 /noao/digiphot/photcal/lib/prstruct.h | |
download | iraf-linux-fa080de7afc95aa1c19a6e6fc0e0708ced2eadc4.tar.gz |
Initial commit
Diffstat (limited to 'noao/digiphot/photcal/lib/prstruct.h')
-rw-r--r-- | noao/digiphot/photcal/lib/prstruct.h | 344 |
1 files changed, 344 insertions, 0 deletions
diff --git a/noao/digiphot/photcal/lib/prstruct.h b/noao/digiphot/photcal/lib/prstruct.h new file mode 100644 index 00000000..f5a25e73 --- /dev/null +++ b/noao/digiphot/photcal/lib/prstruct.h @@ -0,0 +1,344 @@ +# PRSTRUCT.H -- Parser symbol table structure. + + +# Pointer access +define MEMP Memi + + +# ---------------------------------------------------------------------- +# Parser symbol structure. The symbol table is handled by the SYMTAB +# procedures. The following is the definition of the structure associated +# with each identifier in the table. The following diagram shows graphically +# this structure: +# +# offset +# +---------------------------------------+ +# 0 | symbol type | +# +---------------------------------------+ +# 1 | symbol number | +# +---------------------------------------+ +# 2 | substructure pointer | -> +# +---------------------------------------+ +# 3 next free location +# + +# Symbol structure length +define LEN_PSYM 3 + +# Symbol structure definition +define PSYM_TYPE Memi[$1+0] # type +define PSYM_NUM Memi[$1+1] # sequential number +define PSYM_SUB MEMP[$1+2] # symbol substructure +# next free location ($1 + 3) == LEN_PSYM !!! + + +# ---------------------------------------------------------------------- +# Input column substructure. This substructure is supported for catalog +# and observation input columns (PTY_CATCOL and PTY_OBSCOL). The following +# diagram shows graphically this structure: +# +# offset +# +---------------------------------------+ +# 0 | input column number | +# +---------------------------------------+ +# 1 | error column number | +# +---------------------------------------+ +# 2 | weight column number | +# +---------------------------------------+ +# 3 | spare column flag | +# +---------------------------------------+ +# 4 next free location +# + +# Input column substructure length. +define LEN_PINP 4 + +# Input column substructure definition +define PINP_COL Memi[$1+0] # input column +define PINP_ERRCOL Memi[$1+1] # error column +define PINP_WTSCOL Memi[$1+2] # weight column +define PINP_SPARE Memi[$1+3] # spare flag (YES/NO) +# next free location ($1 + 4) == LEN_PINP !!! + + +# ---------------------------------------------------------------------- +# Fitting parameter substructure. This substructure is supported for +# fitting and constant parameters (PTY_FITPAR and PTY_CONST). The +# following diagram shows graphically this structure: +# +# offset +# +---------------------------------------+ +# 0 | parameter value | +# +---------------------------------------+ +# 1 | parameter delta | +# +---------------------------------------+ +# 2 next free location +# + +# Fitting parameter substructure length. +define LEN_PFIT 2 + +# Fitting parameter substructure definition +define PFIT_VALUE Memr[P2R($1+0)] # parameter value +define PFIT_DELTA Memr[P2R($1+1)] # parameter delta +# next free location ($1 + 2) == LEN_PFIT !!! + + +# ---------------------------------------------------------------------- +# Set equation substructure. This substructure is supported for set +# equation symbols (PTY_SETEQ). The length of this substructure is +# fixed. +# +# offset +# +---------------------------------------+ +# 0 | set equation string offset | +# +---------------------------------------+ +# 1 | error equation string offset | +# +---------------------------------------+ +# 2 | min error equation string offset | +# +---------------------------------------+ +# 3 | max error equation string offset | +# +---------------------------------------+ +# 4 | weight equation string offset | +# +---------------------------------------+ +# 5 | min weight equation string offset | +# +---------------------------------------+ +# 6 | max weight equation string offset | +# +---------------------------------------+ +# 7 | weight equation string offset | +# +---------------------------------------+ +# 8 | error equation code pointer | -> +# +---------------------------------------+ +# 9 | min error equation code pointer | -> +# +---------------------------------------+ +# 10 | max error equation code pointer | -> +# +---------------------------------------+ +# 11 | weight equation code pointer | -> +# +---------------------------------------+ +# 12 | min weight equation code pointer | -> +# +---------------------------------------+ +# 13 | max weight equation code pointer | -> +# +---------------------------------------+ +# 14 next free location +# + +# Set equation substructure length. +define LEN_PSEQ 14 + +# Set equation substructure definition +define PSEQ_EQ Memi[$1 + 0] # equation string offset +define PSEQ_ERROR Memi[$1 + 1] # error equation string offset +define PSEQ_ERRMIN Memi[$1 + 2] # min error equation string offset +define PSEQ_ERRMAX Memi[$1 + 3] # max error equation string offset +define PSEQ_WEIGHT Memi[$1 + 4] # weight equation string offset +define PSEQ_WTSMIN Memi[$1 + 5] # min weight equation string offset +define PSEQ_WTSMAX Memi[$1 + 6] # max weight equation string offset +define PSEQ_RPNEQ MEMP[$1 + 7] # equation code +define PSEQ_RPNERROR MEMP[$1 + 8] # error equation code +define PSEQ_RPNERRMIN MEMP[$1 + 9] # min error equation code +define PSEQ_RPNERRMAX MEMP[$1 + 10] # max error equation code +define PSEQ_RPNWEIGHT MEMP[$1 + 11] # weigt equation code +define PSEQ_RPNWTSMIN MEMP[$1 + 12] # min weight equation code +define PSEQ_RPNWTSMAX MEMP[$1 + 13] # max weight equation code +# next free location ($1 + 14) == LEN_PSEQ !!! + + +# ---------------------------------------------------------------------- +# Transformation equation substructure. This substructure is supported +# for transformation equation symbols (PTY_TRNEQ). The length of this +# substructure is variable, and depends on the total number of variables +# (nvar) and parameters (npar) in the equation. The following diagram +# shows graphically this structure: +# +# offset +# +---------------------------------------+ +# 0 | number of ref. catalog var. = nrcat | +# +---------------------------------------+ +# 1 | number of ref. obs. var. = nrobs | +# +---------------------------------------+ +# 2 | total number of ref. var. = nrvar | +# +---------------------------------------+ +# 3 | number of fit catalog var. = nfcat | +# +---------------------------------------+ +# 4 | number of fit obs. var. = nfobs | +# +---------------------------------------+ +# 5 | total number of fit var. = nfvar | +# +---------------------------------------+ +# 6 | total number of variables = nvar | +# +---------------------------------------+ +# 7 | ref. variable symbol offsets (nrvar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 1 * nrvar + 7 | ref. variable counters (nrvar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nrvar + 7 | fit variable symbol offsets (nfvar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nrvar + 1 * nfvar + 7 | fit variable counters (nfvar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nvar + 7 | number of parameters = npar | +# +---------------------------------------+ +# 2 * nvar + 8 | number of fitting parameters | +# +---------------------------------------+ +# 2 * nvar + 9 | parameter symbol offsets (npar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nvar + 1 * npar + 9 | parameter values (npar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nvar + 2 * npar + 9 | parameter list (npar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 9 | fit equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 10 | reference equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 11 | error equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 12 | min error equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 13 | max error equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 14 | weight equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 15 | min weight equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 16 | max weight equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 17 | X plot equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 18 | Y plot equation string offset | +# +---------------------------------------+ +# 2 * nvar + 3 * npar + 19 | derivative equation offsets (npar) | +# | ... | +# | ... | +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 19 | fit equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 20 | reference equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 21 | error equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 22 | min error equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 23 | max error equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 24 | weight equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 25 | min weight equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 26 | max weight equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 27 | X plot equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 28 | Y plot equation code pointer | -> +# +---------------------------------------+ +# 2 * nvar + 4 * npar + 29 | deriv. equation code pointers (npar) | -> +# | ... | -> +# | ... | -> +# +---------------------------------------+ +# 2 * nvar + 5 * npar + 29 next free location +# + +# Transformation equation substructure length. The macro parameters are +# the total number of variables (npar), and the number of parameters (npar) +# for the equation. +define LEN_PTEQ (2 * $1 + 5 * $2 + 29) + +# Transformation equation substructure definition +# - number of catalog and observation variables, and total number of variables +# for reference equation. +define PTEQ_NRCAT Memi[$1 + 0] +define PTEQ_NROBS Memi[$1 + 1] +define PTEQ_NRVAR Memi[$1 + 2] +# - number of catalog and observation variables, and total number of variables +# for fit equation. +define PTEQ_NFCAT Memi[$1 + 3] +define PTEQ_NFOBS Memi[$1 + 4] +define PTEQ_NFVAR Memi[$1 + 5] +# - total number of variables in the reference and fit equations. +define PTEQ_NVAR Memi[$1 + 6] +# - start of reference variable symbol offsets, and variable counters +define PTEQ_SREFVAR ($1 + 7) +define PTEQ_SREFCNT ($1 + 1 * PTEQ_NRVAR($1) + 7) +# - start of fit variable symbol offsets, and variable counters +define PTEQ_SFITVAR ($1 + 2 * PTEQ_NRVAR($1) + 7) +define PTEQ_SFITCNT ($1 + 2 * PTEQ_NRVAR($1) + 1 * PTEQ_NFVAR($1) + 7) +# - total number of parameters and number of parameters to be fitted. +define PTEQ_NPAR Memi[$1 + 2 * PTEQ_NVAR($1) + 7] +define PTEQ_NFPAR Memi[$1 + 2 * PTEQ_NVAR($1) + 8] +# - Start of parameter offsets, parameter values, parameter list +define PTEQ_SPAR ($1 + 2 * PTEQ_NVAR($1) + 9) +define PTEQ_SPARVAL ($1 + 2 * PTEQ_NVAR($1) + 1 * PTEQ_NPAR($1) + 9) +define PTEQ_SPLIST ($1 + 2 * PTEQ_NVAR($1) + 2 * PTEQ_NPAR($1) + 9) +# - fitting and reference equation string offsets +define PTEQ_FIT Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 9] +define PTEQ_REF Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 10] +# - error, minimum error, and maximum error equation string offsets +define PTEQ_ERROR Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 11] +define PTEQ_ERRMIN Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 12] +define PTEQ_ERRMAX Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 13] +# - weight, minimum weight, and maximum weight equation string offsets +define PTEQ_WEIGHT Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 14] +define PTEQ_WTSMIN Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 15] +define PTEQ_WTSMAX Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 16] +# - plot equation string offsets +define PTEQ_XPLOT Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 17] +define PTEQ_YPLOT Memi[$1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 18] +# - derivative equation string offsets +define PTEQ_SDER ($1 + 2 * PTEQ_NVAR($1) + 3 * PTEQ_NPAR($1) + 19) +# - fitting and reference equation codes +define PTEQ_RPNFIT MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 19] +define PTEQ_RPNREF MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 20] +# - error equation, minimum error, and maximum error codes +define PTEQ_RPNERROR MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 21] +define PTEQ_RPNERRMIN MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 22] +define PTEQ_RPNERRMAX MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 23] +# - weigth, minimum weight, maximum weight equation codes +define PTEQ_RPNWEIGHT MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 24] +define PTEQ_RPNWTSMIN MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 25] +define PTEQ_RPNWTSMAX MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 26] +# - plot equation code3 +define PTEQ_RPNXPLOT MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 27] +define PTEQ_RPNYPLOT MEMP[$1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 28] +# - start of derivarive equation codes +define PTEQ_SRPNDER ($1 + 2 * PTEQ_NVAR($1) + 4 * PTEQ_NPAR($1) + 29) +# - next free location == LEN_PTEQ +# ($1 + 2 * PTEQ_NVAR($1) + 5 * PTEQ_NPAR($1) + 29) + +# Vector access +define PTEQ_AREFVAR Memi[PTEQ_SREFVAR($1)] # ref. variable sym. off. +define PTEQ_AREFCNT Memi[PTEQ_SREFCNT($1)] # ref. variable counters +define PTEQ_AFITVAR Memi[PTEQ_SFITVAR($1)] # fit variable sym. off. +define PTEQ_AFITCNT Memi[PTEQ_SFITCNT($1)] # fit variable counters +define PTEQ_APAR Memi[PTEQ_SPAR($1)] # parameter sym. offsets +define PTEQ_APARVAL Memr[P2R(PTEQ_SPARVAL($1))] # parameter values +define PTEQ_APLIST Memi[PTEQ_SPLIST($1)] # fitting parameter list +define PTEQ_ADER Memi[PTEQ_SDER($1)] # derivative string offsets +define PTEQ_ARPNDER MEMP[PTEQ_SRPNDER($1)] # derivative code + +# Individual access for variable symbols and counters. +define PTEQ_REFVAR Memi[PTEQ_SREFVAR($1) + $2 - 1] # ref. var. symbol off. +define PTEQ_REFCNT Memi[PTEQ_SREFCNT($1) + $2 - 1] # ref. var. counter +define PTEQ_FITVAR Memi[PTEQ_SFITVAR($1) + $2 - 1] # fit var. symbol off. +define PTEQ_FITCNT Memi[PTEQ_SFITCNT($1) + $2 - 1] # fit var. counter + +# Individual access for fitting parameter symbols, values and list. The +# second argument is the parameter number, relative to the equation. +define PTEQ_PAR Memi[PTEQ_SPAR($1) + $2 - 1] # symbol offset +define PTEQ_PARVAL Memr[P2R(PTEQ_SPARVAL($1) + $2 - 1)] # value +define PTEQ_PLIST Memi[PTEQ_SPLIST($1) + $2 - 1] # list element + +# Individual access for derivative equation string offsets and codes. The +# second argument is the parameter number relative to the equation. +define PTEQ_DER Memi[PTEQ_SDER($1) + $2 - 1] # string offset +define PTEQ_RPNDER Memi[PTEQ_SRPNDER($1) + $2 - 1] # code |