File: ch05s06.html

package info (click to toggle)
genius 1.0.27-1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm, sid, trixie
  • size: 25,308 kB
  • sloc: ansic: 75,620; xml: 71,565; sh: 4,445; makefile: 1,927; lex: 523; yacc: 298; perl: 54
file content (28 lines) | stat: -rw-r--r-- 4,406 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><title>Evaluación modular</title><meta name="generator" content="DocBook XSL Stylesheets Vsnapshot"><link rel="home" href="index.html" title="Manual de Genius"><link rel="up" href="ch05.html" title="Chapter 5. Conceptos de GEL"><link rel="prev" href="ch05s05.html" title="Comentarios"><link rel="next" href="ch05s07.html" title="Lista de operadores GEL"></head><body bgcolor="white" text="black" link="#0000FF" vlink="#840084" alink="#0000FF"><div class="navheader"><table width="100%" summary="Navigation header"><tr><th colspan="3" align="center">Evaluación modular</th></tr><tr><td width="20%" align="left"><a accesskey="p" href="ch05s05.html">Prev</a> </td><th width="60%" align="center">Chapter 5. Conceptos de GEL</th><td width="20%" align="right"> <a accesskey="n" href="ch05s07.html">Next</a></td></tr></table><hr></div><div class="sect1"><div class="titlepage"><div><div><h2 class="title" style="clear: both"><a name="genius-gel-modular-evaluation"></a>Evaluación modular</h2></div></div></div><p>Genius implementa aritmética modular. Para usarla, simplemente añada «mod &lt;entero&gt;» después de la expresión. Ejemplo: <strong class="userinput"><code>2^(5!) * 3^(6!) mod 5</code></strong> Podría ser posible realizar aritmética modular trabajando con enteros y aplicando el módulo al final con el operador <code class="literal">%</code>, que simplemente devuelve el resto, pero puede requerir más tiempo o ser imposible cuando se trabaja con valores muy elevados. Por ejemplo <strong class="userinput"><code>10^(10^10) % 6</code></strong> puede que no funcione (el exponente es demasiado grande), sin embargo <strong class="userinput"><code>10^(10^10) mod 6</code></strong> es instantáneo. La primera expresión primero intenta calcular el entero <strong class="userinput"><code>10^(10^10)</code></strong> y luego el resto de la división por 6, mientras que la segunda expresión calcula el módulo 6 de todo primero que nada.</p><p lang="en">
	      The inverses of numbers mod some integer are computed by writing them as
rational numbers (as long as the desired inverse exists, of course).
Examples:
</p><pre lang="en" class="programlisting">10^-1 mod 101
1/10 mod 101</pre><p lang="en">
Modular evaluation also works with matrices including taking inverses,
powers, and dividing.
Example:
</p><pre lang="en" class="programlisting">A = [1,2;3,4]
B = A^-1 mod 5
A*B mod 5</pre><p lang="en">
This should yield the identity matrix as B will be the inverse of A mod 5.
      </p><p lang="en">
Some functions such as
<a class="link" href="ch11s05.html#gel-function-sqrt"><code class="function">sqrt</code></a> or
<a class="link" href="ch11s05.html#gel-function-log"><code class="function">log</code></a>
work in a different way when in modulo mode.  These will then work like their
discrete versions working within the ring of integers you selected.  For
example:
</p><pre lang="en" class="programlisting">genius&gt; sqrt(4) mod 7
=
[2, 5]
genius&gt; 2*2 mod 7
= 4</pre><p lang="en">
	<code class="function">sqrt</code> will actually return all the possible square
	roots.
      </p><p>No concatene operadores mod, solo colóquelos al final del cálculo, todos los cálculos en la expresión que está a la izquierda se llevarán a cabo bajo aritmética mod. Si coloca un operador mod dentro de un mod seguramente obtendrá resultados inesperados. Si solo quiere aplicar mod a un único número y controlar cuándo se toma el resto, es mejor utilizar el operador <code class="literal">%</code>. Cuando necesita concatenar varias expresiones en una aritmética modular con diferentes divisores, lo mejor es simplemente dividir la expresión en varias y usar variables temporales para evitar un mod dentro de un mod.</p></div><div class="navfooter"><hr><table width="100%" summary="Navigation footer"><tr><td width="40%" align="left"><a accesskey="p" href="ch05s05.html">Prev</a> </td><td width="20%" align="center"><a accesskey="u" href="ch05.html">Up</a></td><td width="40%" align="right"> <a accesskey="n" href="ch05s07.html">Next</a></td></tr><tr><td width="40%" align="left" valign="top">Comentarios </td><td width="20%" align="center"><a accesskey="h" href="index.html">Home</a></td><td width="40%" align="right" valign="top"> Lista de operadores GEL</td></tr></table></div></body></html>