File: spx_8h-source.html

package info (click to toggle)
python-pywcs 1.11-1
  • links: PTS, VCS
  • area: main
  • in suites: wheezy
  • size: 11,888 kB
  • sloc: ansic: 31,441; lex: 6,170; fortran: 6,080; sh: 3,478; python: 3,122; sed: 408; makefile: 76
file content (566 lines) | stat: -rw-r--r-- 64,671 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8">
<title>WCSLIB 4.8.2: spx.h Source File</title>
<link href="doxygen.css" rel="stylesheet" type="text/css">
<link href="tabs.css" rel="stylesheet" type="text/css">
</head><body>
<!-- Generated by Doxygen 1.5.6 -->
<div class="navigation" id="top">
  <div class="tabs">
    <ul>
      <li><a href="index.html"><span>Main&nbsp;Page</span></a></li>
      <li><a href="pages.html"><span>Related&nbsp;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&nbsp;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
<h1>spx.h</h1><a href="spx_8h.html">Go to the documentation of this file.</a><div class="fragment"><pre class="fragment"><a name="l00001"></a>00001 <span class="comment">/*============================================================================</span>
<a name="l00002"></a>00002 <span class="comment"></span>
<a name="l00003"></a>00003 <span class="comment">  WCSLIB 4.8 - an implementation of the FITS WCS standard.</span>
<a name="l00004"></a>00004 <span class="comment">  Copyright (C) 1995-2011, Mark Calabretta</span>
<a name="l00005"></a>00005 <span class="comment"></span>
<a name="l00006"></a>00006 <span class="comment">  This file is part of WCSLIB.</span>
<a name="l00007"></a>00007 <span class="comment"></span>
<a name="l00008"></a>00008 <span class="comment">  WCSLIB is free software: you can redistribute it and/or modify it under the</span>
<a name="l00009"></a>00009 <span class="comment">  terms of the GNU Lesser General Public License as published by the Free</span>
<a name="l00010"></a>00010 <span class="comment">  Software Foundation, either version 3 of the License, or (at your option)</span>
<a name="l00011"></a>00011 <span class="comment">  any later version.</span>
<a name="l00012"></a>00012 <span class="comment"></span>
<a name="l00013"></a>00013 <span class="comment">  WCSLIB is distributed in the hope that it will be useful, but WITHOUT ANY</span>
<a name="l00014"></a>00014 <span class="comment">  WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS</span>
<a name="l00015"></a>00015 <span class="comment">  FOR A PARTICULAR PURPOSE.  See the GNU Lesser General Public License for</span>
<a name="l00016"></a>00016 <span class="comment">  more details.</span>
<a name="l00017"></a>00017 <span class="comment"></span>
<a name="l00018"></a>00018 <span class="comment">  You should have received a copy of the GNU Lesser General Public License</span>
<a name="l00019"></a>00019 <span class="comment">  along with WCSLIB.  If not, see &lt;http://www.gnu.org/licenses/&gt;.</span>
<a name="l00020"></a>00020 <span class="comment"></span>
<a name="l00021"></a>00021 <span class="comment">  Correspondence concerning WCSLIB may be directed to:</span>
<a name="l00022"></a>00022 <span class="comment">    Internet email: mcalabre@atnf.csiro.au</span>
<a name="l00023"></a>00023 <span class="comment">    Postal address: Dr. Mark Calabretta</span>
<a name="l00024"></a>00024 <span class="comment">                    Australia Telescope National Facility, CSIRO</span>
<a name="l00025"></a>00025 <span class="comment">                    PO Box 76</span>
<a name="l00026"></a>00026 <span class="comment">                    Epping NSW 1710</span>
<a name="l00027"></a>00027 <span class="comment">                    AUSTRALIA</span>
<a name="l00028"></a>00028 <span class="comment"></span>
<a name="l00029"></a>00029 <span class="comment">  Author: Mark Calabretta, Australia Telescope National Facility</span>
<a name="l00030"></a>00030 <span class="comment">  http://www.atnf.csiro.au/~mcalabre/index.html</span>
<a name="l00031"></a>00031 <span class="comment">  $Id: spx.h,v 4.8.1.1 2011/08/15 08:07:06 cal103 Exp cal103 $</span>
<a name="l00032"></a>00032 <span class="comment">*=============================================================================</span>
<a name="l00033"></a>00033 <span class="comment">*</span>
<a name="l00034"></a>00034 <span class="comment">* WCSLIB 4.8 - C routines that implement the spectral coordinate systems</span>
<a name="l00035"></a>00035 <span class="comment">* recognized by the FITS World Coordinate System (WCS) standard.  Refer to</span>
<a name="l00036"></a>00036 <span class="comment">*</span>
<a name="l00037"></a>00037 <span class="comment">*   "Representations of world coordinates in FITS",</span>
<a name="l00038"></a>00038 <span class="comment">*   Greisen, E.W., &amp; Calabretta, M.R. 2002, A&amp;A, 395, 1061 (Paper I)</span>
<a name="l00039"></a>00039 <span class="comment">*</span>
<a name="l00040"></a>00040 <span class="comment">*   "Representations of spectral coordinates in FITS",</span>
<a name="l00041"></a>00041 <span class="comment">*   Greisen, E.W., Calabretta, M.R., Valdes, F.G., &amp; Allen, S.L.</span>
<a name="l00042"></a>00042 <span class="comment">*   2006, A&amp;A, 446, 747 (Paper III)</span>
<a name="l00043"></a>00043 <span class="comment">*</span>
<a name="l00044"></a>00044 <span class="comment">* Refer to the README file provided with WCSLIB for an overview of the</span>
<a name="l00045"></a>00045 <span class="comment">* library.</span>
<a name="l00046"></a>00046 <span class="comment">*</span>
<a name="l00047"></a>00047 <span class="comment">*</span>
<a name="l00048"></a>00048 <span class="comment">* Summary of the spx routines</span>
<a name="l00049"></a>00049 <span class="comment">* ---------------------------</span>
<a name="l00050"></a>00050 <span class="comment">* specx() is a scalar routine that, given one spectral variable (e.g.</span>
<a name="l00051"></a>00051 <span class="comment">* frequency), computes all the others (e.g. wavelength, velocity, etc.) plus</span>
<a name="l00052"></a>00052 <span class="comment">* the required derivatives of each with respect to the others.  The results</span>
<a name="l00053"></a>00053 <span class="comment">* are returned in the spxprm struct.</span>
<a name="l00054"></a>00054 <span class="comment">*</span>
<a name="l00055"></a>00055 <span class="comment">* The remaining routines are all vector conversions from one spectral</span>
<a name="l00056"></a>00056 <span class="comment">* variable to another.  The API of these functions only differ in whether the</span>
<a name="l00057"></a>00057 <span class="comment">* rest frequency or wavelength need be supplied.</span>
<a name="l00058"></a>00058 <span class="comment">*</span>
<a name="l00059"></a>00059 <span class="comment">* Non-linear:</span>
<a name="l00060"></a>00060 <span class="comment">*   - freqwave()    frequency              -&gt;  vacuum wavelength</span>
<a name="l00061"></a>00061 <span class="comment">*   - wavefreq()    vacuum wavelength      -&gt;  frequency</span>
<a name="l00062"></a>00062 <span class="comment">*</span>
<a name="l00063"></a>00063 <span class="comment">*   - freqawav()    frequency              -&gt;  air wavelength</span>
<a name="l00064"></a>00064 <span class="comment">*   - awavfreq()    air wavelength         -&gt;  frequency</span>
<a name="l00065"></a>00065 <span class="comment">*</span>
<a name="l00066"></a>00066 <span class="comment">*   - freqvelo()    frequency              -&gt;  relativistic velocity</span>
<a name="l00067"></a>00067 <span class="comment">*   - velofreq()    relativistic velocity  -&gt;  frequency</span>
<a name="l00068"></a>00068 <span class="comment">*</span>
<a name="l00069"></a>00069 <span class="comment">*   - waveawav()    vacuum wavelength      -&gt;  air wavelength</span>
<a name="l00070"></a>00070 <span class="comment">*   - awavwave()    air wavelength         -&gt;  vacuum wavelength</span>
<a name="l00071"></a>00071 <span class="comment">*</span>
<a name="l00072"></a>00072 <span class="comment">*   - wavevelo()    vacuum wavelength      -&gt;  relativistic velocity</span>
<a name="l00073"></a>00073 <span class="comment">*   - velowave()    relativistic velocity  -&gt;  vacuum wavelength</span>
<a name="l00074"></a>00074 <span class="comment">*</span>
<a name="l00075"></a>00075 <span class="comment">*   - awavvelo()    air wavelength         -&gt;  relativistic velocity</span>
<a name="l00076"></a>00076 <span class="comment">*   - veloawav()    relativistic velocity  -&gt;  air wavelength</span>
<a name="l00077"></a>00077 <span class="comment">*</span>
<a name="l00078"></a>00078 <span class="comment">* Linear:</span>
<a name="l00079"></a>00079 <span class="comment">*   - freqafrq()    frequency              -&gt;  angular frequency</span>
<a name="l00080"></a>00080 <span class="comment">*   - afrqfreq()    angular frequency      -&gt;  frequency</span>
<a name="l00081"></a>00081 <span class="comment">*</span>
<a name="l00082"></a>00082 <span class="comment">*   - freqener()    frequency              -&gt;  energy</span>
<a name="l00083"></a>00083 <span class="comment">*   - enerfreq()    energy                 -&gt;  frequency</span>
<a name="l00084"></a>00084 <span class="comment">*</span>
<a name="l00085"></a>00085 <span class="comment">*   - freqwavn()    frequency              -&gt;  wave number</span>
<a name="l00086"></a>00086 <span class="comment">*   - wavnfreq()    wave number            -&gt;  frequency</span>
<a name="l00087"></a>00087 <span class="comment">*</span>
<a name="l00088"></a>00088 <span class="comment">*   - freqvrad()    frequency              -&gt;  radio velocity</span>
<a name="l00089"></a>00089 <span class="comment">*   - vradfreq()    radio velocity         -&gt;  frequency</span>
<a name="l00090"></a>00090 <span class="comment">*</span>
<a name="l00091"></a>00091 <span class="comment">*   - wavevopt()    vacuum wavelength      -&gt;  optical velocity</span>
<a name="l00092"></a>00092 <span class="comment">*   - voptwave()    optical velocity       -&gt;  vacuum wavelength</span>
<a name="l00093"></a>00093 <span class="comment">*</span>
<a name="l00094"></a>00094 <span class="comment">*   - wavezopt()    vacuum wavelength      -&gt;  redshift</span>
<a name="l00095"></a>00095 <span class="comment">*   - zoptwave()    redshift               -&gt;  vacuum wavelength</span>
<a name="l00096"></a>00096 <span class="comment">*</span>
<a name="l00097"></a>00097 <span class="comment">*   - velobeta()    relativistic velocity  -&gt;  beta (= v/c)</span>
<a name="l00098"></a>00098 <span class="comment">*   - betavelo()    beta (= v/c)           -&gt;  relativistic velocity</span>
<a name="l00099"></a>00099 <span class="comment">*</span>
<a name="l00100"></a>00100 <span class="comment">* These are the workhorse routines, to be used for fast transformations.</span>
<a name="l00101"></a>00101 <span class="comment">* Conversions may be done "in place" by calling the routine with the output</span>
<a name="l00102"></a>00102 <span class="comment">* vector set to the input.</span>
<a name="l00103"></a>00103 <span class="comment">*</span>
<a name="l00104"></a>00104 <span class="comment">* Argument checking:</span>
<a name="l00105"></a>00105 <span class="comment">* ------------------</span>
<a name="l00106"></a>00106 <span class="comment">* The input spectral values are only checked for values that would result</span>
<a name="l00107"></a>00107 <span class="comment">* in floating point exceptions.  In particular, negative frequencies and</span>
<a name="l00108"></a>00108 <span class="comment">* wavelengths are allowed, as are velocities greater than the speed of</span>
<a name="l00109"></a>00109 <span class="comment">* light.  The same is true for the spectral parameters - rest frequency and</span>
<a name="l00110"></a>00110 <span class="comment">* wavelength.</span>
<a name="l00111"></a>00111 <span class="comment">*</span>
<a name="l00112"></a>00112 <span class="comment">* Accuracy:</span>
<a name="l00113"></a>00113 <span class="comment">* ---------</span>
<a name="l00114"></a>00114 <span class="comment">* No warranty is given for the accuracy of these routines (refer to the</span>
<a name="l00115"></a>00115 <span class="comment">* copyright notice); intending users must satisfy for themselves their</span>
<a name="l00116"></a>00116 <span class="comment">* adequacy for the intended purpose.  However, closure effectively to within</span>
<a name="l00117"></a>00117 <span class="comment">* double precision rounding error was demonstrated by test routine tspec.c</span>
<a name="l00118"></a>00118 <span class="comment">* which accompanies this software.</span>
<a name="l00119"></a>00119 <span class="comment">*</span>
<a name="l00120"></a>00120 <span class="comment">*</span>
<a name="l00121"></a>00121 <span class="comment">* specx() - Spectral cross conversions (scalar)</span>
<a name="l00122"></a>00122 <span class="comment">* ---------------------------------------------</span>
<a name="l00123"></a>00123 <span class="comment">* Given one spectral variable specx() computes all the others, plus the</span>
<a name="l00124"></a>00124 <span class="comment">* required derivatives of each with respect to the others.</span>
<a name="l00125"></a>00125 <span class="comment">*</span>
<a name="l00126"></a>00126 <span class="comment">* Given:</span>
<a name="l00127"></a>00127 <span class="comment">*   type      const char*</span>
<a name="l00128"></a>00128 <span class="comment">*                       The type of spectral variable given by spec, FREQ,</span>
<a name="l00129"></a>00129 <span class="comment">*                       AFRQ, ENER, WAVN, VRAD, WAVE, VOPT, ZOPT, AWAV, VELO,</span>
<a name="l00130"></a>00130 <span class="comment">*                       or BETA (case sensitive).</span>
<a name="l00131"></a>00131 <span class="comment">*</span>
<a name="l00132"></a>00132 <span class="comment">*   spec      double    The spectral variable given, in SI units.</span>
<a name="l00133"></a>00133 <span class="comment">*</span>
<a name="l00134"></a>00134 <span class="comment">*   restfrq,</span>
<a name="l00135"></a>00135 <span class="comment">*   restwav   double    Rest frequency [Hz] or rest wavelength in vacuo [m],</span>
<a name="l00136"></a>00136 <span class="comment">*                       only one of which need be given.  The other should be</span>
<a name="l00137"></a>00137 <span class="comment">*                       set to zero.  If both are zero, only a subset of the</span>
<a name="l00138"></a>00138 <span class="comment">*                       spectral variables can be computed, the remainder are</span>
<a name="l00139"></a>00139 <span class="comment">*                       set to zero.  Specifically, given one of FREQ, AFRQ,</span>
<a name="l00140"></a>00140 <span class="comment">*                       ENER, WAVN, WAVE, or AWAV the others can be computed</span>
<a name="l00141"></a>00141 <span class="comment">*                       without knowledge of the rest frequency.  Likewise,</span>
<a name="l00142"></a>00142 <span class="comment">*                       VRAD, VOPT, ZOPT, VELO, and BETA.</span>
<a name="l00143"></a>00143 <span class="comment">*</span>
<a name="l00144"></a>00144 <span class="comment">* Given and returned:</span>
<a name="l00145"></a>00145 <span class="comment">*   specs     struct spxprm*</span>
<a name="l00146"></a>00146 <span class="comment">*                       Data structure containing all spectral variables and</span>
<a name="l00147"></a>00147 <span class="comment">*                       their derivatives, in SI units.</span>
<a name="l00148"></a>00148 <span class="comment">*</span>
<a name="l00149"></a>00149 <span class="comment">* Function return value:</span>
<a name="l00150"></a>00150 <span class="comment">*             int       Status return value:</span>
<a name="l00151"></a>00151 <span class="comment">*                         0: Success.</span>
<a name="l00152"></a>00152 <span class="comment">*                         1: Null spxprm pointer passed.</span>
<a name="l00153"></a>00153 <span class="comment">*                         2: Invalid spectral parameters.</span>
<a name="l00154"></a>00154 <span class="comment">*                         3: Invalid spectral variable.</span>
<a name="l00155"></a>00155 <span class="comment">*</span>
<a name="l00156"></a>00156 <span class="comment">*                       For returns &gt; 1, a detailed error message is set in</span>
<a name="l00157"></a>00157 <span class="comment">*                       spxprm::err if enabled, see wcserr_enable().</span>
<a name="l00158"></a>00158 <span class="comment">*</span>
<a name="l00159"></a>00159 <span class="comment">* freqafrq(), afrqfreq(), freqener(), enerfreq(), freqwavn(), wavnfreq(),</span>
<a name="l00160"></a>00160 <span class="comment">* freqwave(), wavefreq(), freqawav(), awavfreq(), waveawav(), awavwave(),</span>
<a name="l00161"></a>00161 <span class="comment">* velobeta(), and betavelo() implement vector conversions between wave-like</span>
<a name="l00162"></a>00162 <span class="comment">* or velocity-like spectral types (i.e. conversions that do not need the rest</span>
<a name="l00163"></a>00163 <span class="comment">* frequency or wavelength).  They all have the same API.</span>
<a name="l00164"></a>00164 <span class="comment">*</span>
<a name="l00165"></a>00165 <span class="comment">*</span>
<a name="l00166"></a>00166 <span class="comment">* freqafrq() - Convert frequency to angular frequency (vector)</span>
<a name="l00167"></a>00167 <span class="comment">* ------------------------------------------------------------</span>
<a name="l00168"></a>00168 <span class="comment">* freqafrq() converts frequency to angular frequency.</span>
<a name="l00169"></a>00169 <span class="comment">*</span>
<a name="l00170"></a>00170 <span class="comment">* Given:</span>
<a name="l00171"></a>00171 <span class="comment">*   param     double    Ignored.</span>
<a name="l00172"></a>00172 <span class="comment">*</span>
<a name="l00173"></a>00173 <span class="comment">*   nspec     int       Vector length.</span>
<a name="l00174"></a>00174 <span class="comment">*</span>
<a name="l00175"></a>00175 <span class="comment">*   instep,</span>
<a name="l00176"></a>00176 <span class="comment">*   outstep   int       Vector strides.</span>
<a name="l00177"></a>00177 <span class="comment">*</span>
<a name="l00178"></a>00178 <span class="comment">*   inspec    const double[]</span>
<a name="l00179"></a>00179 <span class="comment">*                       Input spectral variables, in SI units.</span>
<a name="l00180"></a>00180 <span class="comment">*</span>
<a name="l00181"></a>00181 <span class="comment">* Returned:</span>
<a name="l00182"></a>00182 <span class="comment">*   outspec   double[]  Output spectral variables, in SI units.</span>
<a name="l00183"></a>00183 <span class="comment">*</span>
<a name="l00184"></a>00184 <span class="comment">*   stat      int[]     Status return value for each vector element:</span>
<a name="l00185"></a>00185 <span class="comment">*                         0: Success.</span>
<a name="l00186"></a>00186 <span class="comment">*                         1: Invalid value of inspec.</span>
<a name="l00187"></a>00187 <span class="comment">*</span>
<a name="l00188"></a>00188 <span class="comment">* Function return value:</span>
<a name="l00189"></a>00189 <span class="comment">*             int       Status return value:</span>
<a name="l00190"></a>00190 <span class="comment">*                         0: Success.</span>
<a name="l00191"></a>00191 <span class="comment">*                         2: Invalid spectral parameters.</span>
<a name="l00192"></a>00192 <span class="comment">*                         4: One or more of the inspec coordinates were</span>
<a name="l00193"></a>00193 <span class="comment">*                            invalid, as indicated by the stat vector.</span>
<a name="l00194"></a>00194 <span class="comment">*</span>
<a name="l00195"></a>00195 <span class="comment">*</span>
<a name="l00196"></a>00196 <span class="comment">* freqvelo(), velofreq(), freqvrad(), and vradfreq() implement vector</span>
<a name="l00197"></a>00197 <span class="comment">* conversions between frequency and velocity spectral types.  They all have</span>
<a name="l00198"></a>00198 <span class="comment">* the same API.</span>
<a name="l00199"></a>00199 <span class="comment">*</span>
<a name="l00200"></a>00200 <span class="comment">*</span>
<a name="l00201"></a>00201 <span class="comment">* freqvelo() - Convert frequency to relativistic velocity (vector)</span>
<a name="l00202"></a>00202 <span class="comment">* ----------------------------------------------------------------</span>
<a name="l00203"></a>00203 <span class="comment">* freqvelo() converts frequency to relativistic velocity.</span>
<a name="l00204"></a>00204 <span class="comment">*</span>
<a name="l00205"></a>00205 <span class="comment">* Given:</span>
<a name="l00206"></a>00206 <span class="comment">*   param     double    Rest frequency [Hz].</span>
<a name="l00207"></a>00207 <span class="comment">*</span>
<a name="l00208"></a>00208 <span class="comment">*   nspec     int       Vector length.</span>
<a name="l00209"></a>00209 <span class="comment">*</span>
<a name="l00210"></a>00210 <span class="comment">*   instep,</span>
<a name="l00211"></a>00211 <span class="comment">*   outstep   int       Vector strides.</span>
<a name="l00212"></a>00212 <span class="comment">*</span>
<a name="l00213"></a>00213 <span class="comment">*   inspec    const double[]</span>
<a name="l00214"></a>00214 <span class="comment">*                       Input spectral variables, in SI units.</span>
<a name="l00215"></a>00215 <span class="comment">*</span>
<a name="l00216"></a>00216 <span class="comment">* Returned:</span>
<a name="l00217"></a>00217 <span class="comment">*   outspec   double[]  Output spectral variables, in SI units.</span>
<a name="l00218"></a>00218 <span class="comment">*</span>
<a name="l00219"></a>00219 <span class="comment">*   stat      int[]     Status return value for each vector element:</span>
<a name="l00220"></a>00220 <span class="comment">*                         0: Success.</span>
<a name="l00221"></a>00221 <span class="comment">*                         1: Invalid value of inspec.</span>
<a name="l00222"></a>00222 <span class="comment">*</span>
<a name="l00223"></a>00223 <span class="comment">* Function return value:</span>
<a name="l00224"></a>00224 <span class="comment">*             int       Status return value:</span>
<a name="l00225"></a>00225 <span class="comment">*                         0: Success.</span>
<a name="l00226"></a>00226 <span class="comment">*                         2: Invalid spectral parameters.</span>
<a name="l00227"></a>00227 <span class="comment">*                         4: One or more of the inspec coordinates were</span>
<a name="l00228"></a>00228 <span class="comment">*                            invalid, as indicated by the stat vector.</span>
<a name="l00229"></a>00229 <span class="comment">*</span>
<a name="l00230"></a>00230 <span class="comment">*</span>
<a name="l00231"></a>00231 <span class="comment">* wavevelo(), velowave(), awavvelo(), veloawav(), wavevopt(), voptwave(),</span>
<a name="l00232"></a>00232 <span class="comment">* wavezopt(), and zoptwave() implement vector conversions between wavelength</span>
<a name="l00233"></a>00233 <span class="comment">* and velocity spectral types.  They all have the same API.</span>
<a name="l00234"></a>00234 <span class="comment">*</span>
<a name="l00235"></a>00235 <span class="comment">*</span>
<a name="l00236"></a>00236 <span class="comment">* wavevelo() - Conversions between wavelength and velocity types (vector)</span>
<a name="l00237"></a>00237 <span class="comment">* -----------------------------------------------------------------------</span>
<a name="l00238"></a>00238 <span class="comment">* wavevelo() converts vacuum wavelength to relativistic velocity.</span>
<a name="l00239"></a>00239 <span class="comment">*</span>
<a name="l00240"></a>00240 <span class="comment">* Given:</span>
<a name="l00241"></a>00241 <span class="comment">*   param     double    Rest wavelength in vacuo [m].</span>
<a name="l00242"></a>00242 <span class="comment">*</span>
<a name="l00243"></a>00243 <span class="comment">*   nspec     int       Vector length.</span>
<a name="l00244"></a>00244 <span class="comment">*</span>
<a name="l00245"></a>00245 <span class="comment">*   instep,</span>
<a name="l00246"></a>00246 <span class="comment">*   outstep   int       Vector strides.</span>
<a name="l00247"></a>00247 <span class="comment">*</span>
<a name="l00248"></a>00248 <span class="comment">*   inspec    const double[]</span>
<a name="l00249"></a>00249 <span class="comment">*                       Input spectral variables, in SI units.</span>
<a name="l00250"></a>00250 <span class="comment">*</span>
<a name="l00251"></a>00251 <span class="comment">* Returned:</span>
<a name="l00252"></a>00252 <span class="comment">*   outspec   double[]  Output spectral variables, in SI units.</span>
<a name="l00253"></a>00253 <span class="comment">*</span>
<a name="l00254"></a>00254 <span class="comment">*   stat      int[]     Status return value for each vector element:</span>
<a name="l00255"></a>00255 <span class="comment">*                         0: Success.</span>
<a name="l00256"></a>00256 <span class="comment">*                         1: Invalid value of inspec.</span>
<a name="l00257"></a>00257 <span class="comment">*</span>
<a name="l00258"></a>00258 <span class="comment">* Function return value:</span>
<a name="l00259"></a>00259 <span class="comment">*             int       Status return value:</span>
<a name="l00260"></a>00260 <span class="comment">*                         0: Success.</span>
<a name="l00261"></a>00261 <span class="comment">*                         2: Invalid spectral parameters.</span>
<a name="l00262"></a>00262 <span class="comment">*                         4: One or more of the inspec coordinates were</span>
<a name="l00263"></a>00263 <span class="comment">*                            invalid, as indicated by the stat vector.</span>
<a name="l00264"></a>00264 <span class="comment">*</span>
<a name="l00265"></a>00265 <span class="comment">*</span>
<a name="l00266"></a>00266 <span class="comment">* spxprm struct - Spectral variables and their derivatives</span>
<a name="l00267"></a>00267 <span class="comment">* --------------------------------------------------------</span>
<a name="l00268"></a>00268 <span class="comment">* The spxprm struct contains the value of all spectral variables and their</span>
<a name="l00269"></a>00269 <span class="comment">* derivatives.   It is used solely by specx() which constructs it from</span>
<a name="l00270"></a>00270 <span class="comment">* information provided via its function arguments.</span>
<a name="l00271"></a>00271 <span class="comment">*</span>
<a name="l00272"></a>00272 <span class="comment">* This struct should be considered read-only, no members need ever be set nor</span>
<a name="l00273"></a>00273 <span class="comment">* should ever be modified by the user.</span>
<a name="l00274"></a>00274 <span class="comment">*</span>
<a name="l00275"></a>00275 <span class="comment">*   double restfrq</span>
<a name="l00276"></a>00276 <span class="comment">*     (Returned) Rest frequency [Hz].</span>
<a name="l00277"></a>00277 <span class="comment">*</span>
<a name="l00278"></a>00278 <span class="comment">*   double restwav</span>
<a name="l00279"></a>00279 <span class="comment">*     (Returned) Rest wavelength [m].</span>
<a name="l00280"></a>00280 <span class="comment">*</span>
<a name="l00281"></a>00281 <span class="comment">*   int wavetype</span>
<a name="l00282"></a>00282 <span class="comment">*     (Returned) True if wave types have been computed, and ...</span>
<a name="l00283"></a>00283 <span class="comment">*</span>
<a name="l00284"></a>00284 <span class="comment">*   int velotype</span>
<a name="l00285"></a>00285 <span class="comment">*     (Returned) ... true if velocity types have been computed; types are</span>
<a name="l00286"></a>00286 <span class="comment">*     defined below.</span>
<a name="l00287"></a>00287 <span class="comment">*</span>
<a name="l00288"></a>00288 <span class="comment">*     If one or other of spxprm::restfrq and spxprm::restwav is given</span>
<a name="l00289"></a>00289 <span class="comment">*     (non-zero) then all spectral variables may be computed.  If both are</span>
<a name="l00290"></a>00290 <span class="comment">*     given, restfrq is used.  If restfrq and restwav are both zero, only wave</span>
<a name="l00291"></a>00291 <span class="comment">*     characteristic xor velocity type spectral variables may be computed</span>
<a name="l00292"></a>00292 <span class="comment">*     depending on the variable given.   These flags indicate what is</span>
<a name="l00293"></a>00293 <span class="comment">*     available.</span>
<a name="l00294"></a>00294 <span class="comment">*</span>
<a name="l00295"></a>00295 <span class="comment">*   double freq</span>
<a name="l00296"></a>00296 <span class="comment">*     (Returned) Frequency [Hz] (wavetype).</span>
<a name="l00297"></a>00297 <span class="comment">*</span>
<a name="l00298"></a>00298 <span class="comment">*   double afrq</span>
<a name="l00299"></a>00299 <span class="comment">*     (Returned) Angular frequency [rad/s] (wavetype).</span>
<a name="l00300"></a>00300 <span class="comment">*</span>
<a name="l00301"></a>00301 <span class="comment">*   double ener</span>
<a name="l00302"></a>00302 <span class="comment">*     (Returned) Photon energy [J] (wavetype).</span>
<a name="l00303"></a>00303 <span class="comment">*</span>
<a name="l00304"></a>00304 <span class="comment">*   double wavn</span>
<a name="l00305"></a>00305 <span class="comment">*     (Returned) Wave number [/m] (wavetype).</span>
<a name="l00306"></a>00306 <span class="comment">*</span>
<a name="l00307"></a>00307 <span class="comment">*   double vrad</span>
<a name="l00308"></a>00308 <span class="comment">*     (Returned) Radio velocity [m/s] (velotype).</span>
<a name="l00309"></a>00309 <span class="comment">*</span>
<a name="l00310"></a>00310 <span class="comment">*   double wave</span>
<a name="l00311"></a>00311 <span class="comment">*     (Returned) Vacuum wavelength [m] (wavetype).</span>
<a name="l00312"></a>00312 <span class="comment">*</span>
<a name="l00313"></a>00313 <span class="comment">*   double vopt</span>
<a name="l00314"></a>00314 <span class="comment">*     (Returned) Optical velocity [m/s] (velotype).</span>
<a name="l00315"></a>00315 <span class="comment">*</span>
<a name="l00316"></a>00316 <span class="comment">*   double zopt</span>
<a name="l00317"></a>00317 <span class="comment">*     (Returned) Redshift [dimensionless] (velotype).</span>
<a name="l00318"></a>00318 <span class="comment">*</span>
<a name="l00319"></a>00319 <span class="comment">*   double awav</span>
<a name="l00320"></a>00320 <span class="comment">*     (Returned) Air wavelength [m] (wavetype).</span>
<a name="l00321"></a>00321 <span class="comment">*</span>
<a name="l00322"></a>00322 <span class="comment">*   double velo</span>
<a name="l00323"></a>00323 <span class="comment">*     (Returned) Relativistic velocity [m/s] (velotype).</span>
<a name="l00324"></a>00324 <span class="comment">*</span>
<a name="l00325"></a>00325 <span class="comment">*   double beta</span>
<a name="l00326"></a>00326 <span class="comment">*     (Returned) Relativistic beta [dimensionless] (velotype).</span>
<a name="l00327"></a>00327 <span class="comment">*</span>
<a name="l00328"></a>00328 <span class="comment">*   double dfreqafrq</span>
<a name="l00329"></a>00329 <span class="comment">*     (Returned) Derivative of frequency with respect to angular frequency</span>
<a name="l00330"></a>00330 <span class="comment">*     [/rad] (constant, = 1 / 2*pi), and ...</span>
<a name="l00331"></a>00331 <span class="comment">*   double dafrqfreq</span>
<a name="l00332"></a>00332 <span class="comment">*     (Returned) ... vice versa [rad] (constant, = 2*pi, always available).</span>
<a name="l00333"></a>00333 <span class="comment">*</span>
<a name="l00334"></a>00334 <span class="comment">*   double dfreqener</span>
<a name="l00335"></a>00335 <span class="comment">*     (Returned) Derivative of frequency with respect to photon energy</span>
<a name="l00336"></a>00336 <span class="comment">*     [/J/s] (constant, = 1/h), and ...</span>
<a name="l00337"></a>00337 <span class="comment">*   double denerfreq</span>
<a name="l00338"></a>00338 <span class="comment">*     (Returned) ... vice versa [Js] (constant, = h, Planck's constant,</span>
<a name="l00339"></a>00339 <span class="comment">*     always available).</span>
<a name="l00340"></a>00340 <span class="comment">*</span>
<a name="l00341"></a>00341 <span class="comment">*   double dfreqwavn</span>
<a name="l00342"></a>00342 <span class="comment">*     (Returned) Derivative of frequency with respect to wave number [m/s]</span>
<a name="l00343"></a>00343 <span class="comment">*     (constant, = c, the speed of light in vacuuo), and ...</span>
<a name="l00344"></a>00344 <span class="comment">*   double dwavnfreq</span>
<a name="l00345"></a>00345 <span class="comment">*     (Returned) ... vice versa [s/m] (constant, = 1/c, always available).</span>
<a name="l00346"></a>00346 <span class="comment">*</span>
<a name="l00347"></a>00347 <span class="comment">*   double dfreqvrad</span>
<a name="l00348"></a>00348 <span class="comment">*     (Returned) Derivative of frequency with respect to radio velocity [/m],</span>
<a name="l00349"></a>00349 <span class="comment">*     and ...</span>
<a name="l00350"></a>00350 <span class="comment">*   double dvradfreq</span>
<a name="l00351"></a>00351 <span class="comment">*     (Returned) ... vice versa [m] (wavetype &amp;&amp; velotype).</span>
<a name="l00352"></a>00352 <span class="comment">*</span>
<a name="l00353"></a>00353 <span class="comment">*   double dfreqwave</span>
<a name="l00354"></a>00354 <span class="comment">*     (Returned) Derivative of frequency with respect to vacuum wavelength</span>
<a name="l00355"></a>00355 <span class="comment">*     [/m/s], and ...</span>
<a name="l00356"></a>00356 <span class="comment">*   double dwavefreq</span>
<a name="l00357"></a>00357 <span class="comment">*     (Returned) ... vice versa [m s] (wavetype).</span>
<a name="l00358"></a>00358 <span class="comment">*</span>
<a name="l00359"></a>00359 <span class="comment">*   double dfreqawav</span>
<a name="l00360"></a>00360 <span class="comment">*     (Returned) Derivative of frequency with respect to air wavelength,</span>
<a name="l00361"></a>00361 <span class="comment">*     [/m/s], and ...</span>
<a name="l00362"></a>00362 <span class="comment">*   double dawavfreq</span>
<a name="l00363"></a>00363 <span class="comment">*     (Returned) ... vice versa [m s] (wavetype).</span>
<a name="l00364"></a>00364 <span class="comment">*</span>
<a name="l00365"></a>00365 <span class="comment">*   double dfreqvelo</span>
<a name="l00366"></a>00366 <span class="comment">*     (Returned) Derivative of frequency with respect to relativistic</span>
<a name="l00367"></a>00367 <span class="comment">*     velocity [/m], and ...</span>
<a name="l00368"></a>00368 <span class="comment">*   double dvelofreq</span>
<a name="l00369"></a>00369 <span class="comment">*     (Returned) ... vice versa [m] (wavetype &amp;&amp; velotype).</span>
<a name="l00370"></a>00370 <span class="comment">*</span>
<a name="l00371"></a>00371 <span class="comment">*   double dwavevopt</span>
<a name="l00372"></a>00372 <span class="comment">*     (Returned) Derivative of vacuum wavelength with respect to optical</span>
<a name="l00373"></a>00373 <span class="comment">*     velocity [s], and ...</span>
<a name="l00374"></a>00374 <span class="comment">*   double dvoptwave</span>
<a name="l00375"></a>00375 <span class="comment">*     (Returned) ... vice versa [/s] (wavetype &amp;&amp; velotype).</span>
<a name="l00376"></a>00376 <span class="comment">*</span>
<a name="l00377"></a>00377 <span class="comment">*   double dwavezopt</span>
<a name="l00378"></a>00378 <span class="comment">*     (Returned) Derivative of vacuum wavelength with respect to redshift [m],</span>
<a name="l00379"></a>00379 <span class="comment">*     and ...</span>
<a name="l00380"></a>00380 <span class="comment">*   double dzoptwave</span>
<a name="l00381"></a>00381 <span class="comment">*     (Returned) ... vice versa [/m] (wavetype &amp;&amp; velotype).</span>
<a name="l00382"></a>00382 <span class="comment">*</span>
<a name="l00383"></a>00383 <span class="comment">*   double dwaveawav</span>
<a name="l00384"></a>00384 <span class="comment">*     (Returned) Derivative of vacuum wavelength with respect to air</span>
<a name="l00385"></a>00385 <span class="comment">*     wavelength [dimensionless], and ...</span>
<a name="l00386"></a>00386 <span class="comment">*   double dawavwave</span>
<a name="l00387"></a>00387 <span class="comment">*     (Returned) ... vice versa [dimensionless] (wavetype).</span>
<a name="l00388"></a>00388 <span class="comment">*</span>
<a name="l00389"></a>00389 <span class="comment">*   double dwavevelo</span>
<a name="l00390"></a>00390 <span class="comment">*     (Returned) Derivative of vacuum wavelength with respect to relativistic</span>
<a name="l00391"></a>00391 <span class="comment">*     velocity [s], and ...</span>
<a name="l00392"></a>00392 <span class="comment">*   double dvelowave</span>
<a name="l00393"></a>00393 <span class="comment">*     (Returned) ... vice versa [/s] (wavetype &amp;&amp; velotype).</span>
<a name="l00394"></a>00394 <span class="comment">*</span>
<a name="l00395"></a>00395 <span class="comment">*   double dawavvelo</span>
<a name="l00396"></a>00396 <span class="comment">*     (Returned) Derivative of air wavelength with respect to relativistic</span>
<a name="l00397"></a>00397 <span class="comment">*     velocity [s], and ...</span>
<a name="l00398"></a>00398 <span class="comment">*   double dveloawav</span>
<a name="l00399"></a>00399 <span class="comment">*     (Returned) ... vice versa [/s] (wavetype &amp;&amp; velotype).</span>
<a name="l00400"></a>00400 <span class="comment">*</span>
<a name="l00401"></a>00401 <span class="comment">*   double dvelobeta</span>
<a name="l00402"></a>00402 <span class="comment">*     (Returned) Derivative of relativistic velocity with respect to</span>
<a name="l00403"></a>00403 <span class="comment">*     relativistic beta [m/s] (constant, = c, the speed of light in vacuu0),</span>
<a name="l00404"></a>00404 <span class="comment">*     and ...</span>
<a name="l00405"></a>00405 <span class="comment">*   double dbetavelo</span>
<a name="l00406"></a>00406 <span class="comment">*     (Returned) ... vice versa [s/m] (constant, = 1/c, always available).</span>
<a name="l00407"></a>00407 <span class="comment">*</span>
<a name="l00408"></a>00408 <span class="comment">*   struct wcserr *err</span>
<a name="l00409"></a>00409 <span class="comment">*     (Returned) If enabled, when an error status is returned this struct</span>
<a name="l00410"></a>00410 <span class="comment">*     contains detailed information about the error, see wcserr_enable().</span>
<a name="l00411"></a>00411 <span class="comment">*</span>
<a name="l00412"></a>00412 <span class="comment">*   void *padding</span>
<a name="l00413"></a>00413 <span class="comment">*     (An unused variable inserted for alignment purposes only.)</span>
<a name="l00414"></a>00414 <span class="comment">*</span>
<a name="l00415"></a>00415 <span class="comment">* Global variable: const char *spx_errmsg[] - Status return messages</span>
<a name="l00416"></a>00416 <span class="comment">* ------------------------------------------------------------------</span>
<a name="l00417"></a>00417 <span class="comment">* Error messages to match the status value returned from each function.</span>
<a name="l00418"></a>00418 <span class="comment">*</span>
<a name="l00419"></a>00419 <span class="comment">*===========================================================================*/</span>
<a name="l00420"></a>00420 
<a name="l00421"></a>00421 <span class="preprocessor">#ifndef WCSLIB_SPEC</span>
<a name="l00422"></a>00422 <span class="preprocessor"></span><span class="preprocessor">#define WCSLIB_SPEC</span>
<a name="l00423"></a>00423 <span class="preprocessor"></span>
<a name="l00424"></a>00424 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00425"></a>00425 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00426"></a>00426 <span class="preprocessor">#endif</span>
<a name="l00427"></a>00427 <span class="preprocessor"></span>
<a name="l00428"></a>00428 <span class="preprocessor">#include "<a class="code" href="wcserr_8h.html">wcserr.h</a>"</span>
<a name="l00429"></a>00429 
<a name="l00430"></a>00430 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf">spx_errmsg</a>[];
<a name="l00431"></a>00431 
<a name="l00432"></a><a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf">00432</a> <span class="keyword">enum</span> spx_errmsg {
<a name="l00433"></a><a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf45313ec670a74e7effc1bcee16cb0b56">00433</a>   <a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf45313ec670a74e7effc1bcee16cb0b56">SPXERR_SUCCESS</a>          = 0,  <span class="comment">/* Success. */</span>
<a name="l00434"></a><a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf7342349cd1dc5b4581ae9c39f31d055e">00434</a>   <a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf7342349cd1dc5b4581ae9c39f31d055e">SPXERR_NULL_POINTER</a>     = 1,  <span class="comment">/* Null spxprm pointer passed. */</span>
<a name="l00435"></a><a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf23753b512249d3752a74ce7497d9c852">00435</a>   <a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf23753b512249d3752a74ce7497d9c852">SPXERR_BAD_SPEC_PARAMS</a>  = 2,  <span class="comment">/* Invalid spectral parameters. */</span>
<a name="l00436"></a><a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf6b6639fb6d3683c9d356dbd7cf705de1">00436</a>   <a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecaf6b6639fb6d3683c9d356dbd7cf705de1">SPXERR_BAD_SPEC_VAR</a>     = 3,  <span class="comment">/* Invalid spectral variable. */</span>
<a name="l00437"></a><a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecafe795e388e346496b34e57864af841ae2">00437</a>   <a class="code" href="spx_8h.html#d99a404f496d5b8ce3ef6e53c630ecafe795e388e346496b34e57864af841ae2">SPXERR_BAD_INSPEC_COORD</a> = 4   <span class="comment">/* One or more of the inspec coordinates were</span>
<a name="l00438"></a>00438 <span class="comment">                                   invalid. */</span>
<a name="l00439"></a>00439 };
<a name="l00440"></a>00440 
<a name="l00441"></a><a class="code" href="structspxprm.html">00441</a> <span class="keyword">struct </span><a class="code" href="structspxprm.html" title="Spectral variables and their derivatives.">spxprm</a> {
<a name="l00442"></a><a class="code" href="structspxprm.html#d3a5b851397a50e8644aeda10b184776">00442</a>   <span class="keywordtype">double</span> <a class="code" href="structspxprm.html#533847a7e77e2bba8ce886289d31abdb">restfrq</a>, <a class="code" href="structspxprm.html#d3a5b851397a50e8644aeda10b184776">restwav</a>;      <span class="comment">/* Rest frequency [Hz] and wavelength [m].  */</span>
<a name="l00443"></a>00443 
<a name="l00444"></a><a class="code" href="structspxprm.html#2c20a26fe559feacc85e6e76c31bbbc3">00444</a>   <span class="keywordtype">int</span> <a class="code" href="structspxprm.html#2c20a26fe559feacc85e6e76c31bbbc3">wavetype</a>, <a class="code" href="structspxprm.html#e83f0b38ecd0b7b7b6afb6eb42a61fd4">velotype</a>;       <span class="comment">/* True if wave/velocity types have been    */</span>
<a name="l00445"></a>00445                                 <span class="comment">/* computed; types are defined below.       */</span>
<a name="l00446"></a>00446 
<a name="l00447"></a>00447   <span class="comment">/* Spectral variables computed by specx().                                */</span>
<a name="l00448"></a>00448   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00449"></a><a class="code" href="structspxprm.html#968cf3d8e4b0d082c6d617f5a38344f7">00449</a>   <span class="keywordtype">double</span> <a class="code" href="structspxprm.html#f2a797bbae7610552aa9adfe75118908">freq</a>,                  <span class="comment">/* wavetype: Frequency [Hz].                */</span>
<a name="l00450"></a>00450          <a class="code" href="structspxprm.html#5f4248299fb8a02ff1df6ed3d1baaa1b">afrq</a>,                  <span class="comment">/* wavetype: Angular frequency [rad/s].     */</span>
<a name="l00451"></a>00451          <a class="code" href="structspxprm.html#b67c62285ad58f5f0c1a88cb15ac3408">ener</a>,                  <span class="comment">/* wavetype: Photon energy [J].             */</span>
<a name="l00452"></a>00452          <a class="code" href="structspxprm.html#a37e50cd66795673d6bd43883a1be540">wavn</a>,                  <span class="comment">/* wavetype: Wave number [/m].              */</span>
<a name="l00453"></a>00453          <a class="code" href="structspxprm.html#41ee038d00742dcf8cae9b6ed45a699b">vrad</a>,                  <span class="comment">/* velotype: Radio velocity [m/s].          */</span>
<a name="l00454"></a>00454          <a class="code" href="structspxprm.html#7ba88553a468a9ef696c0c1eeda6864f">wave</a>,                  <span class="comment">/* wavetype: Vacuum wavelength [m].         */</span>
<a name="l00455"></a>00455          <a class="code" href="structspxprm.html#1d7fd26e54e3b253a9e26163445cbfc8">vopt</a>,                  <span class="comment">/* velotype: Optical velocity [m/s].        */</span>
<a name="l00456"></a>00456          <a class="code" href="structspxprm.html#968cf3d8e4b0d082c6d617f5a38344f7">zopt</a>,                  <span class="comment">/* velotype: Redshift.                      */</span>
<a name="l00457"></a>00457          <a class="code" href="structspxprm.html#ef53f8244101a4229518b25b08143d18">awav</a>,                  <span class="comment">/* wavetype: Air wavelength [m].            */</span>
<a name="l00458"></a>00458          <a class="code" href="structspxprm.html#51aa1b37a464c53a5c07a9a407c4b96c">velo</a>,                  <span class="comment">/* velotype: Relativistic velocity [m/s].   */</span>
<a name="l00459"></a>00459          <a class="code" href="structspxprm.html#6d41ec682a058f4028032bf6934f7fc0">beta</a>;                  <span class="comment">/* velotype: Relativistic beta.             */</span>
<a name="l00460"></a>00460 
<a name="l00461"></a>00461   <span class="comment">/* Derivatives of spectral variables computed by specx().                 */</span>
<a name="l00462"></a>00462   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00463"></a><a class="code" href="structspxprm.html#84d43f663df39a476b33a9516f3662eb">00463</a>   <span class="keywordtype">double</span> <a class="code" href="structspxprm.html#a75c986198c4673e2caa30bd4ac73a30">dfreqafrq</a>, <a class="code" href="structspxprm.html#678577f6866727419716361586fe34bb">dafrqfreq</a>,  <span class="comment">/* Constant, always available.              */</span>
<a name="l00464"></a>00464          <a class="code" href="structspxprm.html#a419711bf0079fff37d4adbae3278f5c">dfreqener</a>, <a class="code" href="structspxprm.html#2d4ca3a63bb8871faec7928c8f713484">denerfreq</a>,  <span class="comment">/* Constant, always available.              */</span>
<a name="l00465"></a>00465          <a class="code" href="structspxprm.html#c0096d466fedc5ec61948044af06551d">dfreqwavn</a>, <a class="code" href="structspxprm.html#34e6a4ba58cd67ef619ab48a58c8b808">dwavnfreq</a>,  <span class="comment">/* Constant, always available.              */</span>
<a name="l00466"></a>00466          <a class="code" href="structspxprm.html#9c60b90b7911b9846b353991dbf38084">dfreqvrad</a>, <a class="code" href="structspxprm.html#1f9bd735b5ffa618aa0713616a3b2b87">dvradfreq</a>,  <span class="comment">/* wavetype &amp;&amp; velotype.                    */</span>
<a name="l00467"></a>00467          <a class="code" href="structspxprm.html#9cab306f378116a9b9388bd215a98c0b">dfreqwave</a>, <a class="code" href="structspxprm.html#90656bb22c7fdb8c750ee5a16745334c">dwavefreq</a>,  <span class="comment">/* wavetype.                                */</span>
<a name="l00468"></a>00468          <a class="code" href="structspxprm.html#a6ef9cc07973932f19c48062199e6689">dfreqawav</a>, <a class="code" href="structspxprm.html#c9e44005ceadafb8158df81fe022f46e">dawavfreq</a>,  <span class="comment">/* wavetype.                                */</span>
<a name="l00469"></a>00469          <a class="code" href="structspxprm.html#25de138f15027a948887f59f79b59d91">dfreqvelo</a>, <a class="code" href="structspxprm.html#6300648f1270fbd6f45fefaac054db70">dvelofreq</a>,  <span class="comment">/* wavetype &amp;&amp; velotype.                    */</span>
<a name="l00470"></a>00470          <a class="code" href="structspxprm.html#307491e5045c959ed5212c54b6e300e9">dwavevopt</a>, <a class="code" href="structspxprm.html#709e6f9fd2c706705a019d865280526f">dvoptwave</a>,  <span class="comment">/* wavetype &amp;&amp; velotype.                    */</span>
<a name="l00471"></a>00471          <a class="code" href="structspxprm.html#203c7de3b62de030e721e99cc0a5799b">dwavezopt</a>, <a class="code" href="structspxprm.html#84d43f663df39a476b33a9516f3662eb">dzoptwave</a>,  <span class="comment">/* wavetype &amp;&amp; velotype.                    */</span>
<a name="l00472"></a>00472          <a class="code" href="structspxprm.html#f252fd0c875bfe2dc99c56617ae2faa8">dwaveawav</a>, <a class="code" href="structspxprm.html#78d8a2235f18250cfa97a32625ab72a0">dawavwave</a>,  <span class="comment">/* wavetype.                                */</span>
<a name="l00473"></a>00473          <a class="code" href="structspxprm.html#75c591192f69d3e284d037d0216c2179">dwavevelo</a>, <a class="code" href="structspxprm.html#cfdb74852a20099c1cdc3b2cc8faa03b">dvelowave</a>,  <span class="comment">/* wavetype &amp;&amp; velotype.                    */</span>
<a name="l00474"></a>00474          <a class="code" href="structspxprm.html#7e1e561ce26f9be86978783bbd0dd496">dawavvelo</a>, <a class="code" href="structspxprm.html#5ab73474c2a6e92885c805cc017f6fbe">dveloawav</a>,  <span class="comment">/* wavetype &amp;&amp; velotype.                    */</span>
<a name="l00475"></a>00475          <a class="code" href="structspxprm.html#1d7633da24d461d6f791e003be2a508a">dvelobeta</a>, <a class="code" href="structspxprm.html#cc8a46737906be2cee7cba0b2aa09d87">dbetavelo</a>;  <span class="comment">/* Constant, always available.              */</span>
<a name="l00476"></a>00476 
<a name="l00477"></a>00477   <span class="comment">/* Error handling                                                         */</span>
<a name="l00478"></a>00478   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00479"></a><a class="code" href="structspxprm.html#b232cb470b7f96330512dea46791644e">00479</a>   <span class="keyword">struct </span><a class="code" href="structwcserr.html" title="Error message handling.">wcserr</a> *<a class="code" href="structspxprm.html#b232cb470b7f96330512dea46791644e">err</a>;
<a name="l00480"></a>00480 
<a name="l00481"></a>00481   <span class="comment">/* Private                                                                */</span>
<a name="l00482"></a>00482   <span class="comment">/*------------------------------------------------------------------------*/</span>
<a name="l00483"></a><a class="code" href="structspxprm.html#c8f016fe8e911c4ffbedde63318bb3db">00483</a>   <span class="keywordtype">void</span>   *<a class="code" href="structspxprm.html#c8f016fe8e911c4ffbedde63318bb3db">padding</a>;              <span class="comment">/* (Dummy inserted for alignment purposes.) */</span>
<a name="l00484"></a>00484 };
<a name="l00485"></a>00485 
<a name="l00486"></a>00486 <span class="comment">/* Size of the spxprm struct in int units, used by the Fortran wrappers. */</span>
<a name="l00487"></a><a class="code" href="spx_8h.html#45f0db5bb967998f070cad30e5e68180">00487</a> <span class="preprocessor">#define SPXLEN (sizeof(struct spxprm)/sizeof(int))</span>
<a name="l00488"></a>00488 <span class="preprocessor"></span>
<a name="l00489"></a>00489 
<a name="l00490"></a>00490 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#192c7ea1edb2fc79d391a51bec7442e0" title="Spectral cross conversions (scalar).">specx</a>(<span class="keyword">const</span> <span class="keywordtype">char</span> *type, <span class="keywordtype">double</span> spec, <span class="keywordtype">double</span> restfrq, <span class="keywordtype">double</span> restwav,
<a name="l00491"></a>00491           <span class="keyword">struct</span> <a class="code" href="structspxprm.html" title="Spectral variables and their derivatives.">spxprm</a> *specs);
<a name="l00492"></a>00492 
<a name="l00493"></a>00493 
<a name="l00494"></a>00494 <span class="comment">/* For use in declaring function prototypes, e.g. in spcprm. */</span>
<a name="l00495"></a><a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3">00495</a> <span class="preprocessor">#define SPX_ARGS double param, int nspec, int instep, int outstep, \</span>
<a name="l00496"></a>00496 <span class="preprocessor">    const double inspec[], double outspec[], int stat[]</span>
<a name="l00497"></a>00497 <span class="preprocessor"></span>
<a name="l00498"></a>00498 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#6ee182e1185978bc6e7f69e4604fe341" title="Convert frequency to angular frequency (vector).">freqafrq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00499"></a>00499 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#d0a5167b8e52a0cdc3990e35a324ba02" title="Convert angular frequency to frequency (vector).">afrqfreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00500"></a>00500 
<a name="l00501"></a>00501 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#5c2eb2d8649eaab21e71efcd25d9236c" title="Convert frequency to photon energy (vector).">freqener</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00502"></a>00502 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#89a689b848429cfa5780757a5eee9347" title="Convert photon energy to frequency (vector).">enerfreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00503"></a>00503 
<a name="l00504"></a>00504 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#9eb861d7c7437c5f974ad425da8b5664" title="Convert frequency to wave number (vector).">freqwavn</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00505"></a>00505 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#5eed4e6f2879b4607e60b4f77e2736bd" title="Convert wave number to frequency (vector).">wavnfreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00506"></a>00506 
<a name="l00507"></a>00507 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#51b714ff0ed788c20f1b273ec551b6f6" title="Convert frequency to vacuum wavelength (vector).">freqwave</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00508"></a>00508 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#6c79d97dcc410e1a7a3e6e26ba3dabe6" title="Convert vacuum wavelength to frequency (vector).">wavefreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00509"></a>00509 
<a name="l00510"></a>00510 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#3e86c3462619b4fdf0aeeeea9874757e" title="Convert frequency to air wavelength (vector).">freqawav</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00511"></a>00511 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#16bc2fef69c592c5bcdc695633f17df0" title="Convert air wavelength to frequency (vector).">awavfreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00512"></a>00512 
<a name="l00513"></a>00513 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#5a497ffd57345f2f0bf1c9abc56842c4" title="Convert vacuum wavelength to air wavelength (vector).">waveawav</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00514"></a>00514 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#413fa882d2b67a792a35938738214057" title="Convert air wavelength to vacuum wavelength (vector).">awavwave</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00515"></a>00515 
<a name="l00516"></a>00516 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#8aba8fe47efe098740991771e97fe756" title="Convert relativistic velocity to relativistic beta (vector).">velobeta</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00517"></a>00517 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#09b951b08ac818b9da44389a3ddf614a" title="Convert relativistic beta to relativistic velocity (vector).">betavelo</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00518"></a>00518 
<a name="l00519"></a>00519 
<a name="l00520"></a>00520 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#a626b0cad9206c62e7e265bdf8c92c31" title="Convert frequency to relativistic velocity (vector).">freqvelo</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00521"></a>00521 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#974f799a8ee19dd23114ca01b225a02f" title="Convert relativistic velocity to frequency (vector).">velofreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00522"></a>00522 
<a name="l00523"></a>00523 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#f4784a764fd0f36c82548ef755c470bd" title="Convert frequency to radio velocity (vector).">freqvrad</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00524"></a>00524 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#772a14e27c613ea7b63697efdb765205" title="Convert radio velocity to frequency (vector).">vradfreq</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00525"></a>00525 
<a name="l00526"></a>00526 
<a name="l00527"></a>00527 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#0459c65496512f270d3c569c346ce413" title="Conversions between wavelength and velocity types (vector).">wavevelo</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00528"></a>00528 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#cc02a893f538f5f0c0d1d9baae2b0e10" title="Convert relativistic velocity to vacuum wavelength (vector).">velowave</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00529"></a>00529 
<a name="l00530"></a>00530 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#f7a2d05c2db901488d68576343aad873" title="Convert air wavelength to relativistic velocity (vector).">awavvelo</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00531"></a>00531 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#56a7d77413c654541fb29f58561c16f9" title="Convert relativistic velocity to air wavelength (vector).">veloawav</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00532"></a>00532 
<a name="l00533"></a>00533 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#61a1980ff0683231529b784af1c48eaa" title="Convert vacuum wavelength to optical velocity (vector).">wavevopt</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00534"></a>00534 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#b23cb997ad699b59f91f4dfe4e8b28b0" title="Convert optical velocity to vacuum wavelength (vector).">voptwave</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00535"></a>00535 
<a name="l00536"></a>00536 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#544be13048057701c37a8e9c4f761be2" title="Convert vacuum wavelength to redshift (vector).">wavezopt</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00537"></a>00537 <span class="keywordtype">int</span> <a class="code" href="spx_8h.html#da5d4cf3e8791d64da68575da692e3f3" title="Convert redshift to vacuum wavelength (vector).">zoptwave</a>(<a class="code" href="spx_8h.html#777e5c4790da397aefcada61445a1bb3" title="For use in declaring spectral conversion function prototypes.">SPX_ARGS</a>);
<a name="l00538"></a>00538 
<a name="l00539"></a>00539 
<a name="l00540"></a>00540 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00541"></a>00541 <span class="preprocessor"></span>}
<a name="l00542"></a>00542 <span class="preprocessor">#endif</span>
<a name="l00543"></a>00543 <span class="preprocessor"></span>
<a name="l00544"></a>00544 <span class="preprocessor">#endif </span><span class="comment">/* WCSLIB_SPEC */</span>
</pre></div></div>
<hr size="1"><address style="text-align: right;"><small>Generated on Tue Oct 4 19:02:30 2011 for WCSLIB 4.8.2 by&nbsp;
<a href="http://www.doxygen.org/index.html">
<img src="doxygen.png" alt="doxygen" align="middle" border="0"></a> 1.5.6 </small></address>
</body>
</html>