Sophie

Sophie

distrib > Mageia > 4 > x86_64 > by-pkgid > acb94a8b2a4b1c8c2a966ed9ee99ffe4 > files > 251

lib64wcs-devel-4.18-2.mga4.x86_64.rpm

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/>
<meta http-equiv="X-UA-Compatible" content="IE=9"/>
<meta name="generator" content="Doxygen 1.8.4"/>
<title>WCSLIB 4.18: spc.h File Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<script type="text/javascript" src="jquery.js"></script>
<script type="text/javascript" src="dynsections.js"></script>
<link href="doxygen.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="top"><!-- do not remove this div, it is closed by doxygen! -->
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">WCSLIB 4.18
   </div>
  </td>
 </tr>
 </tbody>
</table>
</div>
<!-- end header part -->
<!-- Generated by Doxygen 1.8.4 -->
  <div id="navrow1" class="tabs">
    <ul class="tablist">
      <li><a href="index.html"><span>Main&#160;Page</span></a></li>
      <li><a href="pages.html"><span>Related&#160;Pages</span></a></li>
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li class="current"><a href="files.html"><span>Files</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="files.html"><span>File&#160;List</span></a></li>
      <li><a href="globals.html"><span>Globals</span></a></li>
    </ul>
  </div>
<div id="nav-path" class="navpath">
  <ul>
<li class="navelem"><a class="el" href="dir_af99bb3c152a306abd27951285ad1127.html">C</a></li>  </ul>
</div>
</div><!-- top -->
<div class="header">
  <div class="summary">
<a href="#nested-classes">Data Structures</a> &#124;
<a href="#define-members">Macros</a> &#124;
<a href="#enum-members">Enumerations</a> &#124;
<a href="#func-members">Functions</a> &#124;
<a href="#var-members">Variables</a>  </div>
  <div class="headertitle">
<div class="title">spc.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="spx_8h_source.html">spx.h</a>&quot;</code><br/>
<code>#include &quot;<a class="el" href="wcserr_8h_source.html">wcserr.h</a>&quot;</code><br/>
</div>
<p><a href="spc_8h_source.html">Go to the source code of this file.</a></p>
<table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a>
Data Structures</h2></td></tr>
<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">struct &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="structspcprm.html">spcprm</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spectral transformation parameters.  <a href="structspcprm.html#details">More...</a><br/></td></tr>
<tr class="separator:"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a>
Macros</h2></td></tr>
<tr class="memitem:a4e195ae6c61da3608692a3c7f2395599"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a4e195ae6c61da3608692a3c7f2395599">SPCLEN</a>&#160;&#160;&#160;(sizeof(struct <a class="el" href="structspcprm.html">spcprm</a>)/sizeof(int))</td></tr>
<tr class="memdesc:a4e195ae6c61da3608692a3c7f2395599"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the spcprm struct in <em>int</em> units.  <a href="#a4e195ae6c61da3608692a3c7f2395599">More...</a><br/></td></tr>
<tr class="separator:a4e195ae6c61da3608692a3c7f2395599"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a4d66edc63bfc8a39adc6bac9e88c8e81"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a4d66edc63bfc8a39adc6bac9e88c8e81">spcini_errmsg</a>&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td></tr>
<tr class="memdesc:a4d66edc63bfc8a39adc6bac9e88c8e81"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#a4d66edc63bfc8a39adc6bac9e88c8e81">More...</a><br/></td></tr>
<tr class="separator:a4d66edc63bfc8a39adc6bac9e88c8e81"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac39694faccdd56850677999d714cd14a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#ac39694faccdd56850677999d714cd14a">spcprt_errmsg</a>&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td></tr>
<tr class="memdesc:ac39694faccdd56850677999d714cd14a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#ac39694faccdd56850677999d714cd14a">More...</a><br/></td></tr>
<tr class="separator:ac39694faccdd56850677999d714cd14a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a49807752ce4e223d4095cf6ad13bac0a"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a49807752ce4e223d4095cf6ad13bac0a">spcset_errmsg</a>&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td></tr>
<tr class="memdesc:a49807752ce4e223d4095cf6ad13bac0a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#a49807752ce4e223d4095cf6ad13bac0a">More...</a><br/></td></tr>
<tr class="separator:a49807752ce4e223d4095cf6ad13bac0a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aab517aed3ee9f8d5a5ca1f990d310b61"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#aab517aed3ee9f8d5a5ca1f990d310b61">spcx2s_errmsg</a>&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td></tr>
<tr class="memdesc:aab517aed3ee9f8d5a5ca1f990d310b61"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#aab517aed3ee9f8d5a5ca1f990d310b61">More...</a><br/></td></tr>
<tr class="separator:aab517aed3ee9f8d5a5ca1f990d310b61"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af0e4274b242fd41625b6ad4f4376b8da"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#af0e4274b242fd41625b6ad4f4376b8da">spcs2x_errmsg</a>&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td></tr>
<tr class="memdesc:af0e4274b242fd41625b6ad4f4376b8da"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#af0e4274b242fd41625b6ad4f4376b8da">More...</a><br/></td></tr>
<tr class="separator:af0e4274b242fd41625b6ad4f4376b8da"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="enum-members"></a>
Enumerations</h2></td></tr>
<tr class="memitem:a51ba1ce5380fd2e7693c37554d18fc3b"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3b">spc_errmsg_enum</a> { <br/>
&#160;&#160;<a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3bae000828492cbedc0502f757d8b892606">SPCERR_NO_CHANGE</a> = -1, 
<a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3ba0b84f38d1e903eacda3122ce55bff741">SPCERR_SUCCESS</a> = 0, 
<a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3ba7c5e0d09fac9f441e39f3cf28801961f">SPCERR_NULL_POINTER</a> = 1, 
<a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3ba0653e60411a641a326492c65d257daa8">SPCERR_BAD_SPEC_PARAMS</a> = 2, 
<br/>
&#160;&#160;<a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3ba3ba9183c7c3dace15eef0606980fd615">SPCERR_BAD_X</a> = 3, 
<a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3ba7e218c5bd52bd6a45d8ad66573653007">SPCERR_BAD_SPEC</a> = 4
<br/>
 }</td></tr>
<tr class="separator:a51ba1ce5380fd2e7693c37554d18fc3b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a>
Functions</h2></td></tr>
<tr class="memitem:a30c95d776068ef3cc959a50af9995fa9"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a30c95d776068ef3cc959a50af9995fa9">spcini</a> (struct <a class="el" href="structspcprm.html">spcprm</a> *spc)</td></tr>
<tr class="memdesc:a30c95d776068ef3cc959a50af9995fa9"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor for the spcprm struct.  <a href="#a30c95d776068ef3cc959a50af9995fa9">More...</a><br/></td></tr>
<tr class="separator:a30c95d776068ef3cc959a50af9995fa9"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a2e04fc3ccd8aceebb4bfef56c5399a7d"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a2e04fc3ccd8aceebb4bfef56c5399a7d">spcfree</a> (struct <a class="el" href="structspcprm.html">spcprm</a> *spc)</td></tr>
<tr class="memdesc:a2e04fc3ccd8aceebb4bfef56c5399a7d"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor for the spcprm struct.  <a href="#a2e04fc3ccd8aceebb4bfef56c5399a7d">More...</a><br/></td></tr>
<tr class="separator:a2e04fc3ccd8aceebb4bfef56c5399a7d"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7304d0d00bcf9d2bad1f56ba6d8322ea"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a7304d0d00bcf9d2bad1f56ba6d8322ea">spcprt</a> (const struct <a class="el" href="structspcprm.html">spcprm</a> *spc)</td></tr>
<tr class="memdesc:a7304d0d00bcf9d2bad1f56ba6d8322ea"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print routine for the spcprm struct.  <a href="#a7304d0d00bcf9d2bad1f56ba6d8322ea">More...</a><br/></td></tr>
<tr class="separator:a7304d0d00bcf9d2bad1f56ba6d8322ea"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:af2ee6399a65f2467841be79e4bbb41c3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#af2ee6399a65f2467841be79e4bbb41c3">spcset</a> (struct <a class="el" href="structspcprm.html">spcprm</a> *spc)</td></tr>
<tr class="memdesc:af2ee6399a65f2467841be79e4bbb41c3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup routine for the spcprm struct.  <a href="#af2ee6399a65f2467841be79e4bbb41c3">More...</a><br/></td></tr>
<tr class="separator:af2ee6399a65f2467841be79e4bbb41c3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae7fe86ae85a1a3bd19c2d78c3dba58f6"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#ae7fe86ae85a1a3bd19c2d78c3dba58f6">spcx2s</a> (struct <a class="el" href="structspcprm.html">spcprm</a> *spc, int nx, int sx, int sspec, const double x[], double spec[], int stat[])</td></tr>
<tr class="memdesc:ae7fe86ae85a1a3bd19c2d78c3dba58f6"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transform to spectral coordinates.  <a href="#ae7fe86ae85a1a3bd19c2d78c3dba58f6">More...</a><br/></td></tr>
<tr class="separator:ae7fe86ae85a1a3bd19c2d78c3dba58f6"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae6e89217a5eca87a2101ae195da74347"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#ae6e89217a5eca87a2101ae195da74347">spcs2x</a> (struct <a class="el" href="structspcprm.html">spcprm</a> *spc, int nspec, int sspec, int sx, const double spec[], double x[], int stat[])</td></tr>
<tr class="memdesc:ae6e89217a5eca87a2101ae195da74347"><td class="mdescLeft">&#160;</td><td class="mdescRight">Transform spectral coordinates.  <a href="#ae6e89217a5eca87a2101ae195da74347">More...</a><br/></td></tr>
<tr class="separator:ae6e89217a5eca87a2101ae195da74347"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aebcf04410f900ba05cb9bf1dcf3f28e8"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#aebcf04410f900ba05cb9bf1dcf3f28e8">spctype</a> (const char ctype[9], char stype[], char scode[], char sname[], char units[], char *ptype, char *xtype, int *restreq, struct <a class="el" href="structwcserr.html">wcserr</a> **err)</td></tr>
<tr class="memdesc:aebcf04410f900ba05cb9bf1dcf3f28e8"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spectral <code><b>CTYPE</b>ia</code> keyword analysis.  <a href="#aebcf04410f900ba05cb9bf1dcf3f28e8">More...</a><br/></td></tr>
<tr class="separator:aebcf04410f900ba05cb9bf1dcf3f28e8"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a006b5cc50a4559c348b544b3288d29c2"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a006b5cc50a4559c348b544b3288d29c2">spcspxe</a> (const char ctypeS[9], double crvalS, double restfrq, double restwav, char *ptype, char *xtype, int *restreq, double *crvalX, double *dXdS, struct <a class="el" href="structwcserr.html">wcserr</a> **err)</td></tr>
<tr class="memdesc:a006b5cc50a4559c348b544b3288d29c2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spectral keyword analysis.  <a href="#a006b5cc50a4559c348b544b3288d29c2">More...</a><br/></td></tr>
<tr class="separator:a006b5cc50a4559c348b544b3288d29c2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:afeb4b475bc9b32a7e1047595a3ab67a1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#afeb4b475bc9b32a7e1047595a3ab67a1">spcxpse</a> (const char ctypeS[9], double crvalX, double restfrq, double restwav, char *ptype, char *xtype, int *restreq, double *crvalS, double *dSdX, struct <a class="el" href="structwcserr.html">wcserr</a> **err)</td></tr>
<tr class="memdesc:afeb4b475bc9b32a7e1047595a3ab67a1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spectral keyword synthesis.  <a href="#afeb4b475bc9b32a7e1047595a3ab67a1">More...</a><br/></td></tr>
<tr class="separator:afeb4b475bc9b32a7e1047595a3ab67a1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5a48828b6fef06053957a51406d31bae"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a5a48828b6fef06053957a51406d31bae">spctrne</a> (const char ctypeS1[9], double crvalS1, double cdeltS1, double restfrq, double restwav, char ctypeS2[9], double *crvalS2, double *cdeltS2, struct <a class="el" href="structwcserr.html">wcserr</a> **err)</td></tr>
<tr class="memdesc:a5a48828b6fef06053957a51406d31bae"><td class="mdescLeft">&#160;</td><td class="mdescRight">Spectral keyword translation.  <a href="#a5a48828b6fef06053957a51406d31bae">More...</a><br/></td></tr>
<tr class="separator:a5a48828b6fef06053957a51406d31bae"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ac9dc37c9fdf2db04e23e26b7a51c8e6a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#ac9dc37c9fdf2db04e23e26b7a51c8e6a">spcaips</a> (const char ctypeA[9], int velref, char ctype[9], char specsys[9])</td></tr>
<tr class="memdesc:ac9dc37c9fdf2db04e23e26b7a51c8e6a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Translate AIPS-convention spectral keywords.  <a href="#ac9dc37c9fdf2db04e23e26b7a51c8e6a">More...</a><br/></td></tr>
<tr class="separator:ac9dc37c9fdf2db04e23e26b7a51c8e6a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aafe9e11caad5ac050e5479041c250a32"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#aafe9e11caad5ac050e5479041c250a32">spctyp</a> (const char ctype[9], char stype[], char scode[], char sname[], char units[], char *ptype, char *xtype, int *restreq)</td></tr>
<tr class="separator:aafe9e11caad5ac050e5479041c250a32"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a6bbde2603e62b96e09576e77ed3446c7"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a6bbde2603e62b96e09576e77ed3446c7">spcspx</a> (const char ctypeS[9], double crvalS, double restfrq, double restwav, char *ptype, char *xtype, int *restreq, double *crvalX, double *dXdS)</td></tr>
<tr class="separator:a6bbde2603e62b96e09576e77ed3446c7"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa1a03a96e0417b3f5481eb3730386658"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#aa1a03a96e0417b3f5481eb3730386658">spcxps</a> (const char ctypeS[9], double crvalX, double restfrq, double restwav, char *ptype, char *xtype, int *restreq, double *crvalS, double *dSdX)</td></tr>
<tr class="separator:aa1a03a96e0417b3f5481eb3730386658"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a467e30a1edcf29d6a096f29f8710395b"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a467e30a1edcf29d6a096f29f8710395b">spctrn</a> (const char ctypeS1[9], double crvalS1, double cdeltS1, double restfrq, double restwav, char ctypeS2[9], double *crvalS2, double *cdeltS2)</td></tr>
<tr class="separator:a467e30a1edcf29d6a096f29f8710395b"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table><table class="memberdecls">
<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a>
Variables</h2></td></tr>
<tr class="memitem:a96978fec523018fd6898301a3452c166"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a> []</td></tr>
<tr class="memdesc:a96978fec523018fd6898301a3452c166"><td class="mdescLeft">&#160;</td><td class="mdescRight">Status return messages.  <a href="#a96978fec523018fd6898301a3452c166">More...</a><br/></td></tr>
<tr class="separator:a96978fec523018fd6898301a3452c166"><td class="memSeparator" colspan="2">&#160;</td></tr>
</table>
<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2>
<div class="textblock"><p>These routines implement the part of the FITS WCS standard that deals with spectral coordinates. They define methods to be used for computing spectral world coordinates from intermediate world coordinates (a linear transformation of image pixel coordinates), and vice versa. They are based on the spcprm struct which contains all information needed for the computations. The struct contains some members that must be set by the user, and others that are maintained by these routines, somewhat like a C++ class but with no encapsulation.</p>
<p>Routine <a class="el" href="spc_8h.html#a30c95d776068ef3cc959a50af9995fa9" title="Default constructor for the spcprm struct. ">spcini()</a> is provided to initialize the spcprm struct with default values, <a class="el" href="spc_8h.html#a2e04fc3ccd8aceebb4bfef56c5399a7d" title="Destructor for the spcprm struct. ">spcfree()</a> reclaims any memory that may have been allocated to store an error message, and <a class="el" href="spc_8h.html#a7304d0d00bcf9d2bad1f56ba6d8322ea" title="Print routine for the spcprm struct. ">spcprt()</a> prints its contents.</p>
<p>A setup routine, <a class="el" href="spc_8h.html#af2ee6399a65f2467841be79e4bbb41c3" title="Setup routine for the spcprm struct. ">spcset()</a>, computes intermediate values in the spcprm struct from parameters in it that were supplied by the user. The struct always needs to be set up by <a class="el" href="spc_8h.html#af2ee6399a65f2467841be79e4bbb41c3" title="Setup routine for the spcprm struct. ">spcset()</a> but it need not be called explicitly - refer to the explanation of <a class="el" href="structspcprm.html#afeeb5f4056f271fd37291a712a7b6791">spcprm::flag</a>.</p>
<p><a class="el" href="spc_8h.html#ae7fe86ae85a1a3bd19c2d78c3dba58f6" title="Transform to spectral coordinates. ">spcx2s()</a> and <a class="el" href="spc_8h.html#ae6e89217a5eca87a2101ae195da74347" title="Transform spectral coordinates. ">spcs2x()</a> implement the WCS spectral coordinate transformations. In fact, they are high level driver routines for the lower level spectral coordinate transformation routines described in <a class="el" href="spx_8h.html">spx.h</a>.</p>
<p>A number of routines are provided to aid in analysing or synthesising sets of FITS spectral axis keywords:</p>
<ul>
<li>
<p class="startli"><a class="el" href="spc_8h.html#aebcf04410f900ba05cb9bf1dcf3f28e8" title="Spectral CTYPEia keyword analysis. ">spctype()</a> checks a spectral <code><b>CTYPE</b>ia</code> keyword for validity and returns information derived from it.</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">Spectral keyword analysis routine <a class="el" href="spc_8h.html#a006b5cc50a4559c348b544b3288d29c2" title="Spectral keyword analysis. ">spcspxe()</a> computes the values of the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variables for the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type variables supplied.</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">Spectral keyword synthesis routine, <a class="el" href="spc_8h.html#afeb4b475bc9b32a7e1047595a3ab67a1" title="Spectral keyword synthesis. ">spcxpse()</a>, computes the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type variables for the <img class="formulaInl" alt="$X$" src="form_10.png"/>-types supplied.</p>
<p class="endli"></p>
</li>
<li>
<p class="startli">Given a set of spectral keywords, a translation routine, <a class="el" href="spc_8h.html#a5a48828b6fef06053957a51406d31bae" title="Spectral keyword translation. ">spctrne()</a>, produces the corresponding set for the specified spectral <code><b>CTYPE</b>ia</code>.</p>
<p class="endli"></p>
</li>
<li>
<a class="el" href="spc_8h.html#ac9dc37c9fdf2db04e23e26b7a51c8e6a" title="Translate AIPS-convention spectral keywords. ">spcaips()</a> translates AIPS-convention spectral <code><b>CTYPE</b>ia</code> and <code><b>VELREF</b></code> keyvalues. </li>
</ul>
<p><b>Spectral variable types - <img class="formulaInl" alt="$S$" src="form_32.png"/>, <img class="formulaInl" alt="$P$" src="form_33.png"/>, and <img class="formulaInl" alt="$X$" src="form_10.png"/>:</b> <br/>
 A few words of explanation are necessary regarding spectral variable types in FITS.</p>
<p>Every FITS spectral axis has three associated spectral variables:</p>
<p><img class="formulaInl" alt="$S$" src="form_32.png"/>-type: the spectral variable in which coordinates are to be expressed. Each <img class="formulaInl" alt="$S$" src="form_32.png"/>-type is encoded as four characters and is linearly related to one of four basic types as follows:</p>
<p>F: frequency '<code><b>FREQ</b></code>': frequency '<code><b>AFRQ</b></code>': angular frequency '<code><b>ENER</b></code>': photon energy '<code><b>WAVN</b></code>': wave number '<code><b>VRAD</b></code>': radio velocity</p>
<p>W: wavelength in vacuo '<code><b>WAVE</b></code>': wavelength '<code><b>VOPT</b></code>': optical velocity '<code><b>ZOPT</b></code>': redshift</p>
<p>A: wavelength in air '<code><b>AWAV</b></code>': wavelength in air</p>
<p>V: velocity '<code><b>VELO</b></code>': relativistic velocity '<code><b>BETA</b></code>': relativistic beta factor</p>
<p>The <img class="formulaInl" alt="$S$" src="form_32.png"/>-type forms the first four characters of the <code><b>CTYPE</b>ia</code> keyvalue, and <code><b>CRVAL</b>ia</code> and <code><b>CDELT</b>ia</code> are expressed as <img class="formulaInl" alt="$S$" src="form_32.png"/>-type quantities so that they provide a first-order approximation to the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type variable at the reference point.</p>
<p>Note that '<code><b>AFRQ</b></code>', angular frequency, is additional to the variables defined in WCS Paper III.</p>
<p><img class="formulaInl" alt="$P$" src="form_33.png"/>-type: the basic spectral variable (F, W, A, or V) with which the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type variable is associated (see list above).</p>
<p>For non-grism axes, the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type is encoded as the eighth character of <code><b>CTYPE</b>ia</code>.</p>
<p><img class="formulaInl" alt="$X$" src="form_10.png"/>-type: the basic spectral variable (F, W, A, or V) for which the spectral axis is linear, grisms excluded (see below).</p>
<p>For non-grism axes, the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type is encoded as the sixth character of <code><b>CTYPE</b>ia</code>.</p>
<p>Grisms: Grism axes have normal <img class="formulaInl" alt="$S$" src="form_32.png"/>-, and <img class="formulaInl" alt="$P$" src="form_33.png"/>-types but the axis is linear, not in any spectral variable, but in a special "grism parameter". The <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable is either W or A for grisms in vacuo or air respectively, but is encoded as 'w' or 'a' to indicate that an additional transformation is required to convert to or from the grism parameter. The spectral algorithm code for grisms also has a special encoding in <code><b>CTYPE</b>ia</code>, either '<code><b>GRI</b></code>' (in vacuo) or '<code><b>GRA</b></code>' (in air).</p>
<p>In the algorithm chain, the non-linear transformation occurs between the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type and the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type variables; the transformation between <img class="formulaInl" alt="$P$" src="form_33.png"/>-type and <img class="formulaInl" alt="$S$" src="form_32.png"/>-type variables is always linear.</p>
<p>When the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type and <img class="formulaInl" alt="$X$" src="form_10.png"/>-type variables are the same, the spectral axis is linear in the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type variable and the second four characters of <code><b>CTYPE</b>ia</code> are blank. This can never happen for grism axes.</p>
<p>As an example, correlating radio spectrometers always produce spectra that are regularly gridded in frequency; a redshift scale on such a spectrum is non-linear. The required value of <code><b>CTYPE</b>ia</code> would be <code><b>'ZOPT-F2W'</b></code>, where the desired <img class="formulaInl" alt="$S$" src="form_32.png"/>-type is '<code><b>ZOPT</b></code>' (redshift), the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type is necessarily 'W' (wavelength), and the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type is 'F' (frequency) by the nature of the instrument.</p>
<p><b>Argument checking:</b> <br/>
 The input spectral values are only checked for values that would result in floating point exceptions. In particular, negative frequencies and wavelengths are allowed, as are velocities greater than the speed of light. The same is true for the spectral parameters - rest frequency and wavelength.</p>
<p><b>Accuracy:</b> <br/>
 No warranty is given for the accuracy of these routines (refer to the copyright notice); intending users must satisfy for themselves their adequacy for the intended purpose. However, closure effectively to within double precision rounding error was demonstrated by test routine tspc.c which accompanies this software. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="a4e195ae6c61da3608692a3c7f2395599"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define SPCLEN&#160;&#160;&#160;(sizeof(struct <a class="el" href="structspcprm.html">spcprm</a>)/sizeof(int))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the spcprm struct in <em>int</em> units, used by the Fortran wrappers. </p>

</div>
</div>
<a class="anchor" id="a4d66edc63bfc8a39adc6bac9e88c8e81"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define spcini_errmsg&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000019">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166" title="Status return messages. ">spc_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="ac39694faccdd56850677999d714cd14a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define spcprt_errmsg&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000020">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166" title="Status return messages. ">spc_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="a49807752ce4e223d4095cf6ad13bac0a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define spcset_errmsg&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000021">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166" title="Status return messages. ">spc_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="aab517aed3ee9f8d5a5ca1f990d310b61"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define spcx2s_errmsg&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000022">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166" title="Status return messages. ">spc_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="af0e4274b242fd41625b6ad4f4376b8da"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define spcs2x_errmsg&#160;&#160;&#160;<a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166">spc_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000023">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="spc_8h.html#a96978fec523018fd6898301a3452c166" title="Status return messages. ">spc_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="spc_8h.html#a51ba1ce5380fd2e7693c37554d18fc3b">spc_errmsg_enum</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<table class="fieldtable">
<tr><th colspan="2">Enumerator</th></tr><tr><td class="fieldname"><em><a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3bae000828492cbedc0502f757d8b892606"></a>SPCERR_NO_CHANGE</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3ba0b84f38d1e903eacda3122ce55bff741"></a>SPCERR_SUCCESS</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3ba7c5e0d09fac9f441e39f3cf28801961f"></a>SPCERR_NULL_POINTER</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3ba0653e60411a641a326492c65d257daa8"></a>SPCERR_BAD_SPEC_PARAMS</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3ba3ba9183c7c3dace15eef0606980fd615"></a>SPCERR_BAD_X</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a51ba1ce5380fd2e7693c37554d18fc3ba7e218c5bd52bd6a45d8ad66573653007"></a>SPCERR_BAD_SPEC</em>&nbsp;</td><td class="fielddoc">
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a30c95d776068ef3cc959a50af9995fa9"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcini </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structspcprm.html">spcprm</a> *&#160;</td>
          <td class="paramname"><em>spc</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcini</b>() sets all members of a spcprm struct to default values. It should be used to initialize every spcprm struct.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">spc</td><td>Spectral transformation parameters.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null spcprm pointer passed. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a2e04fc3ccd8aceebb4bfef56c5399a7d"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcfree </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structspcprm.html">spcprm</a> *&#160;</td>
          <td class="paramname"><em>spc</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcfree</b>() frees any memory that may have been allocated to store an error message in the spcprm struct.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">spc</td><td>Spectral transformation parameters.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null spcprm pointer passed. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a7304d0d00bcf9d2bad1f56ba6d8322ea"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcprt </td>
          <td>(</td>
          <td class="paramtype">const struct <a class="el" href="structspcprm.html">spcprm</a> *&#160;</td>
          <td class="paramname"><em>spc</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcprt</b>() prints the contents of a spcprm struct using <a class="el" href="wcsprintf_8h.html#a46950abaf5a27347da8160741f98f973" title="Print function used by WCSLIB diagnostic routines. ">wcsprintf()</a>. Mainly intended for diagnostic purposes.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">spc</td><td>Spectral transformation parameters.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null spcprm pointer passed. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="af2ee6399a65f2467841be79e4bbb41c3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcset </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structspcprm.html">spcprm</a> *&#160;</td>
          <td class="paramname"><em>spc</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcset</b>() sets up a spcprm struct according to information supplied within it.</p>
<p>Note that this routine need not be called directly; it will be invoked by <a class="el" href="spc_8h.html#ae7fe86ae85a1a3bd19c2d78c3dba58f6" title="Transform to spectral coordinates. ">spcx2s()</a> and <a class="el" href="spc_8h.html#ae6e89217a5eca87a2101ae195da74347" title="Transform spectral coordinates. ">spcs2x()</a> if <a class="el" href="structspcprm.html#afeeb5f4056f271fd37291a712a7b6791">spcprm::flag</a> is anything other than a predefined magic value.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">spc</td><td>Spectral transformation parameters.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null spcprm pointer passed.</li>
<li>2: Invalid spectral parameters.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structspcprm.html#a6d4124d4db8f7addcbfee99a8634522e">spcprm::err</a> if enabled, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ae7fe86ae85a1a3bd19c2d78c3dba58f6"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcx2s </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structspcprm.html">spcprm</a> *&#160;</td>
          <td class="paramname"><em>spc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sspec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>x</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>spec</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>stat</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcx2s</b>() transforms intermediate world coordinates to spectral coordinates.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">spc</td><td>Spectral transformation parameters.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nx</td><td>Vector length. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sx</td><td>Vector stride. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sspec</td><td>Vector stride. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">x</td><td>Intermediate world coordinates, in SI units.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">spec</td><td>Spectral coordinates, in SI units. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">stat</td><td>Status return value status for each vector element:<ul>
<li>0: Success.</li>
<li>1: Invalid value of x.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null spcprm pointer passed.</li>
<li>2: Invalid spectral parameters.</li>
<li>3: One or more of the x coordinates were invalid, as indicated by the stat vector.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structspcprm.html#a6d4124d4db8f7addcbfee99a8634522e">spcprm::err</a> if enabled, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="ae6e89217a5eca87a2101ae195da74347"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcs2x </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structspcprm.html">spcprm</a> *&#160;</td>
          <td class="paramname"><em>spc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nspec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sspec</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>sx</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>spec</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>x</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>stat</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcs2x</b>() transforms spectral world coordinates to intermediate world coordinates.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">spc</td><td>Spectral transformation parameters.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">nspec</td><td>Vector length. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sspec</td><td>Vector stride. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">sx</td><td>Vector stride. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">spec</td><td>Spectral coordinates, in SI units.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">x</td><td>Intermediate world coordinates, in SI units. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">stat</td><td>Status return value status for each vector element:<ul>
<li>0: Success.</li>
<li>1: Invalid value of spec.</li>
</ul>
</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null spcprm pointer passed.</li>
<li>2: Invalid spectral parameters.</li>
<li>4: One or more of the spec coordinates were invalid, as indicated by the stat vector.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structspcprm.html#a6d4124d4db8f7addcbfee99a8634522e">spcprm::err</a> if enabled, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. </dd></dl>

</div>
</div>
<a class="anchor" id="aebcf04410f900ba05cb9bf1dcf3f28e8"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spctype </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctype</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>stype</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>scode</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>sname</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>units</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>ptype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>xtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>restreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structwcserr.html">wcserr</a> **&#160;</td>
          <td class="paramname"><em>err</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spctype</b>() checks whether a <code><b>CTYPE</b>ia</code> keyvalue is a valid spectral axis type and if so returns information derived from it relating to the associated <img class="formulaInl" alt="$S$" src="form_32.png"/>-, <img class="formulaInl" alt="$P$" src="form_33.png"/>-, and <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variables (see explanation above).</p>
<p>The return arguments are guaranteed not be modified if <code><b>CTYPE</b>ia</code> is not a valid spectral type; zero-pointers may be specified for any that are not of interest.</p>
<p>A deprecated form of this function, <a class="el" href="spc_8h.html#aafe9e11caad5ac050e5479041c250a32">spctyp()</a>, lacks the wcserr** parameter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ctype</td><td>The <code><b>CTYPE</b>ia</code> keyvalue, (eight characters with null termination).</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">stype</td><td>The four-letter name of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable copied or translated from ctype. If a non-zero pointer is given, the array must accomodate a null- terminated string of length 5. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">scode</td><td>The three-letter spectral algorithm code copied or translated from ctype. Logarithmic ('<code><b>LOG</b></code>') and tabular ('<code><b>TAB</b></code>') codes are also recognized. If a non-zero pointer is given, the array must accomodate a null-terminated string of length 4. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">sname</td><td>Descriptive name of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable. If a non-zero pointer is given, the array must accomodate a null-terminated string of length 22. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">units</td><td>SI units of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable. If a non-zero pointer is given, the array must accomodate a null-terminated string of length 8. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ptype</td><td>Character code for the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type spectral variable derived from ctype, one of 'F', 'W', 'A', or 'V'. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">xtype</td><td>Character code for the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable derived from ctype, one of 'F', 'W', 'A', or 'V'. Also, 'w' and 'a' are synonymous to 'W' and 'A' for grisms in vacuo and air respectively. Set to 'L' or 'T' for logarithmic ('<code><b>LOG</b></code>') and tabular ('<code><b>TAB</b></code>') axes. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">restreq</td><td>Multivalued flag that indicates whether rest frequency or wavelength is required to compute spectral variables for this <code><b>CTYPE</b>ia</code>:<ul>
<li>0: Not required.</li>
<li>1: Required for the conversion between <img class="formulaInl" alt="$S$" src="form_32.png"/>- and <img class="formulaInl" alt="$P$" src="form_33.png"/>-types (e.g. <code><b>'ZOPT-F2W'</b></code>).</li>
<li>2: Required for the conversion between <img class="formulaInl" alt="$P$" src="form_33.png"/>- and <img class="formulaInl" alt="$X$" src="form_10.png"/>-types (e.g. <code><b>'BETA-W2V'</b></code>).</li>
<li>3: Required for the conversion between <img class="formulaInl" alt="$S$" src="form_32.png"/>- and <img class="formulaInl" alt="$P$" src="form_33.png"/>-types, and between <img class="formulaInl" alt="$P$" src="form_33.png"/>- and <img class="formulaInl" alt="$X$" src="form_10.png"/>-types, but not between <img class="formulaInl" alt="$S$" src="form_32.png"/>- and <img class="formulaInl" alt="$X$" src="form_10.png"/>-types (this applies only for <code><b>'VRAD-V2F'</b></code>, <code><b>'VOPT-V2W'</b></code>, and <code><b>'ZOPT-V2W'</b></code>).</li>
</ul>
Thus the rest frequency or wavelength is required for spectral coordinate computations (i.e. between <img class="formulaInl" alt="$S$" src="form_32.png"/>- and <img class="formulaInl" alt="$X$" src="form_10.png"/>-types) only if<div class="fragment"><div class="line">restreq%3 != 0 </div>
</div><!-- fragment -->. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">err</td><td>If enabled, for function return values &gt; 1, this struct will contain a detailed error message, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. May be NULL if an error message is not desired. Otherwise, the user is responsible for deleting the memory allocated for the wcserr struct.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>2: Invalid spectral parameters (not a spectral <code><b>CTYPE</b>ia</code>). </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a006b5cc50a4559c348b544b3288d29c2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcspxe </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeS</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>crvalS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restfrq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restwav</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>ptype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>xtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>restreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>crvalX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>dXdS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structwcserr.html">wcserr</a> **&#160;</td>
          <td class="paramname"><em>err</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcspxe</b>() analyses the <code><b>CTYPE</b>ia</code> and <code><b>CRVAL</b>ia</code> FITS spectral axis keyword values and returns information about the associated <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable.</p>
<p>A deprecated form of this function, <a class="el" href="spc_8h.html#a6bbde2603e62b96e09576e77ed3446c7">spcspx()</a>, lacks the wcserr** parameter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ctypeS</td><td>Spectral axis type, i.e. the <code><b>CTYPE</b>ia</code> keyvalue, (eight characters with null termination). For non-grism axes, the character code for the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type spectral variable in the algorithm code (i.e. the eighth character of <code><b>CTYPE</b>ia</code>) may be set to '?' (it will not be reset). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">crvalS</td><td>Value of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable at the reference point, i.e. the <code><b>CRVAL</b>ia</code> keyvalue, SI units. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">restfrq,restwav</td><td>Rest frequency [Hz] and rest wavelength in vacuo [m], only one of which need be given, the other should be set to zero.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ptype</td><td>Character code for the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type spectral variable derived from ctypeS, one of 'F', 'W', 'A', or 'V'. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">xtype</td><td>Character code for the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable derived from ctypeS, one of 'F', 'W', 'A', or 'V'. Also, 'w' and 'a' are synonymous to 'W' and 'A' for grisms in vacuo and air respectively; crvalX and dXdS (see below) will conform to these. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">restreq</td><td>Multivalued flag that indicates whether rest frequency or wavelength is required to compute spectral variables for this <code><b>CTYPE</b>ia</code>, as for <a class="el" href="spc_8h.html#aebcf04410f900ba05cb9bf1dcf3f28e8" title="Spectral CTYPEia keyword analysis. ">spctype()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">crvalX</td><td>Value of the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable at the reference point, SI units. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dXdS</td><td>The derivative, <img class="formulaInl" alt="$dX/dS$" src="form_34.png"/>, evaluated at the reference point, SI units. Multiply the <code><b>CDELT</b>ia</code> keyvalue by this to get the pixel spacing in the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral coordinate. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">err</td><td>If enabled, for function return values &gt; 1, this struct will contain a detailed error message, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. May be NULL if an error message is not desired. Otherwise, the user is responsible for deleting the memory allocated for the wcserr struct.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>2: Invalid spectral parameters. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="afeb4b475bc9b32a7e1047595a3ab67a1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcxpse </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeS</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>crvalX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restfrq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restwav</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>ptype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>xtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>restreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>crvalS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>dSdX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structwcserr.html">wcserr</a> **&#160;</td>
          <td class="paramname"><em>err</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcxpse</b>(), for the spectral axis type specified and the value provided for the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable at the reference point, deduces the value of the FITS spectral axis keyword <code><b>CRVAL</b>ia</code> and also the derivative <img class="formulaInl" alt="$dS/dX$" src="form_35.png"/> which may be used to compute <code><b>CDELT</b>ia</code>. See above for an explanation of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-, <img class="formulaInl" alt="$P$" src="form_33.png"/>-, and <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variables.</p>
<p>A deprecated form of this function, <a class="el" href="spc_8h.html#aa1a03a96e0417b3f5481eb3730386658">spcxps()</a>, lacks the wcserr** parameter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ctypeS</td><td>The required spectral axis type, i.e. the <code><b>CTYPE</b>ia</code> keyvalue, (eight characters with null termination). For non-grism axes, the character code for the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type spectral variable in the algorithm code (i.e. the eighth character of <code><b>CTYPE</b>ia</code>) may be set to '?' (it will not be reset). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">crvalX</td><td>Value of the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable at the reference point (N.B. NOT the <code><b>CRVAL</b>ia</code> keyvalue), SI units. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">restfrq,restwav</td><td>Rest frequency [Hz] and rest wavelength in vacuo [m], only one of which need be given, the other should be set to zero.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ptype</td><td>Character code for the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type spectral variable derived from ctypeS, one of 'F', 'W', 'A', or 'V'. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">xtype</td><td>Character code for the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral variable derived from ctypeS, one of 'F', 'W', 'A', or 'V'. Also, 'w' and 'a' are synonymous to 'W' and 'A' for grisms; crvalX and cdeltX must conform to these. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">restreq</td><td>Multivalued flag that indicates whether rest frequency or wavelength is required to compute spectral variables for this <code><b>CTYPE</b>ia</code>, as for <a class="el" href="spc_8h.html#aebcf04410f900ba05cb9bf1dcf3f28e8" title="Spectral CTYPEia keyword analysis. ">spctype()</a>. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">crvalS</td><td>Value of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable at the reference point (i.e. the appropriate <code><b>CRVAL</b>ia</code> keyvalue), SI units. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">dSdX</td><td>The derivative, <img class="formulaInl" alt="$dS/dX$" src="form_35.png"/>, evaluated at the reference point, SI units. Multiply this by the pixel spacing in the <img class="formulaInl" alt="$X$" src="form_10.png"/>-type spectral coordinate to get the <code><b>CDELT</b>ia</code> keyvalue. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">err</td><td>If enabled, for function return values &gt; 1, this struct will contain a detailed error message, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. May be NULL if an error message is not desired. Otherwise, the user is responsible for deleting the memory allocated for the wcserr struct.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>2: Invalid spectral parameters. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a5a48828b6fef06053957a51406d31bae"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spctrne </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeS1</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>crvalS1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>cdeltS1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restfrq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restwav</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>ctypeS2</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>crvalS2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>cdeltS2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structwcserr.html">wcserr</a> **&#160;</td>
          <td class="paramname"><em>err</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spctrne</b>() translates a set of FITS spectral axis keywords into the corresponding set for the specified spectral axis type. For example, a '<code><b>FREQ</b></code>' axis may be translated into <code><b>'ZOPT-F2W'</b></code> and vice versa.</p>
<p>A deprecated form of this function, <a class="el" href="spc_8h.html#a467e30a1edcf29d6a096f29f8710395b">spctrn()</a>, lacks the wcserr** parameter.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ctypeS1</td><td>Spectral axis type, i.e. the <code><b>CTYPE</b>ia</code> keyvalue, (eight characters with null termination). For non-grism axes, the character code for the <img class="formulaInl" alt="$P$" src="form_33.png"/>-type spectral variable in the algorithm code (i.e. the eighth character of <code><b>CTYPE</b>ia</code>) may be set to '?' (it will not be reset). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">crvalS1</td><td>Value of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable at the reference point, i.e. the <code><b>CRVAL</b>ia</code> keyvalue, SI units. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">cdeltS1</td><td>Increment of the <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable at the reference point, SI units. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">restfrq,restwav</td><td>Rest frequency [Hz] and rest wavelength in vacuo [m], only one of which need be given, the other should be set to zero. Neither are required if the translation is between wave-characteristic types, or between velocity-characteristic types. E.g., required for '<code><b>FREQ</b></code>' -&gt; <code><b>'ZOPT-F2W'</b></code>, but not required for <code><b>'VELO-F2V'</b></code> -&gt; <code><b>'ZOPT-F2W'</b></code>.</td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">ctypeS2</td><td>Required spectral axis type (eight characters with null termination). The first four characters are required to be given and are never modified. The remaining four, the algorithm code, are completely determined by, and must be consistent with, ctypeS1 and the first four characters of ctypeS2. A non-zero status value will be returned if they are inconsistent (see below). However, if the final three characters are specified as "???", or if just the eighth character is specified as '?', the correct algorithm code will be substituted (applies for grism axes as well as non-grism).</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">crvalS2</td><td>Value of the new <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable at the reference point, i.e. the new <code><b>CRVAL</b>ia</code> keyvalue, SI units. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">cdeltS2</td><td>Increment of the new <img class="formulaInl" alt="$S$" src="form_32.png"/>-type spectral variable at the reference point, i.e. the new <code><b>CDELT</b>ia</code> keyvalue, SI units. </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">err</td><td>If enabled, for function return values &gt; 1, this struct will contain a detailed error message, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. May be NULL if an error message is not desired. Otherwise, the user is responsible for deleting the memory allocated for the wcserr struct.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>2: Invalid spectral parameters.</li>
</ul>
A status value of 2 will be returned if restfrq or restwav are not specified when required, or if ctypeS1 or ctypeS2 are self-inconsistent, or have different spectral <img class="formulaInl" alt="$X$" src="form_10.png"/>-type variables. </dd></dl>

</div>
</div>
<a class="anchor" id="ac9dc37c9fdf2db04e23e26b7a51c8e6a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcaips </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeA</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>velref</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>ctype</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>specsys</em>[9]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>spcaips</b>() translates AIPS-convention spectral <code><b>CTYPE</b>ia</code> and <code><b>VELREF</b></code> keyvalues.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">ctypeA</td><td><code><b>CTYPE</b>ia</code> keyvalue possibly containing an AIPS-convention spectral code (eight characters, need not be null-terminated). </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">velref</td><td>AIPS-convention <code><b>VELREF</b></code> code. It has the following integer values:<ul>
<li>1: LSR kinematic, originally described simply as "LSR" without distinction between the kinematic and dynamic definitions.</li>
<li>2: Barycentric, originally described as "HEL" meaning heliocentric.</li>
<li>3: Topocentric, originally described as "OBS" meaning geocentric but widely interpreted as topocentric.</li>
</ul>
AIPS++ extensions to <code><b>VELREF</b></code> are also recognized:<ul>
<li>4: LSR dynamic.</li>
<li>5: Geocentric.</li>
<li>6: Source rest frame.</li>
<li>7: Galactocentric.</li>
</ul>
For an AIPS '<code><b>VELO</b></code>' axis, a radio convention velocity (VRAD) is denoted by adding 256 to <code><b>VELREF</b></code>, otherwise an optical velocity (VOPT) is indicated (this is not applicable to '<code><b>FREQ</b></code>' or '<code><b>FELO</b></code>' axes). Setting velref to 0 or 256 chooses between optical and radio velocity without specifying a Doppler frame, provided that a frame is encoded in ctypeA. If not, i.e. for ctypeA = '<code><b>VELO</b></code>', ctype will be returned as '<code><b>VELO</b></code>'. <br/>
 <code><b>VELREF</b></code> takes precedence over <code><b>CTYPE</b>ia</code> in defining the Doppler frame, e.g. <div class="fragment"><div class="line">ctypeA = <span class="stringliteral">&#39;VELO-HEL&#39;</span></div>
<div class="line">velref = 1</div>
</div><!-- fragment --> <br/>
 returns ctype = '<code><b>VOPT</b></code>' with specsys set to 'LSRK'.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">ctype</td><td>Translated <code><b>CTYPE</b>ia</code> keyvalue, or a copy of ctypeA if no translation was performed (in which case any trailing blanks in ctypeA will be replaced with nulls). </td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">specsys</td><td>Doppler reference frame indicated by <code><b>VELREF</b></code> or else by <code><b>CTYPE</b>ia</code> with value corresponding to the SPECSYS keyvalue in the FITS WCS standard. May be returned blank if neither specifies a Doppler frame, e.g. ctypeA = '<code><b>FELO</b></code>' and velref%256 == 0.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>-1: No translation required (not an error).</li>
<li>0: Success.</li>
<li>2: Invalid value of <code><b>VELREF</b></code>. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="aafe9e11caad5ac050e5479041c250a32"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spctyp </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctype</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>stype</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>scode</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>sname</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>units</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>ptype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>xtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>restreq</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a6bbde2603e62b96e09576e77ed3446c7"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcspx </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeS</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>crvalS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restfrq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restwav</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>ptype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>xtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>restreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>crvalX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>dXdS</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="aa1a03a96e0417b3f5481eb3730386658"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spcxps </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeS</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>crvalX</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restfrq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restwav</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>ptype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char *&#160;</td>
          <td class="paramname"><em>xtype</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int *&#160;</td>
          <td class="paramname"><em>restreq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>crvalS</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>dSdX</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<a class="anchor" id="a467e30a1edcf29d6a096f29f8710395b"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int spctrn </td>
          <td>(</td>
          <td class="paramtype">const char&#160;</td>
          <td class="paramname"><em>ctypeS1</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>crvalS1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>cdeltS1</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restfrq</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>restwav</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">char&#160;</td>
          <td class="paramname"><em>ctypeS2</em>[9], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>crvalS2</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double *&#160;</td>
          <td class="paramname"><em>cdeltS2</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a96978fec523018fd6898301a3452c166"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char * spc_errmsg[]</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Error messages to match the status value returned from each function. </p>

</div>
</div>
</div><!-- contents -->
<!-- start footer part -->
<hr class="footer"/><address class="footer"><small>
Generated on Sat Jul 13 2013 20:00:26 for WCSLIB 4.18 by &#160;<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/>
</a> 1.8.4
</small></address>
</body>
</html>