Sophie

Sophie

distrib > Fedora > 15 > i386 > by-pkgid > c5653a35bb94fee65ffe21230992c863 > files > 274

linbox-doc-1.2.1-1.fc15.noarch.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"/>
<title>linbox: RingArchetype Class Reference</title>
<link href="tabs.css" rel="stylesheet" type="text/css"/>
<link href="doxygen.css" rel="stylesheet" type="text/css"/>
</head>
<body>
<!-- Generated by Doxygen 1.7.4 -->
<script type="text/javascript">
function hasClass(ele,cls) {
  return ele.className.match(new RegExp('(\\s|^)'+cls+'(\\s|$)'));
}

function addClass(ele,cls) {
  if (!this.hasClass(ele,cls)) ele.className += " "+cls;
}

function removeClass(ele,cls) {
  if (hasClass(ele,cls)) {
    var reg = new RegExp('(\\s|^)'+cls+'(\\s|$)');
    ele.className=ele.className.replace(reg,' ');
  }
}

function toggleVisibility(linkObj) {
 var base = linkObj.getAttribute('id');
 var summary = document.getElementById(base + '-summary');
 var content = document.getElementById(base + '-content');
 var trigger = document.getElementById(base + '-trigger');
 if ( hasClass(linkObj,'closed') ) {
   summary.style.display = 'none';
   content.style.display = 'block';
   trigger.src = 'open.png';
   removeClass(linkObj,'closed');
   addClass(linkObj,'opened');
 } else if ( hasClass(linkObj,'opened') ) {
   summary.style.display = 'block';
   content.style.display = 'none';
   trigger.src = 'closed.png';
   removeClass(linkObj,'opened');
   addClass(linkObj,'closed');
 }
 return false;
}
</script>
<div id="top">
<div id="titlearea">
<table cellspacing="0" cellpadding="0">
 <tbody>
 <tr style="height: 56px;">
  <td style="padding-left: 0.5em;">
   <div id="projectname">linbox</div>
  </td>
 </tr>
 </tbody>
</table>
</div>
  <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="modules.html"><span>Modules</span></a></li>
      <li><a href="namespaces.html"><span>Namespaces</span></a></li>
      <li class="current"><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="files.html"><span>Files</span></a></li>
      <li><a href="dirs.html"><span>Directories</span></a></li>
      <li><a href="examples.html"><span>Examples</span></a></li>
    </ul>
  </div>
  <div id="navrow2" class="tabs2">
    <ul class="tablist">
      <li><a href="annotated.html"><span>Data&#160;Structures</span></a></li>
      <li><a href="hierarchy.html"><span>Class&#160;Hierarchy</span></a></li>
      <li><a href="functions.html"><span>Data&#160;Fields</span></a></li>
    </ul>
  </div>
  <div id="nav-path" class="navpath">
    <ul>
      <li class="navelem"><a class="el" href="namespace_lin_box.html">LinBox</a>      </li>
      <li class="navelem"><a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a>      </li>
    </ul>
  </div>
</div>
<div class="header">
  <div class="summary">
<a href="#pro-methods">Protected Member Functions</a> &#124;
<a href="#pro-attribs">Protected Attributes</a>  </div>
  <div class="headertitle">
<div class="title">RingArchetype Class Reference<div class="ingroups"><a class="el" href="group__ring.html">ring</a></div></div>  </div>
</div>
<div class="contents">
<!-- doxytag: class="LinBox::RingArchetype" --><!-- doxytag: inherits="LinBox::FieldArchetype" -->
<p>specification and archetypic instance for the ring interfaceThe <a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> and its encapsulated element class contain pointers to the <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> and its encapsulated ring element, respectively.  
 <a href="class_lin_box_1_1_ring_archetype.html#details">More...</a></p>

<p><code>#include &lt;archetype.h&gt;</code></p>
<div id="dynsection-0" onclick="return toggleVisibility(this)" class="dynheader closed" style="cursor:pointer;">
  <img id="dynsection-0-trigger" src="closed.png"/> Inheritance diagram for RingArchetype:</div>
<div id="dynsection-0-summary" class="dynsummary" style="display:block;">
</div>
<div id="dynsection-0-content" class="dyncontent" style="display:none;">
 <div class="center">
  <img src="class_lin_box_1_1_ring_archetype.png" usemap="#RingArchetype_map" alt=""/>
  <map id="RingArchetype_map" name="RingArchetype_map">
<area href="class_lin_box_1_1_field_archetype.html" title="field specification and archetypical instance." alt="FieldArchetype" shape="rect" coords="0,56,99,80"/>
<area href="class_lin_box_1_1_field_interface.html" title="This field base class exists solely to aid documentation organization." alt="FieldInterface" shape="rect" coords="0,0,99,24"/>
</map>
 </div></div>
<table class="memberdecls">
<tr><td colspan="2"><h2><a name="pub-types"></a>
Public Types</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Common Object Interface for a LinBox Ring.</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>These methods are required of all <a class="el" href="namespace_lin_box.html">LinBox</a> rings. </p>
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="a15964c612efdb52ea8d07782f70bc5a1"></a><!-- doxytag: member="LinBox::RingArchetype::Element" ref="a15964c612efdb52ea8d07782f70bc5a1" args="" -->
typedef <a class="el" href="class_lin_box_1_1_element_archetype.html">FieldArchetype::Element</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#a15964c612efdb52ea8d07782f70bc5a1">Element</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">element type. <br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="abdccd0193856ce0bebb4a3aa916169cb"></a><!-- doxytag: member="LinBox::RingArchetype::RandIter" ref="abdccd0193856ce0bebb4a3aa916169cb" args="" -->
typedef <a class="el" href="class_lin_box_1_1_rand_iter_archetype.html">FieldArchetype::RandIter</a>&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#abdccd0193856ce0bebb4a3aa916169cb">RandIter</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Random iterator generator type. <br/></td></tr>
<tr><td colspan="2"><h2><a name="pub-methods"></a>
Public Member Functions</h2></td></tr>
<tr><td colspan="2"><div class="groupHeader">Object Management</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#a533b9f69ace95f0284e996ffa2b727ff">RingArchetype</a> (const <a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> &amp;F)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Copy constructor.  <a href="#a533b9f69ace95f0284e996ffa2b727ff"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#a0b93e65d03a783646c50d5738763898f">isUnit</a> (const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Invertibility test.  <a href="#a0b93e65d03a783646c50d5738763898f"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#ad10c45375b1283ea28c0985a782ce2da">isZeroDivisor</a> (const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Divisibility of zero test.  <a href="#ad10c45375b1283ea28c0985a782ce2da"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#adbfb0bb1920c970edaabaff8e5681414">RingArchetype</a> (<a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> *ring_ptr, <a class="el" href="class_lin_box_1_1_element_abstract.html">ElementAbstract</a> *elem_ptr, <a class="el" href="class_lin_box_1_1_rand_iter_abstract.html">RandIterAbstract</a> *randIter_ptr=0)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#adbfb0bb1920c970edaabaff8e5681414"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Ring_qcq &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_ring_archetype.html#a6cb0a428018d974d05b205464a2b99a7">RingArchetype</a> (Ring_qcq *f)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Constructor.  <a href="#a6cb0a428018d974d05b205464a2b99a7"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Object Management</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#aae5203f2b54f2c34ff96409dcd395075">init</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;n=0) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Initialization of field element from an integer.  <a href="#aae5203f2b54f2c34ff96409dcd395075"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#acabae2d13a769c7ba3bdd83dbfe893e0">convert</a> (<a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;n, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y=0) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Conversion of field element to an integer.  <a href="#acabae2d13a769c7ba3bdd83dbfe893e0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a7ed3d5d8b4d9f1ab407365c020b18c58">assign</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Assignment of one field element to another.  <a href="#a7ed3d5d8b4d9f1ab407365c020b18c58"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#ade46ce0a344fcc718625a2296a8104ab">cardinality</a> (<a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;c) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Cardinality.  <a href="#ade46ce0a344fcc718625a2296a8104ab"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#aea4d4c3f059080408c3a6344cf9fff10">characteristic</a> (<a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;c) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Characteristic.  <a href="#aea4d4c3f059080408c3a6344cf9fff10"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Arithmetic Operations</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>x &lt;- y op z; x &lt;- op y These operations require all elements, including x, to be initialized before the operation is called.</p>
<p>Uninitialized field elements will give undefined results. </p>
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a0763bd76c2ed93bc54973d632b98ec90">areEqual</a> (const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Equality of two elements.  <a href="#a0763bd76c2ed93bc54973d632b98ec90"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#aadf4e83f1ac414b0caa1bef2154dabdb">add</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;z) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Addition, x &lt;-- y + z.  <a href="#aadf4e83f1ac414b0caa1bef2154dabdb"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a2f2a41d18bd65f48cb5fb894fcd3b51b">sub</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;z) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Subtraction, x &lt;-- y - z.  <a href="#a2f2a41d18bd65f48cb5fb894fcd3b51b"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#adf251fca0ae6bc767b0e9c5f2d6081f7">mul</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;z) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiplication, x &lt;-- y * z.  <a href="#adf251fca0ae6bc767b0e9c5f2d6081f7"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a4d8f0ac0be4b8a5a074f441d74bf4276">div</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;z) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Division, x &lt;-- y / z.  <a href="#a4d8f0ac0be4b8a5a074f441d74bf4276"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a608fc0675ac7788b016f686fa3a6ec7e">neg</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Additive <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a> (Negation), x &lt;-- - y.  <a href="#a608fc0675ac7788b016f686fa3a6ec7e"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a9b2e67d87131ae67539834cd9cd3fa7a">inv</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Multiplicative <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a>, x &lt;-- 1 / y.  <a href="#a9b2e67d87131ae67539834cd9cd3fa7a"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a09806701a7acb018cd70b179635720da">axpy</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;r, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;a, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Field element AXPY, r &lt;-- a * x + y.  <a href="#a09806701a7acb018cd70b179635720da"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Predicates</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a0865272ef30f366f2a7a06323ee7cc22">isZero</a> (const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Zero equality.  <a href="#a0865272ef30f366f2a7a06323ee7cc22"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">bool&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#ab37695d9e0fb5b0064c85e8449ed596b">isOne</a> (const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">One equality.  <a href="#ab37695d9e0fb5b0064c85e8449ed596b"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Inplace Arithmetic Operations</div></td></tr>
<tr><td colspan="2"><div class="groupText"><p>x &lt;- x op y; x &lt;- op x These operations require all elements, including x, to be initialized before the operation is called.</p>
<p>Uninitialized field elements will give undefined results. </p>
</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a25ec1b0d3d2d8da69636a121ef781a55">addin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace Addition.  <a href="#a25ec1b0d3d2d8da69636a121ef781a55"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#aa14037ab7a2e80c0e663a760acbaff15">subin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace Subtraction.  <a href="#aa14037ab7a2e80c0e663a760acbaff15"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a6e17c2a1321787d89a51b9f0eee0f408">mulin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace Multiplication.  <a href="#a6e17c2a1321787d89a51b9f0eee0f408"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#ac5966c66651795d1636a032e8bcd28ef">divin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;y) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace Division.  <a href="#ac5966c66651795d1636a032e8bcd28ef"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a540bdfc0ce896b62d1a13247a2acfce2">negin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace Additive <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a> (Inplace Negation).  <a href="#a540bdfc0ce896b62d1a13247a2acfce2"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#acf833d5877bb610fef71aac14074d5ce">invin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace Multiplicative <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a>.  <a href="#acf833d5877bb610fef71aac14074d5ce"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a2a6378ec17b22af66cfa5e6901461cd1">axpyin</a> (<a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;r, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;a, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Inplace AXPY.  <a href="#a2a6378ec17b22af66cfa5e6901461cd1"></a><br/></td></tr>
<tr><td colspan="2"><div class="groupHeader">Input/Output Operations</div></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#acd22def76f55c19076bb6c86104beaf0">write</a> (std::ostream &amp;os) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print field.  <a href="#acd22def76f55c19076bb6c86104beaf0"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::ostream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a332d58769d8dc6ba08d307db48386588">write</a> (std::ostream &amp;os, const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Print field element.  <a href="#a332d58769d8dc6ba08d307db48386588"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a7f1e7ece6c12a9a3feb091f90c7c9ac1">read</a> (std::istream &amp;is)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read field.  <a href="#a7f1e7ece6c12a9a3feb091f90c7c9ac1"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top">std::istream &amp;&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a054db1ecf60ae64391b553dfc6316205">read</a> (std::istream &amp;is, <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;x) const </td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Read field element.  <a href="#a054db1ecf60ae64391b553dfc6316205"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-methods"></a>
Protected Member Functions</h2></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Field_qcq &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a9122233fbf5c2f3e4fd7b1237e38fb1c">constructor</a> (<a class="el" href="class_lin_box_1_1_field_abstract.html">FieldAbstract</a> *trait, Field_qcq *field_ptr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Template method for constructing archetype from a derived class of <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a>.  <a href="#a9122233fbf5c2f3e4fd7b1237e38fb1c"></a><br/></td></tr>
<tr><td class="memTemplParams" colspan="2">template&lt;class Field_qcq &gt; </td></tr>
<tr><td class="memTemplItemLeft" align="right" valign="top">void&#160;</td><td class="memTemplItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a28d34cf83a537ab108861ac780009ed8">constructor</a> (void *trait, Field_qcq *field_ptr)</td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Template method for constructing archetype from a class not derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a>.  <a href="#a28d34cf83a537ab108861ac780009ed8"></a><br/></td></tr>
<tr><td colspan="2"><h2><a name="pro-attribs"></a>
Protected Attributes</h2></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_field_abstract.html">FieldAbstract</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a615b9bc7364f903ad92d77a0626bdf23">_field_ptr</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> object.  <a href="#a615b9bc7364f903ad92d77a0626bdf23"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_element_abstract.html">ElementAbstract</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a2df3782f6453615519872d14aa10cecf">_elem_ptr</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to <a class="el" href="class_lin_box_1_1_element_abstract.html" title="Abstract element base class, a technicality.">ElementAbstract</a> object.  <a href="#a2df3782f6453615519872d14aa10cecf"></a><br/></td></tr>
<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="class_lin_box_1_1_rand_iter_abstract.html">RandIterAbstract</a> *&#160;</td><td class="memItemRight" valign="bottom"><a class="el" href="class_lin_box_1_1_field_archetype.html#a418143fcded940a0977a41a8f33c727b">_randIter_ptr</a></td></tr>
<tr><td class="mdescLeft">&#160;</td><td class="mdescRight">Pointer to <a class="el" href="class_lin_box_1_1_rand_iter_abstract.html" title="Random field element generator.">RandIterAbstract</a> object.  <a href="#a418143fcded940a0977a41a8f33c727b"></a><br/></td></tr>
</table>
<hr/><a name="details" id="details"></a><h2>Detailed Description</h2>
<div class="textblock"><p>specification and archetypic instance for the ring interface</p>
<p>The <a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> and its encapsulated element class contain pointers to the <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> and its encapsulated ring element, respectively. </p>
<p><a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> then uses virtual member functions to define operations on its encapsulated ring element. This ring element has no knowledge of the ring properties being used on it which means the ring object must supply these operations.</p>
<p>It does not contain elements zero and one because they can be created whenever necessary, although it might be beneficial from an efficiency stand point to include them. However, because of archetype use three, the elements themselves cannot be contained, but rather pointers to them. </p>
</div><hr/><h2>Constructor &amp; Destructor Documentation</h2>
<a class="anchor" id="a533b9f69ace95f0284e996ffa2b727ff"></a><!-- doxytag: member="LinBox::RingArchetype::RingArchetype" ref="a533b9f69ace95f0284e996ffa2b727ff" args="(const RingArchetype &amp;F)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> &amp;&#160;</td>
          <td class="paramname"><em>F</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Copy constructor. </p>
<p>Constructs <a class="el" href="class_lin_box_1_1_ring_archetype.html" title="specification and archetypic instance for the ring interfaceThe RingArchetype and its encapsulated el...">RingArchetype</a> object by copying the ring. This is required to allow ring objects to be passed by value into functions.</p>
<p>In this implementation, this means copying the ring to which <code>F._ring_ptr</code> points, the element to which <code>F._elem_ptr</code> points, and the random element generator to which <code>F._randIter_ptr</code> points.</p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">F</td><td><a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> object. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="adbfb0bb1920c970edaabaff8e5681414"></a><!-- doxytag: member="LinBox::RingArchetype::RingArchetype" ref="adbfb0bb1920c970edaabaff8e5681414" args="(RingAbstract *ring_ptr, ElementAbstract *elem_ptr, RandIterAbstract *randIter_ptr=0)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> *&#160;</td>
          <td class="paramname"><em>ring_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_abstract.html">ElementAbstract</a> *&#160;</td>
          <td class="paramname"><em>elem_ptr</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_rand_iter_abstract.html">RandIterAbstract</a> *&#160;</td>
          <td class="paramname"><em>randIter_ptr</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>
<p>Constructs ring from pointer to <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> and its encapsulated element and random element generator. Not part of the interface. Creates new copies of ring, element, and random iterator generator objects in dynamic memory. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">ring_ptr</td><td>pointer to <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a>. </td></tr>
    <tr><td class="paramname">elem_ptr</td><td>pointer to <a class="el" href="class_lin_box_1_1_element_abstract.html">ElementAbstract</a>, which is the encapsulated element of <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a>. </td></tr>
    <tr><td class="paramname">randIter_ptr</td><td>pointer to <a class="el" href="class_lin_box_1_1_rand_iter_abstract.html">RandIterAbstract</a>, which is the encapsulated random iterator generator of <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a>. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6cb0a428018d974d05b205464a2b99a7"></a><!-- doxytag: member="LinBox::RingArchetype::RingArchetype" ref="a6cb0a428018d974d05b205464a2b99a7" args="(Ring_qcq *f)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_ring_archetype.html">RingArchetype</a> </td>
          <td>(</td>
          <td class="paramtype">Ring_qcq *&#160;</td>
          <td class="paramname"><em>f</em></td><td>)</td>
          <td><code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Constructor. </p>
<p>Constructs ring from ANYTHING matching the interface using the enveloppe as a <a class="el" href="class_lin_box_1_1_ring_abstract.html">RingAbstract</a> and its encapsulated element and random element generator if needed. </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">f</td><td></td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Member Function Documentation</h2>
<a class="anchor" id="a0b93e65d03a783646c50d5738763898f"></a><!-- doxytag: member="LinBox::RingArchetype::isUnit" ref="a0b93e65d03a783646c50d5738763898f" args="(const Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isUnit </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Invertibility test. </p>
<p>Test if ring element is invertible. This function assumes the ring element has already been constructed and initialized. In this implementation, this means the <code>_elem_ptr</code> of x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean true if equals zero, false if not. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>ring element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ad10c45375b1283ea28c0985a782ce2da"></a><!-- doxytag: member="LinBox::RingArchetype::isZeroDivisor" ref="ad10c45375b1283ea28c0985a782ce2da" args="(const Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isZeroDivisor </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const<code> [inline]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Divisibility of zero test. </p>
<p>Test if ring element is a zero divisor. This function assumes the ring element has already been constructed and initialized.</p>
<p>In this implementation, this means the <code>_elem_ptr</code> of x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean true if divides zero, false if not. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>ring element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aae5203f2b54f2c34ff96409dcd395075"></a><!-- doxytag: member="LinBox::RingArchetype::init" ref="aae5203f2b54f2c34ff96409dcd395075" args="(Element &amp;x, const integer &amp;n=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; init </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td>
          <td class="paramname"><em>n</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Initialization of field element from an integer. </p>
<p>x becomes the image of n under the natural map from the integers to the prime subfield. It is the result obtained from adding n 1's in the field.</p>
<p>This function assumes the output field element x has already been constructed, but that it is not necessarily already initialized. In this archetype implementation, this means the <code> _elem_ptr</code> of x exists, but that it may be the null pointer.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>output field element. </td></tr>
    <tr><td class="paramname">n</td><td>input integer. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acabae2d13a769c7ba3bdd83dbfe893e0"></a><!-- doxytag: member="LinBox::RingArchetype::convert" ref="acabae2d13a769c7ba3bdd83dbfe893e0" args="(integer &amp;n, const Element &amp;y=0) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a>&amp; convert </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td>
          <td class="paramname"><em>n</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em> = <code>0</code>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Conversion of field element to an integer. </p>
<p>The meaning of conversion is specific to each field class. However, if x is in the prime subfield, the integer n returned is such that an init from n will reproduce x. Most often, <img class="formulaInl" alt="$0 \leq n < \mathrm{characteristic}$" src="form_47.png"/>.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to n. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">n</td><td>output integer. </td></tr>
    <tr><td class="paramname">y</td><td>input field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7ed3d5d8b4d9f1ab407365c020b18c58"></a><!-- doxytag: member="LinBox::RingArchetype::assign" ref="a7ed3d5d8b4d9f1ab407365c020b18c58" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; assign </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Assignment of one field element to another. </p>
<p>This function assumes both field elements have already been constructed and initialized.</p>
<p>In this archetype implementation, this means for both x and y, <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>destination field element. </td></tr>
    <tr><td class="paramname">y</td><td>source field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ade46ce0a344fcc718625a2296a8104ab"></a><!-- doxytag: member="LinBox::RingArchetype::cardinality" ref="ade46ce0a344fcc718625a2296a8104ab" args="(integer &amp;c) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a>&amp; cardinality </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td>
          <td class="paramname"><em>c</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Cardinality. </p>
<p>Return c, integer representing cardinality of the field. c becomes a non-negative integer for all fields with finite cardinality, and -1 to signify a field of infinite cardinality. </p>

</div>
</div>
<a class="anchor" id="aea4d4c3f059080408c3a6344cf9fff10"></a><!-- doxytag: member="LinBox::RingArchetype::characteristic" ref="aea4d4c3f059080408c3a6344cf9fff10" args="(integer &amp;c) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a>&amp; characteristic </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="group__integers.html#gad62eceb96963b157a2357aba991f6d6e">integer</a> &amp;&#160;</td>
          <td class="paramname"><em>c</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Characteristic. </p>
<p>Return c, integer representing characteristic of the field (the least positive n such that the sum of n copies of x is 0 for all field elements x). c becomes a positive integer for all fields with finite characteristic, and 0 to signify a field of infinite characteristic. </p>

</div>
</div>
<a class="anchor" id="a0763bd76c2ed93bc54973d632b98ec90"></a><!-- doxytag: member="LinBox::RingArchetype::areEqual" ref="a0763bd76c2ed93bc54973d632b98ec90" args="(const Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool areEqual </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Equality of two elements. </p>
<p>This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y, <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean true if equal, false if not. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element </td></tr>
    <tr><td class="paramname">y</td><td>field element </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aadf4e83f1ac414b0caa1bef2154dabdb"></a><!-- doxytag: member="LinBox::RingArchetype::add" ref="aadf4e83f1ac414b0caa1bef2154dabdb" args="(Element &amp;x, const Element &amp;y, const Element &amp;z) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; add </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Addition, x &lt;-- y + z. </p>
<p>This function assumes all the field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for x, y, and z, <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>

</div>
</div>
<a class="anchor" id="a2f2a41d18bd65f48cb5fb894fcd3b51b"></a><!-- doxytag: member="LinBox::RingArchetype::sub" ref="a2f2a41d18bd65f48cb5fb894fcd3b51b" args="(Element &amp;x, const Element &amp;y, const Element &amp;z) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; sub </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Subtraction, x &lt;-- y - z. </p>
<p>This function assumes all the field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for x, y, and z, <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>

</div>
</div>
<a class="anchor" id="adf251fca0ae6bc767b0e9c5f2d6081f7"></a><!-- doxytag: member="LinBox::RingArchetype::mul" ref="adf251fca0ae6bc767b0e9c5f2d6081f7" args="(Element &amp;x, const Element &amp;y, const Element &amp;z) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; mul </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Multiplication, x &lt;-- y * z. </p>
<p>This function assumes all the field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for x, y, and z, <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>

</div>
</div>
<a class="anchor" id="a4d8f0ac0be4b8a5a074f441d74bf4276"></a><!-- doxytag: member="LinBox::RingArchetype::div" ref="a4d8f0ac0be4b8a5a074f441d74bf4276" args="(Element &amp;x, const Element &amp;y, const Element &amp;z) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; div </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>z</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Division, x &lt;-- y / z. </p>
<p>This function assumes all the field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for x, y, and z, <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>

</div>
</div>
<a class="anchor" id="a608fc0675ac7788b016f686fa3a6ec7e"></a><!-- doxytag: member="LinBox::RingArchetype::neg" ref="a608fc0675ac7788b016f686fa3a6ec7e" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; neg </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Additive <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a> (Negation), x &lt;-- - y. </p>
<p>This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>

</div>
</div>
<a class="anchor" id="a9b2e67d87131ae67539834cd9cd3fa7a"></a><!-- doxytag: member="LinBox::RingArchetype::inv" ref="a9b2e67d87131ae67539834cd9cd3fa7a" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; inv </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Multiplicative <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a>, x &lt;-- 1 / y. </p>
<p>Requires that y is a unit (i.e. nonzero in a field). This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>

</div>
</div>
<a class="anchor" id="a09806701a7acb018cd70b179635720da"></a><!-- doxytag: member="LinBox::RingArchetype::axpy" ref="a09806701a7acb018cd70b179635720da" args="(Element &amp;r, const Element &amp;a, const Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; axpy </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Field element AXPY, r &lt;-- a * x + y. </p>
<p>This function assumes all field elements have already been constructed and initialized. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to r. </dd></dl>

</div>
</div>
<a class="anchor" id="a0865272ef30f366f2a7a06323ee7cc22"></a><!-- doxytag: member="LinBox::RingArchetype::isZero" ref="a0865272ef30f366f2a7a06323ee7cc22" args="(const Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isZero </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Zero equality. </p>
<p>Test if field element is equal to zero. This function assumes the field element has already been constructed and initialized.</p>
<p>In this implementation, this means the <code>_elem_ptr</code> of x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean true if equals zero, false if not. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ab37695d9e0fb5b0064c85e8449ed596b"></a><!-- doxytag: member="LinBox::RingArchetype::isOne" ref="ab37695d9e0fb5b0064c85e8449ed596b" args="(const Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">bool isOne </td>
          <td>(</td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>One equality. </p>
<p>Test if field element is equal to one. This function assumes the field element has already been constructed and initialized.</p>
<p>In this implementation, this means the <code> _elem_ptr</code> of x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>boolean true if equals one, false if not. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a25ec1b0d3d2d8da69636a121ef781a55"></a><!-- doxytag: member="LinBox::RingArchetype::addin" ref="a25ec1b0d3d2d8da69636a121ef781a55" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; addin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace Addition. </p>
<p>x += y This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element (reference returned). </td></tr>
    <tr><td class="paramname">y</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="aa14037ab7a2e80c0e663a760acbaff15"></a><!-- doxytag: member="LinBox::RingArchetype::subin" ref="aa14037ab7a2e80c0e663a760acbaff15" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; subin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace Subtraction. </p>
<p>x -= y This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element (reference returned). </td></tr>
    <tr><td class="paramname">y</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a6e17c2a1321787d89a51b9f0eee0f408"></a><!-- doxytag: member="LinBox::RingArchetype::mulin" ref="a6e17c2a1321787d89a51b9f0eee0f408" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; mulin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace Multiplication. </p>
<p>x *= y This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element (reference returned). </td></tr>
    <tr><td class="paramname">y</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="ac5966c66651795d1636a032e8bcd28ef"></a><!-- doxytag: member="LinBox::RingArchetype::divin" ref="ac5966c66651795d1636a032e8bcd28ef" args="(Element &amp;x, const Element &amp;y) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; divin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>y</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace Division. </p>
<p>x /= y This function assumes both field elements have already been constructed and initialized.</p>
<p>In this implementation, this means for both x and y <code> _elem_ptr</code> exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element (reference returned). </td></tr>
    <tr><td class="paramname">y</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a540bdfc0ce896b62d1a13247a2acfce2"></a><!-- doxytag: member="LinBox::RingArchetype::negin" ref="a540bdfc0ce896b62d1a13247a2acfce2" args="(Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; negin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace Additive <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a> (Inplace Negation). </p>
<p>x = - x This function assumes the field element has already been constructed and initialized.</p>
<p>In this implementation, this means the <code> _elem_ptr</code> of x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element (reference returned). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acf833d5877bb610fef71aac14074d5ce"></a><!-- doxytag: member="LinBox::RingArchetype::invin" ref="acf833d5877bb610fef71aac14074d5ce" args="(Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; invin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace Multiplicative <a class="el" href="class_lin_box_1_1_inverse.html" title="A Blackbox for the inverse.">Inverse</a>. </p>
<p>x = 1 / x This function assumes the field elementhas already been constructed and initialized.</p>
<p>In this implementation, this means the <code> _elem_ptr</code> of x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to x. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">x</td><td>field element (reference returned). </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a2a6378ec17b22af66cfa5e6901461cd1"></a><!-- doxytag: member="LinBox::RingArchetype::axpyin" ref="a2a6378ec17b22af66cfa5e6901461cd1" args="(Element &amp;r, const Element &amp;a, const Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a>&amp; axpyin </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>r</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>a</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Inplace AXPY. </p>
<p>r += a * x This function assumes all field elements have already been constructed and initialized. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>reference to r. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">r</td><td>field element (reference returned). </td></tr>
    <tr><td class="paramname">a</td><td>field element. </td></tr>
    <tr><td class="paramname">x</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="acd22def76f55c19076bb6c86104beaf0"></a><!-- doxytag: member="LinBox::RingArchetype::write" ref="acd22def76f55c19076bb6c86104beaf0" args="(std::ostream &amp;os) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; write </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em></td><td>)</td>
          <td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print field. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>output stream to which field is written. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>output stream to which field is written. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a332d58769d8dc6ba08d307db48386588"></a><!-- doxytag: member="LinBox::RingArchetype::write" ref="a332d58769d8dc6ba08d307db48386588" args="(std::ostream &amp;os, const Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::ostream&amp; write </td>
          <td>(</td>
          <td class="paramtype">std::ostream &amp;&#160;</td>
          <td class="paramname"><em>os</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">const <a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Print field element. </p>
<p>This function assumes the field element has already been constructed and initialized.</p>
<p>In this implementation, this means for the <code> _elem_ptr</code> for x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>output stream to which field element is written. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">os</td><td>output stream to which field element is written. </td></tr>
    <tr><td class="paramname">x</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a7f1e7ece6c12a9a3feb091f90c7c9ac1"></a><!-- doxytag: member="LinBox::RingArchetype::read" ref="a7f1e7ece6c12a9a3feb091f90c7c9ac1" args="(std::istream &amp;is)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::istream&amp; read </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>is</em></td><td>)</td>
          <td><code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read field. </p>
<dl class="return"><dt><b>Returns:</b></dt><dd>input stream from which field is read. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">is</td><td>input stream from which field is read. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a054db1ecf60ae64391b553dfc6316205"></a><!-- doxytag: member="LinBox::RingArchetype::read" ref="a054db1ecf60ae64391b553dfc6316205" args="(std::istream &amp;is, Element &amp;x) const " -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">std::istream&amp; read </td>
          <td>(</td>
          <td class="paramtype">std::istream &amp;&#160;</td>
          <td class="paramname"><em>is</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_element_archetype.html">Element</a> &amp;&#160;</td>
          <td class="paramname"><em>x</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td> const<code> [inline, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Read field element. </p>
<p>This function assumes the field element has already been constructed and initialized.</p>
<p>In this implementation, this means for the <code> _elem_ptr</code> for x exists and does not point to null.</p>
<dl class="return"><dt><b>Returns:</b></dt><dd>input stream from which field element is read. </dd></dl>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">is</td><td>input stream from which field element is read. </td></tr>
    <tr><td class="paramname">x</td><td>field element. </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a9122233fbf5c2f3e4fd7b1237e38fb1c"></a><!-- doxytag: member="LinBox::RingArchetype::constructor" ref="a9122233fbf5c2f3e4fd7b1237e38fb1c" args="(FieldAbstract *trait, Field_qcq *field_ptr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void constructor </td>
          <td>(</td>
          <td class="paramtype"><a class="el" href="class_lin_box_1_1_field_abstract.html">FieldAbstract</a> *&#160;</td>
          <td class="paramname"><em>trait</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Field_qcq *&#160;</td>
          <td class="paramname"><em>field_ptr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Template method for constructing archetype from a derived class of <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a>. </p>
<p>This class is needed to help the constructor differentiate between classes derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> and classes that aren't. Should be called with the same argument to both parameters? </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">trait</td><td>pointer to <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> or class derived from it </td></tr>
    <tr><td class="paramname">field_ptr</td><td>pointer to class derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<a class="anchor" id="a28d34cf83a537ab108861ac780009ed8"></a><!-- doxytag: member="LinBox::RingArchetype::constructor" ref="a28d34cf83a537ab108861ac780009ed8" args="(void *trait, Field_qcq *field_ptr)" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname">void constructor </td>
          <td>(</td>
          <td class="paramtype">void *&#160;</td>
          <td class="paramname"><em>trait</em>, </td>
        </tr>
        <tr>
          <td class="paramkey"></td>
          <td></td>
          <td class="paramtype">Field_qcq *&#160;</td>
          <td class="paramname"><em>field_ptr</em>&#160;</td>
        </tr>
        <tr>
          <td></td>
          <td>)</td>
          <td></td><td><code> [inline, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Template method for constructing archetype from a class not derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a>. </p>
<p>This class is needed to help the constructor differentiate between classes derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> and classes that aren't. Should be called with the same argument to both parameters? </p>
<dl><dt><b>Parameters:</b></dt><dd>
  <table class="params">
    <tr><td class="paramname">trait</td><td>pointer to class not derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> </td></tr>
    <tr><td class="paramname">field_ptr</td><td>pointer to class not derived from <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> </td></tr>
  </table>
  </dd>
</dl>

</div>
</div>
<hr/><h2>Field Documentation</h2>
<a class="anchor" id="a615b9bc7364f903ad92d77a0626bdf23"></a><!-- doxytag: member="LinBox::RingArchetype::_field_ptr" ref="a615b9bc7364f903ad92d77a0626bdf23" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_field_abstract.html">FieldAbstract</a>* <a class="el" href="class_lin_box_1_1_field_archetype.html#a615b9bc7364f903ad92d77a0626bdf23">_field_ptr</a><code> [mutable, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Pointer to <a class="el" href="class_lin_box_1_1_field_abstract.html" title="field base class.">FieldAbstract</a> object. </p>
<p>Not part of the interface. Included to allow for archetype use three. </p>

</div>
</div>
<a class="anchor" id="a2df3782f6453615519872d14aa10cecf"></a><!-- doxytag: member="LinBox::RingArchetype::_elem_ptr" ref="a2df3782f6453615519872d14aa10cecf" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_element_abstract.html">ElementAbstract</a>* <a class="el" href="class_lin_box_1_1_field_archetype.html#a2df3782f6453615519872d14aa10cecf">_elem_ptr</a><code> [mutable, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Pointer to <a class="el" href="class_lin_box_1_1_element_abstract.html" title="Abstract element base class, a technicality.">ElementAbstract</a> object. </p>
<p>Not part of the interface. Included to allow for archetype use three. </p>

</div>
</div>
<a class="anchor" id="a418143fcded940a0977a41a8f33c727b"></a><!-- doxytag: member="LinBox::RingArchetype::_randIter_ptr" ref="a418143fcded940a0977a41a8f33c727b" args="" -->
<div class="memitem">
<div class="memproto">
      <table class="memname">
        <tr>
          <td class="memname"><a class="el" href="class_lin_box_1_1_rand_iter_abstract.html">RandIterAbstract</a>* <a class="el" href="class_lin_box_1_1_field_archetype.html#a418143fcded940a0977a41a8f33c727b">_randIter_ptr</a><code> [mutable, protected, inherited]</code></td>
        </tr>
      </table>
</div>
<div class="memdoc">

<p>Pointer to <a class="el" href="class_lin_box_1_1_rand_iter_abstract.html" title="Random field element generator.">RandIterAbstract</a> object. </p>
<p>Not part of the interface. Included to allow for archetype use three. </p>

</div>
</div>
<hr/>The documentation for this class was generated from the following file:<ul>
<li><a class="el" href="ring_2archetype_8h.html">ring/archetype.h</a></li>
</ul>
</div>
<hr class="footer"/><address class="footer"><small>Generated on Tue Aug 30 2011 for linbox by&#160;
<a href="http://www.doxygen.org/index.html">
<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.4 </small></address>
</body>
</html>