Sophie

Sophie

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

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: lin.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">lin.h File Reference</div>  </div>
</div><!--header-->
<div class="contents">
<div class="textblock"><code>#include &quot;<a class="el" href="wcserr_8h_source.html">wcserr.h</a>&quot;</code><br/>
</div>
<p><a href="lin_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="structlinprm.html">linprm</a></td></tr>
<tr class="memdesc:"><td class="mdescLeft">&#160;</td><td class="mdescRight">Linear transformation parameters.  <a href="structlinprm.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:afce62bec193631f6e6b58c5b786cd660"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#afce62bec193631f6e6b58c5b786cd660">LINLEN</a>&#160;&#160;&#160;(sizeof(struct <a class="el" href="structlinprm.html">linprm</a>)/sizeof(int))</td></tr>
<tr class="memdesc:afce62bec193631f6e6b58c5b786cd660"><td class="mdescLeft">&#160;</td><td class="mdescRight">Size of the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct in <em>int</em> units.  <a href="#afce62bec193631f6e6b58c5b786cd660">More...</a><br/></td></tr>
<tr class="separator:afce62bec193631f6e6b58c5b786cd660"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:affec8a2c0650ebd2168d7772b2ecec19"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#affec8a2c0650ebd2168d7772b2ecec19">linini_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:affec8a2c0650ebd2168d7772b2ecec19"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#affec8a2c0650ebd2168d7772b2ecec19">More...</a><br/></td></tr>
<tr class="separator:affec8a2c0650ebd2168d7772b2ecec19"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a58c2822debf5b36daa18fe8711d724f2"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a58c2822debf5b36daa18fe8711d724f2">lincpy_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:a58c2822debf5b36daa18fe8711d724f2"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#a58c2822debf5b36daa18fe8711d724f2">More...</a><br/></td></tr>
<tr class="separator:a58c2822debf5b36daa18fe8711d724f2"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa6d3f59059c532b0217f570f2b4f50df"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#aa6d3f59059c532b0217f570f2b4f50df">linfree_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:aa6d3f59059c532b0217f570f2b4f50df"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#aa6d3f59059c532b0217f570f2b4f50df">More...</a><br/></td></tr>
<tr class="separator:aa6d3f59059c532b0217f570f2b4f50df"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a8970e09d61fde987211f8e64061e1fa1"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a8970e09d61fde987211f8e64061e1fa1">linprt_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:a8970e09d61fde987211f8e64061e1fa1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#a8970e09d61fde987211f8e64061e1fa1">More...</a><br/></td></tr>
<tr class="separator:a8970e09d61fde987211f8e64061e1fa1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aa78f202b20674909aab523018106546e"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#aa78f202b20674909aab523018106546e">linset_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:aa78f202b20674909aab523018106546e"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#aa78f202b20674909aab523018106546e">More...</a><br/></td></tr>
<tr class="separator:aa78f202b20674909aab523018106546e"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acb8c02645d7cc3d42e3db6ebf74de192"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#acb8c02645d7cc3d42e3db6ebf74de192">linp2x_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:acb8c02645d7cc3d42e3db6ebf74de192"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#acb8c02645d7cc3d42e3db6ebf74de192">More...</a><br/></td></tr>
<tr class="separator:acb8c02645d7cc3d42e3db6ebf74de192"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a7232df93295216e063c438671652c2b4"><td class="memItemLeft" align="right" valign="top">#define&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a7232df93295216e063c438671652c2b4">linx2p_errmsg</a>&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td></tr>
<tr class="memdesc:a7232df93295216e063c438671652c2b4"><td class="mdescLeft">&#160;</td><td class="mdescRight">Deprecated.  <a href="#a7232df93295216e063c438671652c2b4">More...</a><br/></td></tr>
<tr class="separator:a7232df93295216e063c438671652c2b4"><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:a6690044d47c6784a4cc0ccf6f52bfc1f"><td class="memItemLeft" align="right" valign="top">enum &#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a6690044d47c6784a4cc0ccf6f52bfc1f">lin_errmsg_enum</a> { <a class="el" href="lin_8h.html#a6690044d47c6784a4cc0ccf6f52bfc1fa2544660be2086b8225623e8a7b534dfb">LINERR_SUCCESS</a> = 0, 
<a class="el" href="lin_8h.html#a6690044d47c6784a4cc0ccf6f52bfc1fa84e4dcf5e518ba3dce985ef7c9687513">LINERR_NULL_POINTER</a> = 1, 
<a class="el" href="lin_8h.html#a6690044d47c6784a4cc0ccf6f52bfc1fa28004da63d882a7df754d49047ea7f2d">LINERR_MEMORY</a> = 2, 
<a class="el" href="lin_8h.html#a6690044d47c6784a4cc0ccf6f52bfc1fad2248fa36c9d85c91187179ae95207e8">LINERR_SINGULAR_MTX</a> = 3
 }</td></tr>
<tr class="separator:a6690044d47c6784a4cc0ccf6f52bfc1f"><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:a7ddea28768d99f01c6be1c71a4d8fe58"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a7ddea28768d99f01c6be1c71a4d8fe58">linini</a> (int alloc, int naxis, struct <a class="el" href="structlinprm.html">linprm</a> *lin)</td></tr>
<tr class="memdesc:a7ddea28768d99f01c6be1c71a4d8fe58"><td class="mdescLeft">&#160;</td><td class="mdescRight">Default constructor for the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct.  <a href="#a7ddea28768d99f01c6be1c71a4d8fe58">More...</a><br/></td></tr>
<tr class="separator:a7ddea28768d99f01c6be1c71a4d8fe58"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ab8fc0ef6b34eb3327b13a00de78232b1"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#ab8fc0ef6b34eb3327b13a00de78232b1">lincpy</a> (int alloc, const struct <a class="el" href="structlinprm.html">linprm</a> *linsrc, struct <a class="el" href="structlinprm.html">linprm</a> *lindst)</td></tr>
<tr class="memdesc:ab8fc0ef6b34eb3327b13a00de78232b1"><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy routine for the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct.  <a href="#ab8fc0ef6b34eb3327b13a00de78232b1">More...</a><br/></td></tr>
<tr class="separator:ab8fc0ef6b34eb3327b13a00de78232b1"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:aef9ead7c6ea6ab08f3ba3fc6a1c30303"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#aef9ead7c6ea6ab08f3ba3fc6a1c30303">linfree</a> (struct <a class="el" href="structlinprm.html">linprm</a> *lin)</td></tr>
<tr class="memdesc:aef9ead7c6ea6ab08f3ba3fc6a1c30303"><td class="mdescLeft">&#160;</td><td class="mdescRight">Destructor for the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct.  <a href="#aef9ead7c6ea6ab08f3ba3fc6a1c30303">More...</a><br/></td></tr>
<tr class="separator:aef9ead7c6ea6ab08f3ba3fc6a1c30303"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a946005b038f5c584691630b5d39369e3"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a946005b038f5c584691630b5d39369e3">linprt</a> (const struct <a class="el" href="structlinprm.html">linprm</a> *lin)</td></tr>
<tr class="memdesc:a946005b038f5c584691630b5d39369e3"><td class="mdescLeft">&#160;</td><td class="mdescRight">Print routine for the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct.  <a href="#a946005b038f5c584691630b5d39369e3">More...</a><br/></td></tr>
<tr class="separator:a946005b038f5c584691630b5d39369e3"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5c01c0991c8d0c4437581a7c1453b09a"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a">linset</a> (struct <a class="el" href="structlinprm.html">linprm</a> *lin)</td></tr>
<tr class="memdesc:a5c01c0991c8d0c4437581a7c1453b09a"><td class="mdescLeft">&#160;</td><td class="mdescRight">Setup routine for the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct.  <a href="#a5c01c0991c8d0c4437581a7c1453b09a">More...</a><br/></td></tr>
<tr class="separator:a5c01c0991c8d0c4437581a7c1453b09a"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:ae4947608476c198ad27759d1e562d655"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#ae4947608476c198ad27759d1e562d655">linp2x</a> (struct <a class="el" href="structlinprm.html">linprm</a> *lin, int ncoord, int nelem, const double pixcrd[], double imgcrd[])</td></tr>
<tr class="memdesc:ae4947608476c198ad27759d1e562d655"><td class="mdescLeft">&#160;</td><td class="mdescRight">Pixel-to-world linear transformation.  <a href="#ae4947608476c198ad27759d1e562d655">More...</a><br/></td></tr>
<tr class="separator:ae4947608476c198ad27759d1e562d655"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:a5490027e9699680dfefe370c28691243"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a5490027e9699680dfefe370c28691243">linx2p</a> (struct <a class="el" href="structlinprm.html">linprm</a> *lin, int ncoord, int nelem, const double imgcrd[], double pixcrd[])</td></tr>
<tr class="memdesc:a5490027e9699680dfefe370c28691243"><td class="mdescLeft">&#160;</td><td class="mdescRight">World-to-pixel linear transformation.  <a href="#a5490027e9699680dfefe370c28691243">More...</a><br/></td></tr>
<tr class="separator:a5490027e9699680dfefe370c28691243"><td class="memSeparator" colspan="2">&#160;</td></tr>
<tr class="memitem:acc7d26efba3ca08d36047253a9315dcc"><td class="memItemLeft" align="right" valign="top">int&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#acc7d26efba3ca08d36047253a9315dcc">matinv</a> (int n, const double mat[], double inv[])</td></tr>
<tr class="memdesc:acc7d26efba3ca08d36047253a9315dcc"><td class="mdescLeft">&#160;</td><td class="mdescRight">Matrix inversion.  <a href="#acc7d26efba3ca08d36047253a9315dcc">More...</a><br/></td></tr>
<tr class="separator:acc7d26efba3ca08d36047253a9315dcc"><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:a7bdf034bd750df1e518db9feeebf7a79"><td class="memItemLeft" align="right" valign="top">const char *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a> []</td></tr>
<tr class="memdesc:a7bdf034bd750df1e518db9feeebf7a79"><td class="mdescLeft">&#160;</td><td class="mdescRight">Status return messages.  <a href="#a7bdf034bd750df1e518db9feeebf7a79">More...</a><br/></td></tr>
<tr class="separator:a7bdf034bd750df1e518db9feeebf7a79"><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 apply the linear transformation defined by the FITS WCS standard. They are based on the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> 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>Three routines, <a class="el" href="lin_8h.html#a7ddea28768d99f01c6be1c71a4d8fe58" title="Default constructor for the linprm struct. ">linini()</a>, <a class="el" href="lin_8h.html#ab8fc0ef6b34eb3327b13a00de78232b1" title="Copy routine for the linprm struct. ">lincpy()</a>, and <a class="el" href="lin_8h.html#aef9ead7c6ea6ab08f3ba3fc6a1c30303" title="Destructor for the linprm struct. ">linfree()</a> are provided to manage the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct, and another, <a class="el" href="lin_8h.html#a946005b038f5c584691630b5d39369e3" title="Print routine for the linprm struct. ">linprt()</a>, prints its contents.</p>
<p>A setup routine, <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct. ">linset()</a>, computes intermediate values in the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct from parameters in it that were supplied by the user. The struct always needs to be set up by <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct. ">linset()</a> but need not be called explicitly - refer to the explanation of <a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">linprm::flag</a>.</p>
<p><a class="el" href="lin_8h.html#ae4947608476c198ad27759d1e562d655" title="Pixel-to-world linear transformation. ">linp2x()</a> and <a class="el" href="lin_8h.html#a5490027e9699680dfefe370c28691243" title="World-to-pixel linear transformation. ">linx2p()</a> implement the WCS linear transformations.</p>
<p>An auxiliary matrix inversion routine, <a class="el" href="lin_8h.html#acc7d26efba3ca08d36047253a9315dcc" title="Matrix inversion. ">matinv()</a>, is included. It uses LU-triangular factorization with scaled partial pivoting. </p>
</div><h2 class="groupheader">Macro Definition Documentation</h2>
<a class="anchor" id="afce62bec193631f6e6b58c5b786cd660"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define LINLEN&#160;&#160;&#160;(sizeof(struct <a class="el" href="structlinprm.html">linprm</a>)/sizeof(int))</td>
        </tr>
      </table>
</div><div class="memdoc">
<p>Size of the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct in <em>int</em> units, used by the Fortran wrappers. </p>

</div>
</div>
<a class="anchor" id="affec8a2c0650ebd2168d7772b2ecec19"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define linini_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000007">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="a58c2822debf5b36daa18fe8711d724f2"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define lincpy_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000008">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="aa6d3f59059c532b0217f570f2b4f50df"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define linfree_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000009">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="a8970e09d61fde987211f8e64061e1fa1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define linprt_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000010">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="aa78f202b20674909aab523018106546e"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define linset_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000011">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="acb8c02645d7cc3d42e3db6ebf74de192"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define linp2x_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000012">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<a class="anchor" id="a7232df93295216e063c438671652c2b4"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">#define linx2p_errmsg&#160;&#160;&#160;<a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79">lin_errmsg</a></td>
        </tr>
      </table>
</div><div class="memdoc">
<dl class="deprecated"><dt><b><a class="el" href="deprecated.html#_deprecated000013">Deprecated:</a></b></dt><dd>Added for backwards compatibility, use <a class="el" href="lin_8h.html#a7bdf034bd750df1e518db9feeebf7a79" title="Status return messages. ">lin_errmsg</a> directly now instead. </dd></dl>

</div>
</div>
<h2 class="groupheader">Enumeration Type Documentation</h2>
<a class="anchor" id="a6690044d47c6784a4cc0ccf6f52bfc1f"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">enum <a class="el" href="lin_8h.html#a6690044d47c6784a4cc0ccf6f52bfc1f">lin_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="a6690044d47c6784a4cc0ccf6f52bfc1fa2544660be2086b8225623e8a7b534dfb"></a>LINERR_SUCCESS</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a6690044d47c6784a4cc0ccf6f52bfc1fa84e4dcf5e518ba3dce985ef7c9687513"></a>LINERR_NULL_POINTER</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a6690044d47c6784a4cc0ccf6f52bfc1fa28004da63d882a7df754d49047ea7f2d"></a>LINERR_MEMORY</em>&nbsp;</td><td class="fielddoc">
</td></tr>
<tr><td class="fieldname"><em><a class="anchor" id="a6690044d47c6784a4cc0ccf6f52bfc1fad2248fa36c9d85c91187179ae95207e8"></a>LINERR_SINGULAR_MTX</em>&nbsp;</td><td class="fielddoc">
</td></tr>
</table>

</div>
</div>
<h2 class="groupheader">Function Documentation</h2>
<a class="anchor" id="a7ddea28768d99f01c6be1c71a4d8fe58"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linini </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>alloc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>naxis</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lin</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>linini</b>() allocates memory for arrays in a <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct and sets all members of the struct to default values.</p>
<p><b>PLEASE NOTE:</b> every <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct should be initialized by <b>linini</b>(), possibly repeatedly. On the first invokation, and only the first invokation, <a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">linprm::flag</a> must be set to -1 to initialize memory management, regardless of whether <b>linini</b>() will actually be used to allocate memory.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">alloc</td><td>If true, allocate memory unconditionally for arrays in the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct. <br/>
 If false, it is assumed that pointers to these arrays have been set by the user except if they are null pointers in which case memory will be allocated for them regardless. (In other words, setting alloc true saves having to initalize these pointers to zero.) </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">naxis</td><td>The number of world coordinate axes, used to determine array sizes.</td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">lin</td><td>Linear transformation parameters. Note that, in order to initialize memory management <a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">linprm::flag</a> should be set to -1 when lin is initialized for the first time (memory leaks may result if it had already been initialized).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed.</li>
<li>2: Memory allocation failed.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structlinprm.html#a2975830d4214bb6b35cb1ca922875057">linprm::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="ab8fc0ef6b34eb3327b13a00de78232b1"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int lincpy </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>alloc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>linsrc</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lindst</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>lincpy</b>() does a deep copy of one <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct to another, using <a class="el" href="lin_8h.html#a7ddea28768d99f01c6be1c71a4d8fe58" title="Default constructor for the linprm struct. ">linini()</a> to allocate memory for its arrays if required. Only the "information to be provided" part of the struct is copied; a call to <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct. ">linset()</a> is required to initialize the remainder.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">alloc</td><td>If true, allocate memory for the crpix, pc, and cdelt arrays in the destination. Otherwise, it is assumed that pointers to these arrays have been set by the user except if they are null pointers in which case memory will be allocated for them regardless. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">linsrc</td><td>Struct to copy from.</td></tr>
    <tr><td class="paramdir">[in,out]</td><td class="paramname">lindst</td><td>Struct to copy to. <a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">linprm::flag</a> should be set to -1 if lindst was not previously initialized (memory leaks may result if it was previously initialized).</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed.</li>
<li>2: Memory allocation failed.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structlinprm.html#a2975830d4214bb6b35cb1ca922875057">linprm::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="aef9ead7c6ea6ab08f3ba3fc6a1c30303"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linfree </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lin</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>linfree</b>() frees memory allocated for the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> arrays by <a class="el" href="lin_8h.html#a7ddea28768d99f01c6be1c71a4d8fe58" title="Default constructor for the linprm struct. ">linini()</a> and/or <a class="el" href="lin_8h.html#a5c01c0991c8d0c4437581a7c1453b09a" title="Setup routine for the linprm struct. ">linset()</a>. <a class="el" href="lin_8h.html#a7ddea28768d99f01c6be1c71a4d8fe58" title="Default constructor for the linprm struct. ">linini()</a> keeps a record of the memory it allocates and <b>linfree</b>() will only attempt to free this.</p>
<p><b>PLEASE NOTE:</b> <b>linfree</b>() must not be invoked on a <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct that was not initialized by <a class="el" href="lin_8h.html#a7ddea28768d99f01c6be1c71a4d8fe58" title="Default constructor for the linprm struct. ">linini()</a>.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">lin</td><td>Linear 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 <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a946005b038f5c584691630b5d39369e3"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linprt </td>
          <td>(</td>
          <td class="paramtype">const struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lin</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>linprt</b>() prints the contents of a <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> 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">lin</td><td>Linear 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 <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed. </li>
</ul>
</dd></dl>

</div>
</div>
<a class="anchor" id="a5c01c0991c8d0c4437581a7c1453b09a"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linset </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lin</em>)</td><td></td>
          <td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>linset</b>(), if necessary, allocates memory for the <a class="el" href="structlinprm.html#aeaaf26fd243da58fee173b075bed1de7">linprm::piximg</a> and <a class="el" href="structlinprm.html#a28a705f744a32cd05dd3aa86ca58998b">linprm::imgpix</a> arrays and sets up the <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> struct according to information supplied within it - refer to the explanation of <a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">linprm::flag</a>.</p>
<p>Note that this routine need not be called directly; it will be invoked by <a class="el" href="lin_8h.html#ae4947608476c198ad27759d1e562d655" title="Pixel-to-world linear transformation. ">linp2x()</a> and <a class="el" href="lin_8h.html#a5490027e9699680dfefe370c28691243" title="World-to-pixel linear transformation. ">linx2p()</a> if the <a class="el" href="structlinprm.html#a5bb0b2b2ce1f160a8a70f6437a893eea">linprm::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">lin</td><td>Linear 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 <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed.</li>
<li>2: Memory allocation failed.</li>
<li>3: <code><b>PC</b>i<b>_</b>ja</code> matrix is singular.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structlinprm.html#a2975830d4214bb6b35cb1ca922875057">linprm::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="ae4947608476c198ad27759d1e562d655"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linp2x </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ncoord</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nelem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>pixcrd</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>imgcrd</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>linp2x</b>() transforms pixel 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">lin</td><td>Linear transformation parameters.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ncoord,nelem</td><td>The number of coordinates, each of vector length nelem but containing lin.naxis coordinate elements. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">pixcrd</td><td>Array of pixel coordinates.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">imgcrd</td><td>Array of intermediate world coordinates.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>1: Null <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed.</li>
<li>2: Memory allocation failed.</li>
<li>3: <code><b>PC</b>i<b>_</b>ja</code> matrix is singular.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structlinprm.html#a2975830d4214bb6b35cb1ca922875057">linprm::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="a5490027e9699680dfefe370c28691243"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">int linx2p </td>
          <td>(</td>
          <td class="paramtype">struct <a class="el" href="structlinprm.html">linprm</a> *&#160;</td>
          <td class="paramname"><em>lin</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>ncoord</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>nelem</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>imgcrd</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>pixcrd</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>linx2p</b>() transforms intermediate world coordinates to pixel coordinates.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in,out]</td><td class="paramname">lin</td><td>Linear transformation parameters.</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">ncoord,nelem</td><td>The number of coordinates, each of vector length nelem but containing lin.naxis coordinate elements. </td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">imgcrd</td><td>Array of intermediate world coordinates.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">pixcrd</td><td>Array of pixel coordinates. Status return value:<ul>
<li>0: Success.</li>
<li>1: Null <a class="el" href="structlinprm.html" title="Linear transformation parameters. ">linprm</a> pointer passed.</li>
<li>2: Memory allocation failed.</li>
<li>3: <code><b>PC</b>i<b>_</b>ja</code> matrix is singular.</li>
</ul>
For returns &gt; 1, a detailed error message is set in <a class="el" href="structlinprm.html#a2975830d4214bb6b35cb1ca922875057">linprm::err</a> if enabled, see <a class="el" href="wcserr_8h.html#a1691b8bd184d40ca6fda255be078fa53" title="Enable/disable error messaging. ">wcserr_enable()</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acc7d26efba3ca08d36047253a9315dcc"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">matinv </td>
          <td>(</td>
          <td class="paramtype">int&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const double&#160;</td>
          <td class="paramname"><em>mat</em>[], </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">double&#160;</td>
          <td class="paramname"><em>inv</em>[]&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td></td>
        </tr>
      </table>
</div><div class="memdoc">
<p><b>matinv</b>() performs matrix inversion using LU-triangular factorization with scaled partial pivoting.</p>
<dl class="params"><dt>Parameters</dt><dd>
  <table class="params">
    <tr><td class="paramdir">[in]</td><td class="paramname">n</td><td>Order of the matrix ( <img class="formulaInl" alt="$n \times n$" src="form_12.png"/>).</td></tr>
    <tr><td class="paramdir">[in]</td><td class="paramname">mat</td><td>Matrix to be inverted, stored as mat[ <img class="formulaInl" alt="$i n + j$" src="form_13.png"/>] where <img class="formulaInl" alt="$i$" src="form_14.png"/> and <img class="formulaInl" alt="$j$" src="form_15.png"/> are the row and column indices respectively.</td></tr>
    <tr><td class="paramdir">[out]</td><td class="paramname">inv</td><td>Inverse of mat with the same storage convention.</td></tr>
  </table>
  </dd>
</dl>
<dl class="section return"><dt>Returns</dt><dd>Status return value:<ul>
<li>0: Success.</li>
<li>2: Memory allocation failed.</li>
<li>3: Singular matrix. </li>
</ul>
</dd></dl>

</div>
</div>
<h2 class="groupheader">Variable Documentation</h2>
<a class="anchor" id="a7bdf034bd750df1e518db9feeebf7a79"></a>
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">const char * lin_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>