Quellcodebibliothek Statistik Leitseite products/Sources/formale Sprachen/GAP/pkg/cvec/doc/   (Algebra von RWTH Aachen Version 4.15.1©)  Datei vom 20.5.2025 mit Größe 54 kB image not shown  

SSL chap4.html   Sprache: HTML

 
 products/Sources/formale Sprachen/GAP/pkg/cvec/doc/chap4.html


<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (cvec) - Chapter 4: Vectors</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
<script src="manual.js" type="text/javascript"></script>
<script type="text/javascript">overwriteStyle();</script>
</head>
<body class="chap4"  onload="jscontent()">


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap3.html">[Previous Chapter]</a>    <a href="chap5.html">[Next Chapter]</a>   </div>

<p id="mathjaxlink" class="pcenter"><a href="chap4_mj.html">[MathJax on]</a></p>
<p><a id="X7D12102B824C97B4" name="X7D12102B824C97B4"></a></p>
<div class="ChapSects"><a href="chap4.html#X7D12102B824C97B4">4 <span class="Heading">Vectors</span></a>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X788B78DE82579F3D">4.1 <span class="Heading">Creation</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X83BF7BBC84478E77">4.1-1 CVec</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X83E8D01B82498337">4.1-2 CVec</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X826347BB7B81A06D">4.1-3 CVec</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X83E046D17AB12FF0">4.1-4 CVec</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X86642DDE797387E7">4.1-5 CVec</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7CC92B9E8286B025">4.1-6 CVec</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7B9566C1867C5EA6">4.1-7 CVecClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X78E5FA4881DE6D1A">4.1-8 CVecClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X871E42B97E3664EB">4.1-9 CVecClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X81C506327D635947">4.1-10 CVecClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X79F5D11E830B9768">4.1-11 CVecClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X87D5ABC1835C4A31">4.1-12 CVecClass</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X876613FC7A9A276C">4.1-13 ZeroSameMutability</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7BA2BD517C058720">4.1-14 ShallowCopy</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X84EBC4427913251F">4.1-15 Randomize</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X79862FF37B75BF48">4.2 <span class="Heading">Arithmetic</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X788A3D6482290F7D">4.2-1 <span class="Heading">Handling of scalars in arithmetic operations</span></a>
</span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7C2F565480B1A4A1"><code>4.2-2 \+</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7CFEB1507E279EF2"><code>4.2-3 \-</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7DD3036C847E12DC">4.2-4 AdditiveInverseSameMutability</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7A34F9AA8330EBB9">4.2-5 AdditiveInverseMutable</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X8191F74E797B4A3D"><code>4.2-6 \*</code></a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X820D829E87A82A80">4.2-7 AddRowVector</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X846D1EDA7B5B1B39">4.2-8 MultVector</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7F4B8B747E88C59B">4.2-9 ScalarProduct</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X86115BE97842EC3B">4.2-10 ZeroMutable</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7FB1A37D7F8603B9">4.2-11 ZeroVector</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X7C68FFEC84A86786">4.3 <span class="Heading">Element access and slicing</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7A6A222E87452C27">4.3-1 ELM_LIST</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X78F1C2AE7A8DD868">4.3-2 ASS_LIST</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7D12C17C873DE3B4">4.3-3 ELMS_LIST</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X78878E5E839265A6">4.3-4 CVEC_Slice</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X80EC354D78D7B5A6">4.3-5 CopySubVector</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X84347D8B7DFA790C">4.3-6 CVEC_Concatenation</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X81F3C9697E5636B6">4.4 <span class="Heading">Comparison of Vectors and other information</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X8155313286F88093">4.4-1 =</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X790D69A88340E510">4.4-2 LT</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X78952A3C788B7DB3">4.4-3 IsZero</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7F42E5AD87EC9D5A">4.4-4 PositionNonZero</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X8370979D7F451279">4.4-5 PositionLastNonZero</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X780769238600AFD1">4.4-6 Length</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X80A1A9C386FD0E1B">4.5 <span class="Heading">Changing representation, Unpacking</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7BD632E57E1EB300">4.5-1 Unpack</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X850FB74483F87453">4.5-2 IntegerRep</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7FDFEF7A7E850151">4.5-3 NumberFFVector</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7E055C467B1B54D8">4.5-4 CVecNumber</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X853A85AE878B0CBF">4.6 <span class="Heading">Access to the base field</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X854192428704857E">4.6-1 BaseDomain</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X842335E47DC49702">4.6-2 BaseField</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X81B99EEC7C134213">4.6-3 Characteristic</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X81E3BBBB80096DC2">4.6-4 DegreeFFE</a></span>
</div></div>
<div class="ContSect"><span class="tocline"><span class="nocss"> </span><a href="chap4.html#X823EFBDB7ED49554">4.7 <span class="Heading">Hashing techniques for <code class="code">cvec</code>s</span></a>
</span>
<div class="ContSSBlock">
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X7F0228A18327F87D">4.7-1 CVEC_HashFunctionForCVecs</a></span>
<span class="ContSS"><br /><span class="nocss">  </span><a href="chap4.html#X82C8DE4C78B80B1E">4.7-2 ChooseHashFunction</a></span>
</div></div>
</div>

<h3>4 <span class="Heading">Vectors</span></h3>

<p>See Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a> for a documentation of the data format of <code class="code">cvec</code>s and its restrictions.</p>

<p><a id="X788B78DE82579F3D" name="X788B78DE82579F3D"></a></p>

<h4>4.1 <span class="Heading">Creation</span></h4>

<p>Note that many functions described later in this chapter implicitly create new <code class="code">cvec</code>s, such that it is usually only in the beginning of a calculation necessary to create <code class="code">cvec</code>s explicitly.</p>

<p><a id="X83BF7BBC84478E77" name="X83BF7BBC84478E77"></a></p>

<h5>4.1-1 CVec</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVec</code>( <var class="Arg">arg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a new mutable <code class="code">cvec</code></p>

<p>Creates a new <code class="code">cvec</code>. See the method descriptions for details.</p>

<p><a id="X83E8D01B82498337" name="X83E8D01B82498337"></a></p>

<h5>4.1-2 CVec</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVec</code>( <var class="Arg">cvecclass</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a new mutable <code class="code">cvec</code></p>

<p><var class="Arg">cvecclass</var> must be a <code class="code">cvecclass</code>. Creates a new <code class="code">cvec</code> containing only zeroes. For an explanation of the term <code class="code">cvecclass</code> see Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a> and <code class="func">CVecClass</code> (<a href="chap4.html#X7B9566C1867C5EA6"><span class="RefLink">4.1-7</span></a>).</p>

<p><a id="X826347BB7B81A06D" name="X826347BB7B81A06D"></a></p>

<h5>4.1-3 CVec</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVec</code>( <var class="Arg">coeffs</var>, <var class="Arg">cvecclass</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a new mutable <code class="code">cvec</code></p>

<p>This method takes a coefficient list and a <code class="code">cvecclass</code> as arguments. Assume the vector will be over <span class="SimpleMath">GF(p,d)</span> with <span class="SimpleMath">q=p^d</span>. For the coefficient list <var class="Arg">coeffs</var> there exist several possibilities, partially depending on the base field size. The easiest way is to use <strong class="pkg">GAP</strong> finite field elements, which will be put into the new vector in the same order. If <span class="SimpleMath">d=1</span>, one can always use <strong class="pkg">GAP</strong> immediate integers between <span class="SimpleMath">0</span> and <span class="SimpleMath">p-1</span>, the vector will then contain the corresponding cosets in <span class="SimpleMath">GF(p)=Z/pZ</span>. If <span class="SimpleMath">q</span> is small enough to be a <strong class="pkg">GAP</strong> immediate integer, then one can use <strong class="pkg">GAP</strong> immediate integers that are equal to the <span class="SimpleMath">p</span>-adic expansion using the coefficients of the representing polynomial as coefficients. That is, if an element in <span class="SimpleMath">GF(p,d)</span> is represented by the polynomial <span class="SimpleMath">∑_{i=0}^{d-1} a_i x^i</span> with <span class="SimpleMath">a_i ∈ {0,...,p-1}</span>, then one has to put <span class="SimpleMath">∑_{i=0}^{d-1} a_i p^i</span> as integer into the coefficient list <var class="Arg">coeffs</var>. If <span class="SimpleMath">q</span> is larger, then <var class="Arg">coeffs</var> must be a list of lists of length <span class="SimpleMath">d</span> and contains for each field element of <span class="SimpleMath">GF(p,d)</span> in the vector a list of its <span class="SimpleMath">d</span> coefficients of the representing polynomial. For an explanation of the term <code class="code">cvecclass</code> seSection <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a> and <code class="func">CVecClass</code> (<a href="chap4.html#X7B9566C1867C5EA6"><span class="RefLink">4.1-7</span></a>). Of course, the length of the list <var class="Arg">coeffs</var> must match the length of the vector given in the <code class="code">cvecclass</code>.</p>

<p><a id="X83E046D17AB12FF0" name="X83E046D17AB12FF0"></a></p>

<h5>4.1-4 CVec</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVec</code>( <var class="Arg">coeffs</var>, <var class="Arg">p</var>, <var class="Arg">d</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a new mutable <code class="code">cvec</code></p>

<p>This method takes a coefficient list and two positive integers <var class="Arg">p</var> and <var class="Arg">d</var> as arguments. A new <code class="code">cvec</code> over <span class="SimpleMath">GF(p,d)</span> will be created. Let <span class="SimpleMath">q := p^d</span>.</p>

<p>For a description of the possible values of the coefficient list <var class="Arg">coeffs</var> see the description of the method <code class="func">CVec</code> (<a href="chap4.html#X826347BB7B81A06D"><span class="RefLink">4.1-3</span></a>).</p>

<p><a id="X86642DDE797387E7" name="X86642DDE797387E7"></a></p>

<h5>4.1-5 CVec</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVec</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a new <code class="code">cvec</code></p>

<p><var class="Arg">v</var> must be a <strong class="pkg">GAP</strong> compressed vector either over <span class="SimpleMath">GF(2)</span> or <span class="SimpleMath">GF(p,d)</span> with <span class="SimpleMath">p^d ≤ 256</span>. Creates a new <code class="code">cvec</code> containing the same numbers as <var class="Arg">v</var> over the field which the <code class="code">Field</code> operation returns for <var class="Arg">v</var>.</p>

<p><a id="X7CC92B9E8286B025" name="X7CC92B9E8286B025"></a></p>

<h5>4.1-6 CVec</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVec</code>( <var class="Arg">coeffs</var>, <var class="Arg">f</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a new mutable <code class="code">cvec</code></p>

<p>This method takes a coefficient list and a finite field <var class="Arg">f</var> as arguments. A new <code class="code">cvec</code> over <var class="Arg">f</var> will be created. Let <span class="SimpleMath">q :=</span><code class="code">Size(</code><var class="Arg">f</var><code class="code">)</code>.</p>

<p>For a description of the possible values of the coefficient list <var class="Arg">coeffs</var> see the description of the method <code class="func">CVec</code> (<a href="chap4.html#X826347BB7B81A06D"><span class="RefLink">4.1-3</span></a>).</p>

<p>After having encountered the concept of a <code class="code">cvecclass</code> already a few times it is time to learn how to create one. The following operation is used first to create new <code class="code">cvecclass</code>es and second to ask a <code class="code">cvec</code> for its class. In addition, it is used for <code class="code">csca</code>s.</p>

<p><a id="X7B9566C1867C5EA6" name="X7B9566C1867C5EA6"></a></p>

<h5>4.1-7 CVecClass</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecClass</code>( <var class="Arg">arg</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <code class="code">cvecclass</code></p>

<p>Creates new <code class="code">cvecclass</code>es and asks <code class="code">cvec</code>s for their class. See the following method descriptions for details. For an explanation of the term <code class="code">cvecclass</code> see Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a>.</p>

<p><a id="X78E5FA4881DE6D1A" name="X78E5FA4881DE6D1A"></a></p>

<h5>4.1-8 CVecClass</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecClass</code>( <var class="Arg">p</var>, <var class="Arg">d</var>, <var class="Arg">l</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="code">cvecclass</code></p>

<p>All three arguments must be integers. The arguments <var class="Arg">p</var> and <var class="Arg">d</var> must be positive and describe the base field <span class="SimpleMath">GF(p,d)</span>. The third argument must be non-negative and the method returns the <code class="code">cvecclass</code> of vectors over <span class="SimpleMath">GF(p,d)</span> of length <var class="Arg">l</var>.</p>

<p>For an explanation of the term <code class="code">cvecclass</code> and its data structure see Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a>.</p>

<p><a id="X871E42B97E3664EB" name="X871E42B97E3664EB"></a></p>

<h5>4.1-9 CVecClass</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecClass</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="code">cvecclass</code></p>

<p>The argument <var class="Arg">v</var> must be a <code class="code">cvec</code>. The method returns the corresponding <code class="code">cvecclass</code>. For an explanation of the term <code class="code">cvecclass</code> and its data structure see Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a>.</p>

<p><a id="X81C506327D635947" name="X81C506327D635947"></a></p>

<h5>4.1-10 CVecClass</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecClass</code>( <var class="Arg">v</var>, <var class="Arg">l</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="code">cvecclass</code></p>

<p>The first argument <var class="Arg">v</var> must be a <code class="code">cvec</code>. The method returns the corresponding <code class="code">cvecclass</code> for vectors over the same field as <var class="Arg">v</var> but with length <var class="Arg">l</var>. This is much faster than producing the same object by giving <span class="SimpleMath">p</span> and <span class="SimpleMath">d</span>. For an explanation of the term <code class="code">cvecclass</code> and its data structure see Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a>.</p>

<p><a id="X79F5D11E830B9768" name="X79F5D11E830B9768"></a></p>

<h5>4.1-11 CVecClass</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecClass</code>( <var class="Arg">c</var>, <var class="Arg">l</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="code">cvecclass</code></p>

<p>The argument <var class="Arg">c</var> must be a <code class="code">cvecclass</code>. The method returns the corresponding <code class="code">cvecclass</code> for vectors over the same field as those in <var class="Arg">c</var> but with length <var class="Arg">l</var>. This is much faster than producing the same object by giving <span class="SimpleMath">p</span> and <span class="SimpleMath">d</span>. For an explanation of the term <code class="code">cvecclass</code> and its data structure seSection <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a>.</p>

<p><a id="X87D5ABC1835C4A31" name="X87D5ABC1835C4A31"></a></p>

<h5>4.1-12 CVecClass</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecClass</code>( <var class="Arg">f</var>, <var class="Arg">l</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="code">cvecclass</code></p>

<p>The argument <var class="Arg">f</var> must be a <code class="code">finite field</code>. The method returns the corresponding <code class="code">cvecclass</code> for vectors over the field <var class="Arg">f</var> with length <var class="Arg">l</var>. For an explanation of the term <code class="code">cvecclass</code> and its data structure see Section <a href="chap3.html#X7ED5B368830755AF"><span class="RefLink">3.2</span></a>.</p>

<p><a id="X876613FC7A9A276C" name="X876613FC7A9A276C"></a></p>

<h5>4.1-13 ZeroSameMutability</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ZeroSameMutability</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the zero <code class="code">cvec</code> in the same <code class="code">cvecclass</codeas <var class="Arg">v</var></p>

<p><var class="Arg">v</var> must be a <code class="code">cvec</code>.</p>

<p><a id="X7BA2BD517C058720" name="X7BA2BD517C058720"></a></p>

<h5>4.1-14 ShallowCopy</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ShallowCopy</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a mutable copy of <var class="Arg">v</var></p>

<p><var class="Arg">v</var> must be a <code class="code">cvec</code>.</p>

<p><a id="X84EBC4427913251F" name="X84EBC4427913251F"></a></p>

<h5>4.1-15 Randomize</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Randomize</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Randomize</code>( <var class="Arg">v</var>, <var class="Arg">rs</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the vector <var class="Arg">v</var></p>

<p><var class="Arg">v</var> must be a <code class="code">cvec</code> and <var class="Arg">rs</var> must be a random source object if given. This method changes the vector <var class="Arg">v</var> in place by (pseudo) random values in the field over which the vector lives. If a random source is given, the pseudo random numbers used are taken from this source, otherwise the global random source in the <strong class="pkg">GAP</strong> library is taken.</p>

<p><a id="X79862FF37B75BF48" name="X79862FF37B75BF48"></a></p>

<h4>4.2 <span class="Heading">Arithmetic</span></h4>

<p>Of course, the standard arithmetic infix operations <span class="SimpleMath">+</span>, <span class="SimpleMath">-</span> and <span class="SimpleMath">*</span> (for vectors and scalars) work as expected by using the methods below. We start this section with a subsection on the usage of scalars in arithmetic operations involving vectors.</p>

<p><a id="X788A3D6482290F7D" name="X788A3D6482290F7D"></a></p>

<h5>4.2-1 <span class="Heading">Handling of scalars in arithmetic operations</span></h5>

<p>In all places (like in <code class="code">\*</code>) where vectors and scalars occur, the following conventions apply to scalars:</p>

<p><strong class="pkg">GAP</strong> finite field elements can be used as scalars.</p>

<p>Integers between <span class="SimpleMath">0</span> and <span class="SimpleMath">p-1</span> (inclusively) can always be used as scalars representing prime field elements via the isomorphism <span class="SimpleMath">GF(p)=Z/pZ</span>, also for extension fields. Larger integers than <span class="SimpleMath">p-1</span>, as long as they are <strong class="pkg">GAP</strong> immediate integers, are interpreted as the <span class="SimpleMath">p</span>-adic expansion of the coefficient list of the polynomial representing the scalar. Note that this usage of immediate integers differs from the standard list arithmetic in <strong class="pkg">GAP</strong> because multiplication with the integer <span class="SimpleMath">n</span> not necessarily means the same than <span class="SimpleMath">n</span> times addition! Larger integers than immediate integers are not supported.</p>

<p><a id="X7C2F565480B1A4A1" name="X7C2F565480B1A4A1"></a></p>

<h5><code>4.2-2 \+</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \+</code>( <var class="Arg">v</var>, <var class="Arg">w</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the sum <span class="SimpleMath"><var class="Arg">v</var>+<var class="Arg">w</var></span> as a new <code class="code">cvec</code></p>

<p>For two <code class="code">cvec</code>s <var class="Arg">v</var> and <var class="Arg">w</var>. Works as expected.</p>

<p><a id="X7CFEB1507E279EF2" name="X7CFEB1507E279EF2"></a></p>

<h5><code>4.2-3 \-</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \-</code>( <var class="Arg">v</var>, <var class="Arg">w</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the difference <span class="SimpleMath"><var class="Arg">v</var>-<var class="Arg">w</var></span> as a new <code class="code">cvec</code></p>

<p>For two <code class="code">cvec</code>s <var class="Arg">v</var> and <var class="Arg">w</var>. Works as expected.</p>

<p><a id="X7DD3036C847E12DC" name="X7DD3036C847E12DC"></a></p>

<h5>4.2-4 AdditiveInverseSameMutability</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AdditiveInverseSameMutability</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \-</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the additive inverse of <var class="Arg">v</var> as a new <code class="code">cvec</code></p>

<p>For a <code class="code">cvec</code> <var class="Arg">v</var>. Works as expected.</p>

<p><a id="X7A34F9AA8330EBB9" name="X7A34F9AA8330EBB9"></a></p>

<h5>4.2-5 AdditiveInverseMutable</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AdditiveInverseMutable</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the additive inverse of <var class="Arg">v</var> as a new mutable <code class="code">cvec</code></p>

<p>For a <code class="code">cvec</code> <var class="Arg">v</var>. Works as expected.</p>

<p><a id="X8191F74E797B4A3D" name="X8191F74E797B4A3D"></a></p>

<h5><code>4.2-6 \*</code></h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \*</code>( <var class="Arg">v</var>, <var class="Arg">s</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ \*</code>( <var class="Arg">s</var>, <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the scalar multiple <var class="Arg">s</var><span class="SimpleMath">⋅</span><var class="Arg">v</var></p>

<p>For a <code class="code">cvec</code> <var class="Arg">v</var> and a scalar <var class="Arg">s</var>. For the format of the scalar see <a href="chap4.html#X788A3D6482290F7D"><span class="RefLink">4.2-1</span></a>. Works as expected.</p>

<p><a id="X820D829E87A82A80" name="X820D829E87A82A80"></a></p>

<h5>4.2-7 AddRowVector</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AddRowVector</code>( <var class="Arg">v</var>, <var class="Arg">w</var>, <var class="Arg">s</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ AddRowVector</code>( <var class="Arg">v</var>, <var class="Arg">w</var>, <var class="Arg">s</var>, <var class="Arg">fr</var>, <var class="Arg">to</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: nothing</p>

<p><var class="Arg">v</var> and <var class="Arg">w</var> must be <code class="code">cvec</code>s over the same field with equal length, <var class="Arg">s</var> a scalar (see Subsection <a href="chap4.html#X788A3D6482290F7D"><span class="RefLink">4.2-1</span></a>) and <var class="Arg">v</var> must be mutable. Adds <var class="Arg">s</var><span class="SimpleMath">⋅</span><var class="Arg">w</var> to <var class="Arg">v</var> modifying <var class="Arg">v</var>. If <var class="Arg">fr</var> and <var class="Arg">to</var> are given, they give a hint, that <var class="Arg">w</var> is zero outside positions <var class="Arg">fr</var> to <var class="Arg">to</var> (inclusively). The method can, if it chooses so, save time by not computing outside that range. In fact, the implemented method restricts the operation to the <code class="code">Word</code>s involved.</p>

<p>If either <var class="Arg">fr</var> or <var class="Arg">to</var> is <span class="SimpleMath">0</span> it defaults to <span class="SimpleMath">1</span> and <code class="code">Length(v)</code> respectively.</p>

<p><a id="X846D1EDA7B5B1B39" name="X846D1EDA7B5B1B39"></a></p>

<h5>4.2-8 MultVector</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MultVector</code>( <var class="Arg">v</var>, <var class="Arg">s</var> )</td><td class="tdright">( method )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ MultVector</code>( <var class="Arg">v</var>, <var class="Arg">s</var>, <var class="Arg">fr</var>, <var class="Arg">to</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: nothing</p>

<p><var class="Arg">v</var> must be a mutable <code class="code">cvec</code> and <var class="Arg">s</var> a scalar (see Subsection <a href="chap4.html#X788A3D6482290F7D"><span class="RefLink">4.2-1</span></a>). Multiplies <var class="Arg">v</var> by <var class="Arg">s</var> modifying <var class="Arg">v</var>. If <var class="Arg">fr</var> and <var class="Arg">to</var> are given, they give a hint, that <var class="Arg">v</var> is zero outside positions <var class="Arg">fr</var> to <var class="Arg">to</var> (inclusively). The method can, if it chooses so, save time by not computing outside that range. In fact, the implemented method restricts the operation to the <code class="code">Word</code>s involved.</p>

<p>If either <var class="Arg">fr</var> or <var class="Arg">to</var> is <span class="SimpleMath">0</span> it defaults to <span class="SimpleMath">1</span> and <code class="code">Length(v)</code> respectively.</p>

<p><a id="X7F4B8B747E88C59B" name="X7F4B8B747E88C59B"></a></p>

<h5>4.2-9 ScalarProduct</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ScalarProduct</code>( <var class="Arg">v</var>, <var class="Arg">w</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the scalar product</p>

<p>Both <var class="Arg">v</var> and <var class="Arg">w</var> must be <code class="code">cvec</code>s over the same field with equal length. The function returns the scalar product of the two vectors. Note that there is a very efficient method for prime fields with <span class="SimpleMath">p < 65536</span>. In the other cases the method taken is not extremely fast.</p>

<p><a id="X86115BE97842EC3B" name="X86115BE97842EC3B"></a></p>

<h5>4.2-10 ZeroMutable</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ZeroMutable</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a mutable copy of the zero <code class="code">cvec</code> in the same <code class="code">cvecclass</code> as <var class="Arg">v</var></p>

<p><var class="Arg">v</var> must be a <code class="code">cvec</code>.</p>

<p><a id="X7FB1A37D7F8603B9" name="X7FB1A37D7F8603B9"></a></p>

<h5>4.2-11 ZeroVector</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ZeroVector</code>( <var class="Arg">l</var>, <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a mutable copy of the zero <code class="code">cvec</code> over the same field than <var class="Arg">v</var> but with length <var class="Arg">l</var></p>

<p><var class="Arg">v</var> must be a <code class="code">cvec</code> and <var class="Arg">l</var> a <strong class="pkg">GAP</strong> integer.</p>

<p><a id="X7C68FFEC84A86786" name="X7C68FFEC84A86786"></a></p>

<h4>4.3 <span class="Heading">Element access and slicing</span></h4>

<p><code class="code">cvec</code>s behave to some extend like lists with respect to element access and slicing. However, they allow only actions that can be implemented efficiently and that do not change their length. In addition there is a highly optimised function to copy contiguous sections of <code class="code">cvec</code>s into another <code class="code">cvec</code>.</p>

<p><a id="X7A6A222E87452C27" name="X7A6A222E87452C27"></a></p>

<h5>4.3-1 ELM_LIST</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ELM_LIST</code>( <var class="Arg">v</var>, <var class="Arg">pos</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a finite field element</p>

<p>This is a method for (reading) element access of vectors. <var class="Arg">v</var> must be a <var class="Arg">cvec</var> and <var class="Arg">pos</var> must be a positive integer not greater than the length of <var class="Arg">v</var>. The finite field element at position <var class="Arg">pos</var> in <var class="Arg">v</var> is returned.</p>

<p>Note that the list access syntax <q><var class="Arg">v</var>[<var class="Arg">pos</var>]</q> triggers a call to the <code class="func">ELM_LIST</code> operation.</p>

<p><a id="X78F1C2AE7A8DD868" name="X78F1C2AE7A8DD868"></a></p>

<h5>4.3-2 ASS_LIST</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ASS_LIST</code>( <var class="Arg">v</var>, <var class="Arg">pos</var>, <var class="Arg">s</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: nothing</p>

<p>This is a method for (writing) element access of vectors. <var class="Arg">v</var> must be a <var class="Arg">cvec</var> and <var class="Arg">pos</var> must be a positive integer not greater than the length of <var class="Arg">v</var>. <var class="Arg">s</var> must be a finite field element or an integer. The finite field element at position <var class="Arg">pos</var> in <var class="Arg">v</var> is set to <var class="Arg">s</var>.</p>

<p>The scalar <var class="Arg">s</var> is treated exactly as described in Subsection <a href="chap4.html#X788A3D6482290F7D"><span class="RefLink">4.2-1</span></a>.</p>

<p>Note that the list access syntax <q><var class="Arg">v</var><code class="code">[</code><var class="Arg">pos</var><code class="code">] := </code><var class="Arg">s</var></q> triggers a call to the <code class="func">ASS_LIST</code> operation.</p>

<p><a id="X7D12C17C873DE3B4" name="X7D12C17C873DE3B4"></a></p>

<h5>4.3-3 ELMS_LIST</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ELMS_LIST</code>( <var class="Arg">v</var>, <var class="Arg">l</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a <code class="code">cvec</code></p>

<p>This is a method for (reading) slice access of vectors. <var class="Arg">v</var> must be a <var class="Arg">cvec</var> and <var class="Arg">l</var> must be a range object or a list of positive integers not greater than the length of <var class="Arg">v</var>. In both cases the list of numbers must be contiguous list of valid positions in the vector. A new <code class="code">cvec</code> over the same field as <var class="Arg">v</var> and with the same length as <var class="Arg">l</var> is created and returned. The finite field element at i positions <var class="Arg">l</var> in <var class="Arg">v</var> are copied into the new vector.</p>

<p>Note that the list slice access syntax <q><var class="Arg">v</var>{<var class="Arg">l</var>}</q> triggers a call to the <code class="func">ELMS_LIST</code> operation.</p>

<p>Note that there intentionally is no write slice access to <code class="code">cvec</code>s, because in most cases this would lead to code that unnecessarily copies data around in an expensive way. Please use the following function instead:</p>

<p><a id="X78878E5E839265A6" name="X78878E5E839265A6"></a></p>

<h5>4.3-4 CVEC_Slice</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVEC_Slice</code>( <var class="Arg">src</var>, <var class="Arg">dst</var>, <var class="Arg">srcpos</var>, <var class="Arg">len</var>, <var class="Arg">dstpos</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: nothing</p>

<p><var class="Arg">src</var> and <var class="Arg">dst</var> must be <code class="code">cvec</code>s over the same field. The field elements from positions <var class="Arg">srcpos</var> to <span class="SimpleMath"><var class="Arg">srcpos</var>+<var class="Arg">len</var>-1</span> in <var class="Arg">src</var> are copied to positions from <var class="Arg">dstpos</var> in <var class="Arg">dst</var>. Of course all positions must be within the vectors.</p>

<p>Note that this functions is quite efficient, however, the ranges are checked. If you want to avoid this, use <code class="code">CVEC_SLICE</code> instead (with same calling convention), but do not complain later if crashes occur in case of illegal positions used.</p>

<p><a id="X80EC354D78D7B5A6" name="X80EC354D78D7B5A6"></a></p>

<h5>4.3-5 CopySubVector</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CopySubVector</code>( <var class="Arg">src</var>, <var class="Arg">dst</var>, <var class="Arg">srcposs</var>, <var class="Arg">dstposs</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: nothing</p>

<p>Implements the operation <code class="func">CopySubVector</code> (<a href="../../../doc/ref/chap26_mj.html#X80EC354D78D7B5A6"><span class="RefLink">Reference: CopySubVector</span></a>) for <code class="code">cvec</code>s <var class="Arg">src</var> and <var class="Arg">dst</var>, that is, <var class="Arg">srcposs</var> and <var class="Arg">dstposs</var> must be ranges or plain lists of integers of equal length such that all numbers contained lie between <span class="SimpleMath">1</span> and the length of <var class="Arg">src</var> and <var class="Arg">dst</var> respectively. The result is undefined if <var class="Arg">src</var> and <var class="Arg">dst</var> are the same objects. The method is particularly efficient if both <var class="Arg">srcposs</var> and <var class="Arg">dstposs</var> are ranges with increment <span class="SimpleMath">1</span>.</p>

<p><a id="X84347D8B7DFA790C" name="X84347D8B7DFA790C"></a></p>

<h5>4.3-6 CVEC_Concatenation</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVEC_Concatenation</code>( <var class="Arg">arg</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a new <code class="code">cvec</code> by concatenating all arguments</p>

<p>This function provides concatenation of <code class="code">cvec</code>s over the same base field. The result is a new <code class="code">cvec</code>. A variable number of <code class="code">cvec</code>s over the same field can be given.</p>

<p><a id="X81F3C9697E5636B6" name="X81F3C9697E5636B6"></a></p>

<h4>4.4 <span class="Heading">Comparison of Vectors and other information</span></h4>

<p><a id="X8155313286F88093" name="X8155313286F88093"></a></p>

<h5>4.4-1 =</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ =</code>( <var class="Arg">v</var>, <var class="Arg">w</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Returns <code class="code">true</code> if the <code class="code">cvec</code>s <var class="Arg">v</var> and <var class="Arg">w</var> are equal. The vectors must be over the same field and must have equal length.</p>

<p><a id="X790D69A88340E510" name="X790D69A88340E510"></a></p>

<h5>4.4-2 LT</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ LT</code>( <var class="Arg">v</var>, <var class="Arg">w</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Returns <code class="code">true</code> if the <code class="code">cvec</code> <var class="Arg">v</var> is smaller than <var class="Arg">w</var>. The vectors must be over the same field and must have equal length. The order implemented is very efficient but is <em>not</em> compatible with lexicographic ordering of lists of finite field elements! This method should therefore only be used for binary search purposes. Note that the operation <code class="code">LT</code> is the same as <code class="code">\<</code>.</p>

<p><a id="X78952A3C788B7DB3" name="X78952A3C788B7DB3"></a></p>

<h5>4.4-3 IsZero</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IsZero</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: <code class="code">true</code> or <code class="code">false</code></p>

<p>Returns <code class="code">true</code> if the <code class="code">cvec</code> <var class="Arg">v</var> is equal to zero, meaning that all entries are equal to zero.</p>

<p><a id="X7F42E5AD87EC9D5A" name="X7F42E5AD87EC9D5A"></a></p>

<h5>4.4-4 PositionNonZero</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PositionNonZero</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a positive integer</p>

<p>Returns the index of the first entry in the <code class="code">cvec</code> <var class="Arg">v</var> that is not equal to zero. If the vector is equal to zero, then its <code class="code">Length</code> plus one is returned.</p>

<p><a id="X8370979D7F451279" name="X8370979D7F451279"></a></p>

<h5>4.4-5 PositionLastNonZero</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ PositionLastNonZero</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a non-negative integer</p>

<p>Returns the index of the last entry in the <code class="code">cvec</code> <var class="Arg">v</var> that is not equal to zero. If the vector is equal to zero, then <span class="SimpleMath">0</span> is returned.</p>

<p><a id="X780769238600AFD1" name="X780769238600AFD1"></a></p>

<h5>4.4-6 Length</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Length</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a non-negative integer</p>

<p>Returns the length of the <code class="code">cvec</code> <var class="Arg">v</var>.</p>

<p><a id="X80A1A9C386FD0E1B" name="X80A1A9C386FD0E1B"></a></p>

<h4>4.5 <span class="Heading">Changing representation, Unpacking</span></h4>

<p><a id="X7BD632E57E1EB300" name="X7BD632E57E1EB300"></a></p>

<h5>4.5-1 Unpack</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Unpack</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a list of finite field elements</p>

<p>This operation unpacks a <code class="code">cvec</code> <var class="Arg">v</var>. A new plain list containing the corresponding numbers as <strong class="pkg">GAP</strong> finite field elements. Note that the vector <var class="Arg">v</var> remains unchanged.</p>

<p><a id="X850FB74483F87453" name="X850FB74483F87453"></a></p>

<h5>4.5-2 IntegerRep</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ IntegerRep</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a list of integers or of lists of integers</p>

<p>This operation unpacks a <code class="code">cvec</code> <var class="Arg">v</var> into its integer representation. A new plain list containing the corresponding numbers of the vector is returned. The integer representation of a finite field element is either one integer (containing the p-adic expansion of the polynomial representative of the residue class modulo the Conway polynomial, if the field has less or equal to <span class="SimpleMath">65536</span> elements. For larger finite fields each field element is represented as a list of <span class="SimpleMath">d</span> integers between <span class="SimpleMath">0</span> and <span class="SimpleMath">p-1</span>, where <span class="SimpleMath">d</span> is the degree of the finite field over its prime field. Note that the vector <var class="Arg">v</var> remains unchanged.</p>

<p><a id="X7FDFEF7A7E850151" name="X7FDFEF7A7E850151"></a></p>

<h5>4.5-3 NumberFFVector</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ NumberFFVector</code>( <var class="Arg">v</var>, <var class="Arg">sz</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: an integer</p>

<p>This implements the library operation <code class="func">NumberFFVector</code> (<a href="../../../doc/ref/chap23_mj.html#X872E17FF829DB50F"><span class="RefLink">Reference: NumberFFVector</span></a>). Note that only the case that <var class="Arg">sz</var> is the number of elements in the base field of <var class="Arg">v</var> is implemented. There is an inverse operation called <code class="func">CVecNumber</code> (<a href="chap4.html#X7E055C467B1B54D8"><span class="RefLink">4.5-4</span></a>).</p>

<p><a id="X7E055C467B1B54D8" name="X7E055C467B1B54D8"></a></p>

<h5>4.5-4 CVecNumber</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecNumber</code>( <var class="Arg">nr</var>, <var class="Arg">cl</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVecNumber</code>( <var class="Arg">nr</var>, <var class="Arg">p</var>, <var class="Arg">d</var>, <var class="Arg">l</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Returns: a <code class="code">cvec</code></p>

<p>This is the inverse operation to <code class="func">NumberFFVector</code> (<a href="../../../doc/ref/chap23_mj.html#X872E17FF829DB50F"><span class="RefLink">Reference: NumberFFVector</span></a>). Of course, the base field of the vector and its length has to be specified, either by giving a <code class="code">cvecclass</code> <var class="Arg">cl</var> or the parameters <var class="Arg">p</var>, <var class="Arg">d</var>, and <var class="Arg">l</var>. For both cases corresponding methods are available.</p>

<p><a id="X853A85AE878B0CBF" name="X853A85AE878B0CBF"></a></p>

<h4>4.6 <span class="Heading">Access to the base field</span></h4>

<p><a id="X854192428704857E" name="X854192428704857E"></a></p>

<h5>4.6-1 BaseDomain</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BaseDomain</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the base field of <var class="Arg">v</var></p>

<p>For a <code class="code">cvec</code> <var class="Arg">v</var> this returns the <strong class="pkg">GAP</strong> object <code class="code">GF(p,d)</code>.</p>

<p><a id="X842335E47DC49702" name="X842335E47DC49702"></a></p>

<h5>4.6-2 BaseField</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ BaseField</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the base field of <var class="Arg">v</var></p>

<p>For a <code class="code">cvec</code> <var class="Arg">v</var> this returns the <strong class="pkg">GAP</strong> object <code class="code">GF(p,d)</code>.</p>

<p><a id="X81B99EEC7C134213" name="X81B99EEC7C134213"></a></p>

<h5>4.6-3 Characteristic</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ Characteristic</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the characteristic of the base field of <var class="Arg">v</var></p>

<p>Returns the characteristic of the base field of <var class="Arg">v</var> (see <code class="func">BaseField</code> (<a href="chap4.html#X842335E47DC49702"><span class="RefLink">4.6-2</span></a>)).</p>

<p><a id="X81E3BBBB80096DC2" name="X81E3BBBB80096DC2"></a></p>

<h5>4.6-4 DegreeFFE</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ DegreeFFE</code>( <var class="Arg">v</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: the degree of the base field of <var class="Arg">v</var> over its prime field</p>

<p>Returns the degree of the base field of <var class="Arg">v</var> over its prime field (see <code class="func">BaseField</code> (<a href="chap4.html#X842335E47DC49702"><span class="RefLink">4.6-2</span></a>)).</p>

<p><a id="X823EFBDB7ED49554" name="X823EFBDB7ED49554"></a></p>

<h4>4.7 <span class="Heading">Hashing techniques for <code class="code">cvec</code>s</span></h4>

<p><a id="X7F0228A18327F87D" name="X7F0228A18327F87D"></a></p>

<h5>4.7-1 CVEC_HashFunctionForCVecs</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ CVEC_HashFunctionForCVecs</code>( <var class="Arg">v</var>, <var class="Arg">data</var> )</td><td class="tdright">( function )</td></tr></table></div>
<p>Returns: an integer hash value</p>

<p>This is a hash function usable for the <code class="func">ChooseHashFunction</code> (<a href="../../../pkg/orb/doc/chap4_mj.html#X7ACED4FB7C971A5A"><span class="RefLink">orb: ChooseHashFunction</span></a>) framework. It takes as arguments a <code class="code">cvec</code> <var class="Arg">v</var> and a list <var class="Arg">data</var> of length <span class="SimpleMath">2</span>. The first entry of <var class="Arg">data</var> is the length of the hash table used and the second entry is the number of bytes looked at in the <code class="code">cvec</code>.</p>

<p><a id="X82C8DE4C78B80B1E" name="X82C8DE4C78B80B1E"></a></p>

<h5>4.7-2 ChooseHashFunction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">‣ ChooseHashFunction</code>( <var class="Arg">v</var>, <var class="Arg">hashlen</var> )</td><td class="tdright">( method )</td></tr></table></div>
<p>Returns: a record describing a hash function</p>

<p>Chooses a hash function to store <code class="code">cvec</code>s like <var class="Arg">v</var> in a hash table of length <var class="Arg">hashlen</var>. The return value is a record with components <code class="code">func</code> and <code class="code">data</code> bound to <code class="func">CVEC_HashFunctionForCVecs</code> (<a href="chap4.html#X7F0228A18327F87D"><span class="RefLink">4.7-1</span></a>) and a list of length <span class="SimpleMath">2</span> to be given as a second argument to <code class="func">CVEC_HashFunctionForCVecs</code> (<a href="chap4.html#X7F0228A18327F87D"><span class="RefLink">4.7-1</span></a>). This allows to use <code class="code">cvec</code>s in the <code class="func">ChooseHashFunction</code> (<a href="../../../pkg/orb/doc/chap4_mj.html#X7ACED4FB7C971A5A"><span class="RefLink">orb: ChooseHashFunction</span></a>) framework.</p>


<div class="chlinkprevnextbot"> <a href="chap0.html">[Top of Book]</a>   <a href="chap0.html#contents">[Contents]</a>    <a href="chap3.html">[Previous Chapter]</a>    <a href="chap5.html">[Next Chapter]</a>   </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="https://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>

100%


¤ Dauer der Verarbeitung: 0.45 Sekunden  ¤

*© Formatika GbR, Deutschland






Wurzel

Suchen

Beweissystem der NASA

Beweissystem Isabelle

NIST Cobol Testsuite

Cephes Mathematical Library

Wiener Entwicklungsmethode

Haftungshinweis

Die Informationen auf dieser Webseite wurden nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit, noch Qualität der bereit gestellten Informationen zugesichert.

Bemerkung:

Die farbliche Syntaxdarstellung ist noch experimentell.