WCSLIB  7.5
spx.h
Go to the documentation of this file.
1 /*============================================================================
2  WCSLIB 7.5 - an implementation of the FITS WCS standard.
3  Copyright (C) 1995-2021, Mark Calabretta
4 
5  This file is part of WCSLIB.
6 
7  WCSLIB is free software: you can redistribute it and/or modify it under the
8  terms of the GNU Lesser General Public License as published by the Free
9  Software Foundation, either version 3 of the License, or (at your option)
10  any later version.
11 
12  WCSLIB is distributed in the hope that it will be useful, but WITHOUT ANY
13  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
14  FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for
15  more details.
16 
17  You should have received a copy of the GNU Lesser General Public License
18  along with WCSLIB. If not, see http://www.gnu.org/licenses.
19 
20  Author: Mark Calabretta, Australia Telescope National Facility, CSIRO.
21  http://www.atnf.csiro.au/people/Mark.Calabretta
22  $Id: spx.h,v 7.5 2021/03/20 05:54:58 mcalabre Exp $
23 *=============================================================================
24 *
25 * WCSLIB 7.5 - C routines that implement the FITS World Coordinate System
26 * (WCS) standard. Refer to the README file provided with WCSLIB for an
27 * overview of the library.
28 *
29 *
30 * Summary of the spx routines
31 * ---------------------------
32 * Routines in this suite implement the spectral coordinate systems recognized
33 * by the FITS World Coordinate System (WCS) standard, as described in
34 *
35 = "Representations of world coordinates in FITS",
36 = Greisen, E.W., & Calabretta, M.R. 2002, A&A, 395, 1061 (WCS Paper I)
37 =
38 = "Representations of spectral coordinates in FITS",
39 = Greisen, E.W., Calabretta, M.R., Valdes, F.G., & Allen, S.L.
40 = 2006, A&A, 446, 747 (WCS Paper III)
41 *
42 * specx() is a scalar routine that, given one spectral variable (e.g.
43 * frequency), computes all the others (e.g. wavelength, velocity, etc.) plus
44 * the required derivatives of each with respect to the others. The results
45 * are returned in the spxprm struct.
46 *
47 * spxperr() prints the error message(s) (if any) stored in a spxprm struct.
48 *
49 * The remaining routines are all vector conversions from one spectral
50 * variable to another. The API of these functions only differ in whether the
51 * rest frequency or wavelength need be supplied.
52 *
53 * Non-linear:
54 * - freqwave() frequency -> vacuum wavelength
55 * - wavefreq() vacuum wavelength -> frequency
56 *
57 * - freqawav() frequency -> air wavelength
58 * - awavfreq() air wavelength -> frequency
59 *
60 * - freqvelo() frequency -> relativistic velocity
61 * - velofreq() relativistic velocity -> frequency
62 *
63 * - waveawav() vacuum wavelength -> air wavelength
64 * - awavwave() air wavelength -> vacuum wavelength
65 *
66 * - wavevelo() vacuum wavelength -> relativistic velocity
67 * - velowave() relativistic velocity -> vacuum wavelength
68 *
69 * - awavvelo() air wavelength -> relativistic velocity
70 * - veloawav() relativistic velocity -> air wavelength
71 *
72 * Linear:
73 * - freqafrq() frequency -> angular frequency
74 * - afrqfreq() angular frequency -> frequency
75 *
76 * - freqener() frequency -> energy
77 * - enerfreq() energy -> frequency
78 *
79 * - freqwavn() frequency -> wave number
80 * - wavnfreq() wave number -> frequency
81 *
82 * - freqvrad() frequency -> radio velocity
83 * - vradfreq() radio velocity -> frequency
84 *
85 * - wavevopt() vacuum wavelength -> optical velocity
86 * - voptwave() optical velocity -> vacuum wavelength
87 *
88 * - wavezopt() vacuum wavelength -> redshift
89 * - zoptwave() redshift -> vacuum wavelength
90 *
91 * - velobeta() relativistic velocity -> beta (= v/c)
92 * - betavelo() beta (= v/c) -> relativistic velocity
93 *
94 * These are the workhorse routines, to be used for fast transformations.
95 * Conversions may be done "in place" by calling the routine with the output
96 * vector set to the input.
97 *
98 * Air-to-vacuum wavelength conversion:
99 * ------------------------------------
100 * The air-to-vacuum wavelength conversion in early drafts of WCS Paper III
101 * cites Cox (ed., 2000, Allen’s Astrophysical Quantities, AIP Press,
102 * Springer-Verlag, New York), which itself derives from Edlén (1953, Journal
103 * of the Optical Society of America, 43, 339). This is the IAU standard,
104 * adopted in 1957 and again in 1991. No more recent IAU resolution replaces
105 * this relation, and it is the one used by WCSLIB.
106 *
107 * However, the Cox relation was replaced in later drafts of Paper III, and as
108 * eventually published, by the IUGG relation (1999, International Union of
109 * Geodesy and Geophysics, comptes rendus of the 22nd General Assembly,
110 * Birmingham UK, p111). There is a nearly constant ratio between the two,
111 * with IUGG/Cox = 1.000015 over most of the range between 200nm and 10,000nm.
112 *
113 * The IUGG relation itself is derived from the work of Ciddor (1996, Applied
114 * Optics, 35, 1566), which is used directly by the Sloan Digital Sky Survey.
115 * It agrees closely with Cox; longwards of 2500nm, the ratio Ciddor/Cox is
116 * fixed at 1.000000021, decreasing only slightly, to 1.000000018, at 1000nm.
117 *
118 * The Cox, IUGG, and Ciddor relations all accurately provide the wavelength
119 * dependence of the air-to-vacuum wavelength conversion. However, for full
120 * accuracy, the atmospheric temperature, pressure, and partial pressure of
121 * water vapour must be taken into account. These will determine a small,
122 * wavelength-independent scale factor and offset, which is not considered by
123 * WCS Paper III.
124 *
125 * WCS Paper III is also silent on the question of the range of validity of the
126 * air-to-vacuum wavelength conversion. Cox's relation would appear to be
127 * valid in the range 200nm to 10,000nm. Both the Cox and the Ciddor relations
128 * have singularities below 200nm, with Cox's at 156nm and 83nm. WCSLIB checks
129 * neither the range of validity, nor for these singularities.
130 *
131 * Argument checking:
132 * ------------------
133 * The input spectral values are only checked for values that would result
134 * in floating point exceptions. In particular, negative frequencies and
135 * wavelengths are allowed, as are velocities greater than the speed of
136 * light. The same is true for the spectral parameters - rest frequency and
137 * wavelength.
138 *
139 * Accuracy:
140 * ---------
141 * No warranty is given for the accuracy of these routines (refer to the
142 * copyright notice); intending users must satisfy for themselves their
143 * adequacy for the intended purpose. However, closure effectively to within
144 * double precision rounding error was demonstrated by test routine tspec.c
145 * which accompanies this software.
146 *
147 *
148 * specx() - Spectral cross conversions (scalar)
149 * ---------------------------------------------
150 * Given one spectral variable specx() computes all the others, plus the
151 * required derivatives of each with respect to the others.
152 *
153 * Given:
154 * type const char*
155 * The type of spectral variable given by spec, FREQ,
156 * AFRQ, ENER, WAVN, VRAD, WAVE, VOPT, ZOPT, AWAV, VELO,
157 * or BETA (case sensitive).
158 *
159 * spec double The spectral variable given, in SI units.
160 *
161 * restfrq,
162 * restwav double Rest frequency [Hz] or rest wavelength in vacuo [m],
163 * only one of which need be given. The other should be
164 * set to zero. If both are zero, only a subset of the
165 * spectral variables can be computed, the remainder are
166 * set to zero. Specifically, given one of FREQ, AFRQ,
167 * ENER, WAVN, WAVE, or AWAV the others can be computed
168 * without knowledge of the rest frequency. Likewise,
169 * VRAD, VOPT, ZOPT, VELO, and BETA.
170 *
171 * Given and returned:
172 * specs struct spxprm*
173 * Data structure containing all spectral variables and
174 * their derivatives, in SI units.
175 *
176 * Function return value:
177 * int Status return value:
178 * 0: Success.
179 * 1: Null spxprm pointer passed.
180 * 2: Invalid spectral parameters.
181 * 3: Invalid spectral variable.
182 *
183 * For returns > 1, a detailed error message is set in
184 * spxprm::err if enabled, see wcserr_enable().
185 *
186 * freqafrq(), afrqfreq(), freqener(), enerfreq(), freqwavn(), wavnfreq(),
187 * freqwave(), wavefreq(), freqawav(), awavfreq(), waveawav(), awavwave(),
188 * velobeta(), and betavelo() implement vector conversions between wave-like
189 * or velocity-like spectral types (i.e. conversions that do not need the rest
190 * frequency or wavelength). They all have the same API.
191 *
192 *
193 * spxperr() - Print error messages from a spxprm struct
194 * -----------------------------------------------------
195 * spxperr() prints the error message(s) (if any) stored in a spxprm struct.
196 * If there are no errors then nothing is printed. It uses wcserr_prt(), q.v.
197 *
198 * Given:
199 * spx const struct spxprm*
200 * Spectral variables and their derivatives.
201 *
202 * prefix const char *
203 * If non-NULL, each output line will be prefixed with
204 * this string.
205 *
206 * Function return value:
207 * int Status return value:
208 * 0: Success.
209 * 1: Null spxprm pointer passed.
210 *
211 *
212 * freqafrq() - Convert frequency to angular frequency (vector)
213 * ------------------------------------------------------------
214 * freqafrq() converts frequency to angular frequency.
215 *
216 * Given:
217 * param double Ignored.
218 *
219 * nspec int Vector length.
220 *
221 * instep,
222 * outstep int Vector strides.
223 *
224 * inspec const double[]
225 * Input spectral variables, in SI units.
226 *
227 * Returned:
228 * outspec double[] Output spectral variables, in SI units.
229 *
230 * stat int[] Status return value for each vector element:
231 * 0: Success.
232 * 1: Invalid value of inspec.
233 *
234 * Function return value:
235 * int Status return value:
236 * 0: Success.
237 * 2: Invalid spectral parameters.
238 * 4: One or more of the inspec coordinates were
239 * invalid, as indicated by the stat vector.
240 *
241 *
242 * freqvelo(), velofreq(), freqvrad(), and vradfreq() implement vector
243 * conversions between frequency and velocity spectral types. They all have
244 * the same API.
245 *
246 *
247 * freqvelo() - Convert frequency to relativistic velocity (vector)
248 * ----------------------------------------------------------------
249 * freqvelo() converts frequency to relativistic velocity.
250 *
251 * Given:
252 * param double Rest frequency [Hz].
253 *
254 * nspec int Vector length.
255 *
256 * instep,
257 * outstep int Vector strides.
258 *
259 * inspec const double[]
260 * Input spectral variables, in SI units.
261 *
262 * Returned:
263 * outspec double[] Output spectral variables, in SI units.
264 *
265 * stat int[] Status return value for each vector element:
266 * 0: Success.
267 * 1: Invalid value of inspec.
268 *
269 * Function return value:
270 * int Status return value:
271 * 0: Success.
272 * 2: Invalid spectral parameters.
273 * 4: One or more of the inspec coordinates were
274 * invalid, as indicated by the stat vector.
275 *
276 *
277 * wavevelo(), velowave(), awavvelo(), veloawav(), wavevopt(), voptwave(),
278 * wavezopt(), and zoptwave() implement vector conversions between wavelength
279 * and velocity spectral types. They all have the same API.
280 *
281 *
282 * wavevelo() - Conversions between wavelength and velocity types (vector)
283 * -----------------------------------------------------------------------
284 * wavevelo() converts vacuum wavelength to relativistic velocity.
285 *
286 * Given:
287 * param double Rest wavelength in vacuo [m].
288 *
289 * nspec int Vector length.
290 *
291 * instep,
292 * outstep int Vector strides.
293 *
294 * inspec const double[]
295 * Input spectral variables, in SI units.
296 *
297 * Returned:
298 * outspec double[] Output spectral variables, in SI units.
299 *
300 * stat int[] Status return value for each vector element:
301 * 0: Success.
302 * 1: Invalid value of inspec.
303 *
304 * Function return value:
305 * int Status return value:
306 * 0: Success.
307 * 2: Invalid spectral parameters.
308 * 4: One or more of the inspec coordinates were
309 * invalid, as indicated by the stat vector.
310 *
311 *
312 * spxprm struct - Spectral variables and their derivatives
313 * --------------------------------------------------------
314 * The spxprm struct contains the value of all spectral variables and their
315 * derivatives. It is used solely by specx() which constructs it from
316 * information provided via its function arguments.
317 *
318 * This struct should be considered read-only, no members need ever be set nor
319 * should ever be modified by the user.
320 *
321 * double restfrq
322 * (Returned) Rest frequency [Hz].
323 *
324 * double restwav
325 * (Returned) Rest wavelength [m].
326 *
327 * int wavetype
328 * (Returned) True if wave types have been computed, and ...
329 *
330 * int velotype
331 * (Returned) ... true if velocity types have been computed; types are
332 * defined below.
333 *
334 * If one or other of spxprm::restfrq and spxprm::restwav is given
335 * (non-zero) then all spectral variables may be computed. If both are
336 * given, restfrq is used. If restfrq and restwav are both zero, only wave
337 * characteristic xor velocity type spectral variables may be computed
338 * depending on the variable given. These flags indicate what is
339 * available.
340 *
341 * double freq
342 * (Returned) Frequency [Hz] (wavetype).
343 *
344 * double afrq
345 * (Returned) Angular frequency [rad/s] (wavetype).
346 *
347 * double ener
348 * (Returned) Photon energy [J] (wavetype).
349 *
350 * double wavn
351 * (Returned) Wave number [/m] (wavetype).
352 *
353 * double vrad
354 * (Returned) Radio velocity [m/s] (velotype).
355 *
356 * double wave
357 * (Returned) Vacuum wavelength [m] (wavetype).
358 *
359 * double vopt
360 * (Returned) Optical velocity [m/s] (velotype).
361 *
362 * double zopt
363 * (Returned) Redshift [dimensionless] (velotype).
364 *
365 * double awav
366 * (Returned) Air wavelength [m] (wavetype).
367 *
368 * double velo
369 * (Returned) Relativistic velocity [m/s] (velotype).
370 *
371 * double beta
372 * (Returned) Relativistic beta [dimensionless] (velotype).
373 *
374 * double dfreqafrq
375 * (Returned) Derivative of frequency with respect to angular frequency
376 * [/rad] (constant, = 1 / 2*pi), and ...
377 * double dafrqfreq
378 * (Returned) ... vice versa [rad] (constant, = 2*pi, always available).
379 *
380 * double dfreqener
381 * (Returned) Derivative of frequency with respect to photon energy
382 * [/J/s] (constant, = 1/h), and ...
383 * double denerfreq
384 * (Returned) ... vice versa [Js] (constant, = h, Planck's constant,
385 * always available).
386 *
387 * double dfreqwavn
388 * (Returned) Derivative of frequency with respect to wave number [m/s]
389 * (constant, = c, the speed of light in vacuo), and ...
390 * double dwavnfreq
391 * (Returned) ... vice versa [s/m] (constant, = 1/c, always available).
392 *
393 * double dfreqvrad
394 * (Returned) Derivative of frequency with respect to radio velocity [/m],
395 * and ...
396 * double dvradfreq
397 * (Returned) ... vice versa [m] (wavetype && velotype).
398 *
399 * double dfreqwave
400 * (Returned) Derivative of frequency with respect to vacuum wavelength
401 * [/m/s], and ...
402 * double dwavefreq
403 * (Returned) ... vice versa [m s] (wavetype).
404 *
405 * double dfreqawav
406 * (Returned) Derivative of frequency with respect to air wavelength,
407 * [/m/s], and ...
408 * double dawavfreq
409 * (Returned) ... vice versa [m s] (wavetype).
410 *
411 * double dfreqvelo
412 * (Returned) Derivative of frequency with respect to relativistic
413 * velocity [/m], and ...
414 * double dvelofreq
415 * (Returned) ... vice versa [m] (wavetype && velotype).
416 *
417 * double dwavevopt
418 * (Returned) Derivative of vacuum wavelength with respect to optical
419 * velocity [s], and ...
420 * double dvoptwave
421 * (Returned) ... vice versa [/s] (wavetype && velotype).
422 *
423 * double dwavezopt
424 * (Returned) Derivative of vacuum wavelength with respect to redshift [m],
425 * and ...
426 * double dzoptwave
427 * (Returned) ... vice versa [/m] (wavetype && velotype).
428 *
429 * double dwaveawav
430 * (Returned) Derivative of vacuum wavelength with respect to air
431 * wavelength [dimensionless], and ...
432 * double dawavwave
433 * (Returned) ... vice versa [dimensionless] (wavetype).
434 *
435 * double dwavevelo
436 * (Returned) Derivative of vacuum wavelength with respect to relativistic
437 * velocity [s], and ...
438 * double dvelowave
439 * (Returned) ... vice versa [/s] (wavetype && velotype).
440 *
441 * double dawavvelo
442 * (Returned) Derivative of air wavelength with respect to relativistic
443 * velocity [s], and ...
444 * double dveloawav
445 * (Returned) ... vice versa [/s] (wavetype && velotype).
446 *
447 * double dvelobeta
448 * (Returned) Derivative of relativistic velocity with respect to
449 * relativistic beta [m/s] (constant, = c, the speed of light in vacuo),
450 * and ...
451 * double dbetavelo
452 * (Returned) ... vice versa [s/m] (constant, = 1/c, always available).
453 *
454 * struct wcserr *err
455 * (Returned) If enabled, when an error status is returned, this struct
456 * contains detailed information about the error, see wcserr_enable().
457 *
458 * void *padding
459 * (An unused variable inserted for alignment purposes only.)
460 *
461 * Global variable: const char *spx_errmsg[] - Status return messages
462 * ------------------------------------------------------------------
463 * Error messages to match the status value returned from each function.
464 *
465 *===========================================================================*/
466 
467 #ifndef WCSLIB_SPEC
468 #define WCSLIB_SPEC
469 
470 #ifdef __cplusplus
471 extern "C" {
472 #endif
473 
474 extern const char *spx_errmsg[];
475 
477  SPXERR_SUCCESS = 0, // Success.
478  SPXERR_NULL_POINTER = 1, // Null spxprm pointer passed.
479  SPXERR_BAD_SPEC_PARAMS = 2, // Invalid spectral parameters.
480  SPXERR_BAD_SPEC_VAR = 3, // Invalid spectral variable.
481  SPXERR_BAD_INSPEC_COORD = 4 // One or more of the inspec coordinates were
482  // invalid.
483 };
484 
485 struct spxprm {
486  double restfrq, restwav; // Rest frequency [Hz] and wavelength [m].
487 
488  int wavetype, velotype; // True if wave/velocity types have been
489  // computed; types are defined below.
490 
491  // Spectral variables computed by specx().
492  //--------------------------------------------------------------------------
493  double freq, // wavetype: Frequency [Hz].
494  afrq, // wavetype: Angular frequency [rad/s].
495  ener, // wavetype: Photon energy [J].
496  wavn, // wavetype: Wave number [/m].
497  vrad, // velotype: Radio velocity [m/s].
498  wave, // wavetype: Vacuum wavelength [m].
499  vopt, // velotype: Optical velocity [m/s].
500  zopt, // velotype: Redshift.
501  awav, // wavetype: Air wavelength [m].
502  velo, // velotype: Relativistic velocity [m/s].
503  beta; // velotype: Relativistic beta.
504 
505  // Derivatives of spectral variables computed by specx().
506  //--------------------------------------------------------------------------
507  double dfreqafrq, dafrqfreq, // Constant, always available.
508  dfreqener, denerfreq, // Constant, always available.
509  dfreqwavn, dwavnfreq, // Constant, always available.
510  dfreqvrad, dvradfreq, // wavetype && velotype.
511  dfreqwave, dwavefreq, // wavetype.
512  dfreqawav, dawavfreq, // wavetype.
513  dfreqvelo, dvelofreq, // wavetype && velotype.
514  dwavevopt, dvoptwave, // wavetype && velotype.
515  dwavezopt, dzoptwave, // wavetype && velotype.
516  dwaveawav, dawavwave, // wavetype.
517  dwavevelo, dvelowave, // wavetype && velotype.
518  dawavvelo, dveloawav, // wavetype && velotype.
519  dvelobeta, dbetavelo; // Constant, always available.
520 
521  // Error handling
522  //--------------------------------------------------------------------------
523  struct wcserr *err;
524 
525  // Private
526  //--------------------------------------------------------------------------
527  void *padding; // (Dummy inserted for alignment purposes.)
528 };
529 
530 // Size of the spxprm struct in int units, used by the Fortran wrappers.
531 #define SPXLEN (sizeof(struct spxprm)/sizeof(int))
532 
533 
534 int specx(const char *type, double spec, double restfrq, double restwav,
535  struct spxprm *specs);
536 
537 int spxperr(const struct spxprm *spx, const char *prefix);
538 
539 // For use in declaring function prototypes, e.g. in spcprm.
540 #define SPX_ARGS double param, int nspec, int instep, int outstep, \
541  const double inspec[], double outspec[], int stat[]
542 
545 
548 
551 
554 
557 
560 
563 
564 
567 
570 
571 
574 
577 
580 
583 
584 
585 #ifdef __cplusplus
586 }
587 #endif
588 
589 #endif // WCSLIB_SPEC
int wavevelo(SPX_ARGS)
Conversions between wavelength and velocity types (vector).
int betavelo(SPX_ARGS)
Convert relativistic beta to relativistic velocity (vector).
int awavfreq(SPX_ARGS)
Convert air wavelength to frequency (vector).
int specx(const char *type, double spec, double restfrq, double restwav, struct spxprm *specs)
Spectral cross conversions (scalar).
int freqawav(SPX_ARGS)
Convert frequency to air wavelength (vector).
int awavwave(SPX_ARGS)
Convert air wavelength to vacuum wavelength (vector).
int spxperr(const struct spxprm *spx, const char *prefix)
Print error messages from a spxprm struct.
int freqwave(SPX_ARGS)
Convert frequency to vacuum wavelength (vector).
int wavezopt(SPX_ARGS)
Convert vacuum wavelength to redshift (vector).
int veloawav(SPX_ARGS)
Convert relativistic velocity to air wavelength (vector).
int waveawav(SPX_ARGS)
Convert vacuum wavelength to air wavelength (vector).
int freqener(SPX_ARGS)
Convert frequency to photon energy (vector).
int wavnfreq(SPX_ARGS)
Convert wave number to frequency (vector).
int wavevopt(SPX_ARGS)
Convert vacuum wavelength to optical velocity (vector).
int wavefreq(SPX_ARGS)
Convert vacuum wavelength to frequency (vector).
int freqafrq(SPX_ARGS)
Convert frequency to angular frequency (vector).
int vradfreq(SPX_ARGS)
Convert radio velocity to frequency (vector).
#define SPX_ARGS
For use in declaring spectral conversion function prototypes.
Definition: spx.h:540
int enerfreq(SPX_ARGS)
Convert photon energy to frequency (vector).
int velobeta(SPX_ARGS)
Convert relativistic velocity to relativistic beta (vector).
int velofreq(SPX_ARGS)
Convert relativistic velocity to frequency (vector).
int freqwavn(SPX_ARGS)
Convert frequency to wave number (vector).
int freqvelo(SPX_ARGS)
Convert frequency to relativistic velocity (vector).
int voptwave(SPX_ARGS)
Convert optical velocity to vacuum wavelength (vector).
int velowave(SPX_ARGS)
Convert relativistic velocity to vacuum wavelength (vector).
int afrqfreq(SPX_ARGS)
Convert angular frequency to frequency (vector).
spx_errmsg
Definition: spx.h:476
@ SPXERR_BAD_SPEC_PARAMS
Definition: spx.h:479
@ SPXERR_SUCCESS
Definition: spx.h:477
@ SPXERR_BAD_SPEC_VAR
Definition: spx.h:480
@ SPXERR_NULL_POINTER
Definition: spx.h:478
@ SPXERR_BAD_INSPEC_COORD
Definition: spx.h:481
int zoptwave(SPX_ARGS)
Convert redshift to vacuum wavelength (vector).
int freqvrad(SPX_ARGS)
Convert frequency to radio velocity (vector).
int awavvelo(SPX_ARGS)
Convert air wavelength to relativistic velocity (vector).
Spectral variables and their derivatives.
Definition: spx.h:485
double dvelobeta
Definition: spx.h:519
double vopt
Definition: spx.h:499
double dvradfreq
Definition: spx.h:510
double dwavezopt
Definition: spx.h:515
double dfreqvelo
Definition: spx.h:513
int wavetype
Definition: spx.h:488
double denerfreq
Definition: spx.h:508
double dwavevopt
Definition: spx.h:514
double dwavnfreq
Definition: spx.h:509
double vrad
Definition: spx.h:497
double velo
Definition: spx.h:502
double restfrq
Definition: spx.h:486
double dveloawav
Definition: spx.h:518
double afrq
Definition: spx.h:494
double dvelofreq
Definition: spx.h:513
double dafrqfreq
Definition: spx.h:507
double beta
Definition: spx.h:503
double dvoptwave
Definition: spx.h:514
double dwavevelo
Definition: spx.h:517
double dawavwave
Definition: spx.h:516
double wave
Definition: spx.h:498
double dawavvelo
Definition: spx.h:518
double dzoptwave
Definition: spx.h:515
double dwavefreq
Definition: spx.h:511
void * padding
Definition: spx.h:527
double zopt
Definition: spx.h:500
double dfreqvrad
Definition: spx.h:510
double dfreqwave
Definition: spx.h:511
double wavn
Definition: spx.h:496
double dfreqener
Definition: spx.h:508
double dfreqawav
Definition: spx.h:512
double dfreqafrq
Definition: spx.h:507
struct wcserr * err
Definition: spx.h:523
double ener
Definition: spx.h:495
double dfreqwavn
Definition: spx.h:509
double dawavfreq
Definition: spx.h:512
double dbetavelo
Definition: spx.h:519
double dvelowave
Definition: spx.h:517
double restwav
Definition: spx.h:486
int velotype
Definition: spx.h:488
double awav
Definition: spx.h:501
double dwaveawav
Definition: spx.h:516
double freq
Definition: spx.h:493
Error message handling.
Definition: wcserr.h:220