WCSLIB  7.6
log.h
Go to the documentation of this file.
1 /*============================================================================
2  WCSLIB 7.6 - 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: log.h,v 7.6 2021/04/13 12:57:01 mcalabre Exp $
23 *=============================================================================
24 *
25 * WCSLIB 7.6 - 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 log routines
31 * ---------------------------
32 * Routines in this suite implement the part of the FITS World Coordinate
33 * System (WCS) standard that deals with logarithmic coordinates, as described
34 * in
35 *
36 * "Representations of world coordinates in FITS",
37 * Greisen, E.W., & Calabretta, M.R. 2002, A&A, 395, 1061 (WCS Paper I)
38 *
39 * "Representations of spectral coordinates in FITS",
40 * Greisen, E.W., Calabretta, M.R., Valdes, F.G., & Allen, S.L.
41 * 2006, A&A, 446, 747 (WCS Paper III)
42 *
43 * These routines define methods to be used for computing logarithmic world
44 * coordinates from intermediate world coordinates (a linear transformation of
45 * image pixel coordinates), and vice versa.
46 *
47 * logx2s() and logs2x() implement the WCS logarithmic coordinate
48 * transformations.
49 *
50 * Argument checking:
51 * ------------------
52 * The input log-coordinate values are only checked for values that would
53 * result in floating point exceptions and the same is true for the
54 * log-coordinate reference value.
55 *
56 * Accuracy:
57 * ---------
58 * No warranty is given for the accuracy of these routines (refer to the
59 * copyright notice); intending users must satisfy for themselves their
60 * adequacy for the intended purpose. However, closure effectively to within
61 * double precision rounding error was demonstrated by test routine tlog.c
62 * which accompanies this software.
63 *
64 *
65 * logx2s() - Transform to logarithmic coordinates
66 * -----------------------------------------------
67 * logx2s() transforms intermediate world coordinates to logarithmic
68 * coordinates.
69 *
70 * Given and returned:
71 * crval double Log-coordinate reference value (CRVALia).
72 *
73 * Given:
74 * nx int Vector length.
75 *
76 * sx int Vector stride.
77 *
78 * slogc int Vector stride.
79 *
80 * x const double[]
81 * Intermediate world coordinates, in SI units.
82 *
83 * Returned:
84 * logc double[] Logarithmic coordinates, in SI units.
85 *
86 * stat int[] Status return value status for each vector element:
87 * 0: Success.
88 *
89 * Function return value:
90 * int Status return value:
91 * 0: Success.
92 * 2: Invalid log-coordinate reference value.
93 *
94 *
95 * logs2x() - Transform logarithmic coordinates
96 * --------------------------------------------
97 * logs2x() transforms logarithmic world coordinates to intermediate world
98 * coordinates.
99 *
100 * Given and returned:
101 * crval double Log-coordinate reference value (CRVALia).
102 *
103 * Given:
104 * nlogc int Vector length.
105 *
106 * slogc int Vector stride.
107 *
108 * sx int Vector stride.
109 *
110 * logc const double[]
111 * Logarithmic coordinates, in SI units.
112 *
113 * Returned:
114 * x double[] Intermediate world coordinates, in SI units.
115 *
116 * stat int[] Status return value status for each vector element:
117 * 0: Success.
118 * 1: Invalid value of logc.
119 *
120 * Function return value:
121 * int Status return value:
122 * 0: Success.
123 * 2: Invalid log-coordinate reference value.
124 * 4: One or more of the world-coordinate values
125 * are incorrect, as indicated by the stat vector.
126 *
127 *
128 * Global variable: const char *log_errmsg[] - Status return messages
129 * ------------------------------------------------------------------
130 * Error messages to match the status value returned from each function.
131 *
132 *===========================================================================*/
133 
134 #ifndef WCSLIB_LOG
135 #define WCSLIB_LOG
136 
137 #ifdef __cplusplus
138 extern "C" {
139 #endif
140 
141 extern const char *log_errmsg[];
142 
144  LOGERR_SUCCESS = 0, // Success.
145  LOGERR_NULL_POINTER = 1, // Null pointer passed.
146  LOGERR_BAD_LOG_REF_VAL = 2, // Invalid log-coordinate reference value.
147  LOGERR_BAD_X = 3, // One or more of the x coordinates were
148  // invalid.
149  LOGERR_BAD_WORLD = 4 // One or more of the world coordinates were
150  // invalid.
151 };
152 
153 int logx2s(double crval, int nx, int sx, int slogc, const double x[],
154  double logc[], int stat[]);
155 
156 int logs2x(double crval, int nlogc, int slogc, int sx, const double logc[],
157  double x[], int stat[]);
158 
159 
160 #ifdef __cplusplus
161 }
162 #endif
163 
164 #endif // WCSLIB_LOG
int logx2s(double crval, int nx, int sx, int slogc, const double x[], double logc[], int stat[])
Transform to logarithmic coordinates.
log_errmsg_enum
Definition: log.h:143
@ LOGERR_BAD_WORLD
Definition: log.h:149
@ LOGERR_SUCCESS
Definition: log.h:144
@ LOGERR_BAD_X
Definition: log.h:147
@ LOGERR_NULL_POINTER
Definition: log.h:145
@ LOGERR_BAD_LOG_REF_VAL
Definition: log.h:146
const char * log_errmsg[]
Status return messages.
int logs2x(double crval, int nlogc, int slogc, int sx, const double logc[], double x[], int stat[])
Transform logarithmic coordinates.