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
|
<!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: log.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 Page</span></a></li>
<li><a href="pages.html"><span>Related Pages</span></a></li>
<li><a href="annotated.html"><span>Data Structures</span></a></li>
<li class="current"><a href="files.html"><span>Files</span></a></li>
</ul>
</div>
<h1>log.h</h1><a href="log_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 <http://www.gnu.org/licenses/>.</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: log.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 logarithmic coordinate systems as</span>
<a name="l00035"></a>00035 <span class="comment">* defined 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., & Calabretta, M.R. 2002, A&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., & Allen, S.L.</span>
<a name="l00042"></a>00042 <span class="comment">* 2006, A&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 log routines</span>
<a name="l00049"></a>00049 <span class="comment">* ---------------------------</span>
<a name="l00050"></a>00050 <span class="comment">* These routines implement the part of the FITS WCS standard that deals with</span>
<a name="l00051"></a>00051 <span class="comment">* logarithmic coordinates. They define methods to be used for computing</span>
<a name="l00052"></a>00052 <span class="comment">* logarithmic world coordinates from intermediate world coordinates (a linear</span>
<a name="l00053"></a>00053 <span class="comment">* transformation of image pixel coordinates), and vice versa.</span>
<a name="l00054"></a>00054 <span class="comment">*</span>
<a name="l00055"></a>00055 <span class="comment">* logx2s() and logs2x() implement the WCS logarithmic coordinate</span>
<a name="l00056"></a>00056 <span class="comment">* transformations.</span>
<a name="l00057"></a>00057 <span class="comment">*</span>
<a name="l00058"></a>00058 <span class="comment">* Argument checking:</span>
<a name="l00059"></a>00059 <span class="comment">* ------------------</span>
<a name="l00060"></a>00060 <span class="comment">* The input log-coordinate values are only checked for values that would</span>
<a name="l00061"></a>00061 <span class="comment">* result in floating point exceptions and the same is true for the</span>
<a name="l00062"></a>00062 <span class="comment">* log-coordinate reference value.</span>
<a name="l00063"></a>00063 <span class="comment">*</span>
<a name="l00064"></a>00064 <span class="comment">* Accuracy:</span>
<a name="l00065"></a>00065 <span class="comment">* ---------</span>
<a name="l00066"></a>00066 <span class="comment">* No warranty is given for the accuracy of these routines (refer to the</span>
<a name="l00067"></a>00067 <span class="comment">* copyright notice); intending users must satisfy for themselves their</span>
<a name="l00068"></a>00068 <span class="comment">* adequacy for the intended purpose. However, closure effectively to within</span>
<a name="l00069"></a>00069 <span class="comment">* double precision rounding error was demonstrated by test routine tlog.c</span>
<a name="l00070"></a>00070 <span class="comment">* which accompanies this software.</span>
<a name="l00071"></a>00071 <span class="comment">*</span>
<a name="l00072"></a>00072 <span class="comment">*</span>
<a name="l00073"></a>00073 <span class="comment">* logx2s() - Transform to logarithmic coordinates</span>
<a name="l00074"></a>00074 <span class="comment">* -----------------------------------------------</span>
<a name="l00075"></a>00075 <span class="comment">* logx2s() transforms intermediate world coordinates to logarithmic</span>
<a name="l00076"></a>00076 <span class="comment">* coordinates.</span>
<a name="l00077"></a>00077 <span class="comment">*</span>
<a name="l00078"></a>00078 <span class="comment">* Given and returned:</span>
<a name="l00079"></a>00079 <span class="comment">* crval double Log-coordinate reference value (CRVALia).</span>
<a name="l00080"></a>00080 <span class="comment">*</span>
<a name="l00081"></a>00081 <span class="comment">* Given:</span>
<a name="l00082"></a>00082 <span class="comment">* nx int Vector length.</span>
<a name="l00083"></a>00083 <span class="comment">*</span>
<a name="l00084"></a>00084 <span class="comment">* sx int Vector stride.</span>
<a name="l00085"></a>00085 <span class="comment">*</span>
<a name="l00086"></a>00086 <span class="comment">* slogc int Vector stride.</span>
<a name="l00087"></a>00087 <span class="comment">*</span>
<a name="l00088"></a>00088 <span class="comment">* x const double[]</span>
<a name="l00089"></a>00089 <span class="comment">* Intermediate world coordinates, in SI units.</span>
<a name="l00090"></a>00090 <span class="comment">*</span>
<a name="l00091"></a>00091 <span class="comment">* Returned:</span>
<a name="l00092"></a>00092 <span class="comment">* logc double[] Logarithmic coordinates, in SI units.</span>
<a name="l00093"></a>00093 <span class="comment">*</span>
<a name="l00094"></a>00094 <span class="comment">* stat int[] Status return value status for each vector element:</span>
<a name="l00095"></a>00095 <span class="comment">* 0: Success.</span>
<a name="l00096"></a>00096 <span class="comment">*</span>
<a name="l00097"></a>00097 <span class="comment">* Function return value:</span>
<a name="l00098"></a>00098 <span class="comment">* int Status return value:</span>
<a name="l00099"></a>00099 <span class="comment">* 0: Success.</span>
<a name="l00100"></a>00100 <span class="comment">* 2: Invalid log-coordinate reference value.</span>
<a name="l00101"></a>00101 <span class="comment">*</span>
<a name="l00102"></a>00102 <span class="comment">*</span>
<a name="l00103"></a>00103 <span class="comment">* logs2x() - Transform logarithmic coordinates</span>
<a name="l00104"></a>00104 <span class="comment">* --------------------------------------------</span>
<a name="l00105"></a>00105 <span class="comment">* logs2x() transforms logarithmic world coordinates to intermediate world</span>
<a name="l00106"></a>00106 <span class="comment">* coordinates.</span>
<a name="l00107"></a>00107 <span class="comment">*</span>
<a name="l00108"></a>00108 <span class="comment">* Given and returned:</span>
<a name="l00109"></a>00109 <span class="comment">* crval double Log-coordinate reference value (CRVALia).</span>
<a name="l00110"></a>00110 <span class="comment">*</span>
<a name="l00111"></a>00111 <span class="comment">* Given:</span>
<a name="l00112"></a>00112 <span class="comment">* nlogc int Vector length.</span>
<a name="l00113"></a>00113 <span class="comment">*</span>
<a name="l00114"></a>00114 <span class="comment">* slogc int Vector stride.</span>
<a name="l00115"></a>00115 <span class="comment">*</span>
<a name="l00116"></a>00116 <span class="comment">* sx int Vector stride.</span>
<a name="l00117"></a>00117 <span class="comment">*</span>
<a name="l00118"></a>00118 <span class="comment">* logc const double[]</span>
<a name="l00119"></a>00119 <span class="comment">* Logarithmic coordinates, in SI units.</span>
<a name="l00120"></a>00120 <span class="comment">*</span>
<a name="l00121"></a>00121 <span class="comment">* Returned:</span>
<a name="l00122"></a>00122 <span class="comment">* x double[] Intermediate world coordinates, in SI units.</span>
<a name="l00123"></a>00123 <span class="comment">*</span>
<a name="l00124"></a>00124 <span class="comment">* stat int[] Status return value status for each vector element:</span>
<a name="l00125"></a>00125 <span class="comment">* 0: Success.</span>
<a name="l00126"></a>00126 <span class="comment">* 1: Invalid value of logc.</span>
<a name="l00127"></a>00127 <span class="comment">*</span>
<a name="l00128"></a>00128 <span class="comment">* Function return value:</span>
<a name="l00129"></a>00129 <span class="comment">* int Status return value:</span>
<a name="l00130"></a>00130 <span class="comment">* 0: Success.</span>
<a name="l00131"></a>00131 <span class="comment">* 2: Invalid log-coordinate reference value.</span>
<a name="l00132"></a>00132 <span class="comment">* 4: One or more of the world-coordinate values</span>
<a name="l00133"></a>00133 <span class="comment">* are incorrect, as indicated by the stat vector.</span>
<a name="l00134"></a>00134 <span class="comment">*</span>
<a name="l00135"></a>00135 <span class="comment">*</span>
<a name="l00136"></a>00136 <span class="comment">* Global variable: const char *log_errmsg[] - Status return messages</span>
<a name="l00137"></a>00137 <span class="comment">* ------------------------------------------------------------------</span>
<a name="l00138"></a>00138 <span class="comment">* Error messages to match the status value returned from each function.</span>
<a name="l00139"></a>00139 <span class="comment">*</span>
<a name="l00140"></a>00140 <span class="comment">*===========================================================================*/</span>
<a name="l00141"></a>00141
<a name="l00142"></a>00142 <span class="preprocessor">#ifndef WCSLIB_LOG</span>
<a name="l00143"></a>00143 <span class="preprocessor"></span><span class="preprocessor">#define WCSLIB_LOG</span>
<a name="l00144"></a>00144 <span class="preprocessor"></span>
<a name="l00145"></a>00145 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00146"></a>00146 <span class="preprocessor"></span><span class="keyword">extern</span> <span class="stringliteral">"C"</span> {
<a name="l00147"></a>00147 <span class="preprocessor">#endif</span>
<a name="l00148"></a>00148 <span class="preprocessor"></span>
<a name="l00149"></a>00149 <span class="keyword">extern</span> <span class="keyword">const</span> <span class="keywordtype">char</span> *<a class="code" href="log_8h.html#8b8e0a071c9539f4be52eaf789f385ea" title="Status return messages.">log_errmsg</a>[];
<a name="l00150"></a>00150
<a name="l00151"></a><a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c36">00151</a> <span class="keyword">enum</span> <a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c36">log_errmsg_enum</a> {
<a name="l00152"></a><a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c361f9859b85143e5ddc55744beff6d433c">00152</a> <a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c361f9859b85143e5ddc55744beff6d433c">LOGERR_SUCCESS</a> = 0, <span class="comment">/* Success. */</span>
<a name="l00153"></a><a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c36a1df3b688a38178c3bb75225c8921259">00153</a> <a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c36a1df3b688a38178c3bb75225c8921259">LOGERR_NULL_POINTER</a> = 1, <span class="comment">/* Null pointer passed. */</span>
<a name="l00154"></a><a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c36fd604876bd42694c1a04cdae2be719e6">00154</a> <a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c36fd604876bd42694c1a04cdae2be719e6">LOGERR_BAD_LOG_REF_VAL</a> = 2, <span class="comment">/* Invalid log-coordinate reference value. */</span>
<a name="l00155"></a><a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c3685932a7f3c52c3090c1a1c5e82ed1c22">00155</a> <a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c3685932a7f3c52c3090c1a1c5e82ed1c22">LOGERR_BAD_X</a> = 3, <span class="comment">/* One or more of the x coordinates were</span>
<a name="l00156"></a>00156 <span class="comment"> invalid. */</span>
<a name="l00157"></a><a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c3605b7fdbe8fcf799db114f90f04083273">00157</a> <a class="code" href="log_8h.html#3ca7c9ed3cef9e053e1f32b60a0d0c3605b7fdbe8fcf799db114f90f04083273">LOGERR_BAD_WORLD</a> = 4 <span class="comment">/* One or more of the world coordinates were</span>
<a name="l00158"></a>00158 <span class="comment"> invalid. */</span>
<a name="l00159"></a>00159 };
<a name="l00160"></a>00160
<a name="l00161"></a>00161 <span class="keywordtype">int</span> <a class="code" href="log_8h.html#239e115e583af4e67e60de4a4f95f09e" title="Transform to logarithmic coordinates.">logx2s</a>(<span class="keywordtype">double</span> crval, <span class="keywordtype">int</span> nx, <span class="keywordtype">int</span> sx, <span class="keywordtype">int</span> slogc, <span class="keyword">const</span> <span class="keywordtype">double</span> x[],
<a name="l00162"></a>00162 <span class="keywordtype">double</span> logc[], <span class="keywordtype">int</span> stat[]);
<a name="l00163"></a>00163
<a name="l00164"></a>00164 <span class="keywordtype">int</span> <a class="code" href="log_8h.html#c80fd753e48873cdbd9a332609de150a" title="Transform logarithmic coordinates.">logs2x</a>(<span class="keywordtype">double</span> crval, <span class="keywordtype">int</span> nlogc, <span class="keywordtype">int</span> slogc, <span class="keywordtype">int</span> sx, <span class="keyword">const</span> <span class="keywordtype">double</span> logc[],
<a name="l00165"></a>00165 <span class="keywordtype">double</span> x[], <span class="keywordtype">int</span> stat[]);
<a name="l00166"></a>00166
<a name="l00167"></a>00167
<a name="l00168"></a>00168 <span class="preprocessor">#ifdef __cplusplus</span>
<a name="l00169"></a>00169 <span class="preprocessor"></span>}
<a name="l00170"></a>00170 <span class="preprocessor">#endif</span>
<a name="l00171"></a>00171 <span class="preprocessor"></span>
<a name="l00172"></a>00172 <span class="preprocessor">#endif </span><span class="comment">/* WCSLIB_LOG */</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
<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>
|