@c Language: Brazilian Portuguese, Encoding: iso-8859-1
@c /Number.texi/1.23/Sat Jun  2 00:12:58 2007/-ko/
@c end concepts Number Theory
@menu
* Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Teoria dos N@'{u}meros::  
@end menu

@node Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Teoria dos N@'{u}meros,  , Teoria dos N@'{u}meros, Teoria dos N@'{u}meros
@section Fun@value{cedilha}@~{o}es e Vari@'{a}veis Definidas para Teoria dos N@'{u}meros

@deffn {Fun@value{cedilha}@~{a}o} bern (@var{n})
Retorna o @var{n}'@'{e}simo n@'{u}mero de Bernoulli para o inteiro @var{n}.
@c WELL, ACTUALLY bern SIMPLIFIES, LIKE FACTORIAL -- DO WE WANT TO GET INTO THAT ???
@c OR JUST PRETEND IT'S "RETURNED" ???
N@'{u}meros de Bernoulli iguais a zero s@~{a}o suprimidos se @code{zerobern} for @code{false}.

Veja tamb@'{e}m @code{burn}.

@example
(%i1) zerobern: true$
(%i2) map (bern, [0, 1, 2, 3, 4, 5, 6, 7, 8]);
                  1  1       1      1        1
(%o2)       [1, - -, -, 0, - --, 0, --, 0, - --]
                  2  6       30     42       30
(%i3) zerobern: false$
(%i4) map (bern, [0, 1, 2, 3, 4, 5, 6, 7, 8]);
            1  1    1   5     691   7    3617  43867
(%o4) [1, - -, -, - --, --, - ----, -, - ----, -----]
            2  6    30  66    2730  6    510    798
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} bernpoly (@var{x}, @var{n})
Retorna o @var{n}'@'{e}simo polin@^{o}mio de Bernoulli na
vari@'{a}vel @var{x}.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} bfzeta (@var{s}, @var{n})
Retorna a fun@value{cedilha}@~{a}o zeta de Riemann para o argumento @var{s}.
O valor de retorno @'{e} um grande inteiro em ponto flutuante (bfloat);
@var{n} @'{e} o n@'{u}mero de d@'{i}gitos no valor de retorno.

@code{load ("bffac")} chama essa fun@value{cedilha}@~{a}o.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} bfhzeta (@var{s}, @var{h}, @var{n})
Retorna a fun@value{cedilha}@~{a}o zeta de Hurwitz para os argumentos @var{s} e @var{h}.
O valor de retorno @'{e} um grande inteiro em ponto flutuante (bfloat);
@var{n} @'{e} o n@'{u}meros de d@'{i}gitos no valor de retorno.

A fun@value{cedilha}@~{a}o zeta de Hurwitz @'{e} definida como

@example
sum ((k+h)^-s, k, 0, inf)
@end example

@code{load ("bffac")} chama essa fun@value{cedilha}@~{a}o.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} binomial (@var{x}, @var{y})
O coeficiente binomial @code{@var{x}!/(@var{y}! (@var{x} - @var{y})!)}.
Se @var{x} e @var{y} forem inteiros, ent@~{a}o o valor num@'{e}rico do coeficiente
binomial @'{e} calculado.
Se @var{y}, ou @var{x - y}, for um inteiro,
o the coeficiente binomial @'{e} expresso como um polin@^{o}mio.

Exemplos:

@c ===beg===
@c binomial (11, 7);
@c 11! / 7! / (11 - 7)!;
@c binomial (x, 7);
@c binomial (x + 7, x);
@c binomial (11, y);
@c ===end===
@example
(%i1) binomial (11, 7);
(%o1)                          330
(%i2) 11! / 7! / (11 - 7)!;
(%o2)                          330
(%i3) binomial (x, 7);
        (x - 6) (x - 5) (x - 4) (x - 3) (x - 2) (x - 1) x
(%o3)   -------------------------------------------------
                              5040
(%i4) binomial (x + 7, x);
      (x + 1) (x + 2) (x + 3) (x + 4) (x + 5) (x + 6) (x + 7)
(%o4) -------------------------------------------------------
                               5040
(%i5) binomial (11, y);
(%o5)                    binomial(11, y)
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} burn (@var{n})
Retorna o @var{n}'@'{e}simo n@'{u}mero de Bernoulli para o inteiro @var{n}.
@code{burn} pode ser mais eficitente que @code{bern} para valores grandes e isolados de @var{n}
(talvez @var{n} maior que 105 ou algo parecido), @c CLAIM MADE IN bffac.usg !!!
como @code{bern} calcula todos os n@'{u}meros de Bernoulli at@'{e} o @'{i}ndice @var{n} antes de retornar.

@c STATEMENTS ABOUT TIMING NEED VERIFICATION !!!
@c CAN'T VERIFY NOW AS burn IS BROKEN IN 5.9.1 AND CVS BUILD AT PRESENT !!!
@c (BERN(402) takes about 645 secs vs 13.5 secs for BURN(402).
@c The time to compute @code{bern} is approximately exponential,
@c while the time to compute @code{burn} is approximately cubic.
@c But if next you do BERN(404), it only takes 12 secs,
@c since BERN remembers all in an array, whereas BURN(404) will take
@c maybe 14 secs or maybe 25, depending on whether Maxima needs to
@c BFLOAT a better value of %PI.)

@code{burn} explora a observa@value{cedilha}@~{a}o que n@'{u}meros de Bernoulli (racionais) podem ser
aproximados atrav@'{e}s de zetas (transcendentes) com efici@^{e}ncia toler@'{a}vel.

@code{load ("bffac")} chama essa fun@value{cedilha}@~{a}o.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} cf (@var{expr})
Converte @var{expr} em uma fra@value{cedilha}@~{a}o cont@'{i}nua.
@var{expr} @'{e} uma express@~{a}o
compreendendo fra@value{cedilha}@~{o}es cont@'{i}nuas e ra@'{i}zes quadradas de inteiros.
Operandos na express@~{a}o podem ser combinados com operadores aritm@'{e}ticos.
Com excess@~{a}o de fra@value{cedilha}@~{o}es cont@'{i}nuas e ra@'{i}zes quadradas,
fatores na express@~{a}o devem ser n@'{u}meros inteiros ou racionais.
Maxima n@~{a}o conhece opera@value{cedilha}@~{o}es sobre fra@value{cedilha}@~{o}es cont@'{i}nuas fora de @code{cf}.

@code{cf} avalia seus argumentos ap@'{o}s associar @code{listarith} a @code{false}.
@code{cf} retorna uma fra@value{cedilha}@~{a}o cont@'{i}nua, representada como uma lista.

Uma fra@value{cedilha}@~{a}o cont@'{i}nua @code{a + 1/(b + 1/(c + ...))}
@'{e} representada atrav@'{e}s da lista @code{[a, b, c, ...]}.
Os elementos da lista @code{a}, @code{b}, @code{c}, ... devem avaliar para inteiros. 
@var{expr} pode tamb@'{e}m conter @code{sqrt (n)} onde @code{n} @'{e} um inteiro.
Nesse caso @code{cf} fornecer@'{a} tantos
termos de fra@value{cedilha}@~{a}o cont@'{i}nua quantos forem o valor da vari@'{a}vel
@code{cflength} vezes o per@'{i}odo.

Uma fra@value{cedilha}@~{a}o cont@'{i}nua pode ser avaliada para um n@'{u}mero
atrav@'{e}s de avalia@value{cedilha}@~{a}o da representa@value{cedilha}@~{a}o aritm@'{e}tica
retornada por @code{cfdisrep}.
Veja tamb@'{e}m @code{cfexpand} para outro caminho para avaliar uma fra@value{cedilha}@~{a}o cont@'{i}nua.

Veja tamb@'{e}m @code{cfdisrep}, @code{cfexpand}, e @code{cflength}.

Exemplos:

@itemize @bullet
@item
@var{expr} @'{e} uma express@~{a}o compreendendo fra@value{cedilha}@~{o}es cont@'{i}nuas e ra@'{i}zes quadradas de inteiros.

@example
(%i1) cf ([5, 3, 1]*[11, 9, 7] + [3, 7]/[4, 3, 2]);
(%o1)               [59, 17, 2, 1, 1, 1, 27]
(%i2) cf ((3/17)*[1, -2, 5]/sqrt(11) + (8/13));
(%o2)        [0, 1, 1, 1, 3, 2, 1, 4, 1, 9, 1, 9, 2]
@end example

@item
@code{cflength} controla quantos per@'{i}odos de fra@value{cedilha}@~{a}o cont@'{i}nua
s@~{a}o computados para n@'{u}meros alg@'{e}bricos, n@'{u}meros irracionais.

@example
(%i1) cflength: 1$
(%i2) cf ((1 + sqrt(5))/2);
(%o2)                    [1, 1, 1, 1, 2]
(%i3) cflength: 2$
(%i4) cf ((1 + sqrt(5))/2);
(%o4)               [1, 1, 1, 1, 1, 1, 1, 2]
(%i5) cflength: 3$
(%i6) cf ((1 + sqrt(5))/2);
(%o6)           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2]
@end example

@item
Um fra@value{cedilha}@~{a}o cont@'{i}nua pode ser avaliado atrav@'{e}s da avalia@value{cedilha}@~{a}o da representa@value{cedilha}@~{a}o aritm@'{e}tica
retornada por @code{cfdisrep}.

@example
(%i1) cflength: 3$
(%i2) cfdisrep (cf (sqrt (3)))$
(%i3) ev (%, numer);
(%o3)                   1.731707317073171
@end example

@item
Maxima n@~{a}o conhece opera@value{cedilha}@~{o}es sobre fra@value{cedilha}@~{o}es cont@'{i}nuas fora de @code{cf}.

@example
(%i1) cf ([1,1,1,1,1,2] * 3);
(%o1)                     [4, 1, 5, 2]
(%i2) cf ([1,1,1,1,1,2]) * 3;
(%o2)                  [3, 3, 3, 3, 3, 6]
@end example

@end itemize
@end deffn

@c NEEDS CLARIFICATION -- MAKE EXPLICIT HOW list IS RELATED TO a, b, c, ...
@c ALSO, CAN list CONTAIN ANYTHING OTHER THAN LITERAL INTEGERS ??
@deffn {Fun@value{cedilha}@~{a}o} cfdisrep (@var{list})
Constr@'{o}i e retorna uma express@~{a}o aritm@'{e}tica comum
da forma @code{a + 1/(b + 1/(c + ...))}
a partir da representa@value{cedilha}@~{a}o lista de uma fra@value{cedilha}@~{a}o cont@'{i}nua @code{[a, b, c, ...]}.

@example
(%i1) cf ([1, 2, -3] + [1, -2, 1]);
(%o1)                     [1, 1, 1, 2]
(%i2) cfdisrep (%);
                                  1
(%o2)                     1 + ---------
                                    1
                              1 + -----
                                      1
                                  1 + -
                                      2
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} cfexpand (@var{x})
Retorna uma matriz de numeradores e denominadores dos
@'{u}ltimo (columa 1) e pen@'{u}ltimo (columa 2) convergentes da fra@value{cedilha}@~{a}o cont@'{i}nua @var{x}.

@example
(%i1) cf (rat (ev (%pi, numer)));

`rat' replaced 3.141592653589793 by 103993/33102 = 3.141592653011902
(%o1)                  [3, 7, 15, 1, 292]
(%i2) cfexpand (%); 
                         [ 103993  355 ]
(%o2)                    [             ]
                         [ 33102   113 ]
(%i3) %[1,1]/%[2,1], numer;
(%o3)                   3.141592653011902
@end example

@end deffn

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} cflength
Valor padr@~{a}o: 1

@code{cflength} controla o n@'{u}mero de termos da fra@value{cedilha}@~{a}o
cont@'{i}nua que a fun@value{cedilha}@~{a}o @code{cf} fornecer@'{a}, como o valor de @code{cflength} vezes o
per@'{i}odo.  Dessa forma o padr@~{a}o @'{e} fornecer um per@'{i}odo.

@example
(%i1) cflength: 1$
(%i2) cf ((1 + sqrt(5))/2);
(%o2)                    [1, 1, 1, 1, 2]
(%i3) cflength: 2$
(%i4) cf ((1 + sqrt(5))/2);
(%o4)               [1, 1, 1, 1, 1, 1, 1, 2]
(%i5) cflength: 3$
(%i6) cf ((1 + sqrt(5))/2);
(%o6)           [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 2]
@end example

@end defvr

@deffn {Fun@value{cedilha}@~{a}o} divsum (@var{n}, @var{k})
@deffnx {Fun@value{cedilha}@~{a}o} divsum (@var{n})

@code{divsum (@var{n}, @var{k})} retorna a adi@value{cedilha}@~{a}o dos divisores de @var{n}
elevados @`a @var{k}'@'{e}sima pot@^{e}ncia.

@code{divsum (@var{n})} retorna a adi@value{cedilha}@~{a}o dos divisores de @var{n}.

@example
(%i1) divsum (12);
(%o1)                          28
(%i2) 1 + 2 + 3 + 4 + 6 + 12;
(%o2)                          28
(%i3) divsum (12, 2);
(%o3)                          210
(%i4) 1^2 + 2^2 + 3^2 + 4^2 + 6^2 + 12^2;
(%o4)                          210
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} euler (@var{n})
Retorna o @var{n}'@'{e}simo n@'{u}mero de Euler para o inteiro @var{n} n@~{a}o negativo.

Para a constante de Euler-Mascheroni, veja @code{%gamma}.

@example
(%i1) map (euler, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
(%o1)    [1, 0, - 1, 0, 5, 0, - 61, 0, 1385, 0, - 50521]
@end example

@end deffn

@defvr {Constante} %gamma
@ifinfo
@vrindex Constante de Euler-Mascheroni
@end ifinfo
A constante de Euler-Mascheroni, 0.5772156649015329 ....
@c DOUBTLESS THERE IS MORE TO SAY HERE.

@end defvr

@deffn {Fun@value{cedilha}@~{a}o} factorial (@var{x})
Representa a fun@value{cedilha}@~{a}o fatorial. Maxima trata @code{factorial (@var{x})} da mesma forma que @code{@var{x}!}.
Veja @code{!}.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} fib (@var{n})
Retorna o @var{n}'@'{e}simo n@'{u}mero de Fibonacci.
@code{fib(0)} igual a 0 e @code{fib(1)} igual a 1,
e
@code{fib (-@var{n})} igual a @code{(-1)^(@var{n} + 1) * fib(@var{n})}.

Ap@'{o}s chamar @code{fib},
@code{prevfib} @'{e} iguala @code{fib (@var{x} - 1)},
o n@'{u}mero de Fibonacci anterior ao @'{u}ltimo calculado.

@example
(%i1) map (fib, [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10]);
(%o1)         [0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55]
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} fibtophi (@var{expr})
Expressa n@'{u}meros de Fibonacci que aparecem em @var{expr} em termos da constante @code{%phi},
que @'{e} @code{(1 + sqrt(5))/2}, aproximadamente 1.61803399.

Exemplos:
 
@c ===beg===
@c fibtophi (fib (n));
@c fib (n-1) + fib (n) - fib (n+1);
@c fibtophi (%);
@c ratsimp (%);
@c ===end===

@example
(%i1) fibtophi (fib (n));
                           n             n
                       %phi  - (1 - %phi)
(%o1)                  -------------------
                           2 %phi - 1
(%i2) fib (n-1) + fib (n) - fib (n+1);
(%o2)          - fib(n + 1) + fib(n) + fib(n - 1)
(%i3) fibtophi (%);
            n + 1             n + 1       n             n
        %phi      - (1 - %phi)        %phi  - (1 - %phi)
(%o3) - --------------------------- + -------------------
                2 %phi - 1                2 %phi - 1
                                          n - 1             n - 1
                                      %phi      - (1 - %phi)
                                    + ---------------------------
                                              2 %phi - 1
(%i4) ratsimp (%);
(%o4)                           0
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} ifactors (@var{n})
Para um inteiro positivo @var{n} retorna a fatora@value{cedilha}@~{a}o de @var{n}. Se
@code{n=p1^e1..pk^nk} for a decomposi@value{cedilha}@~{a}o de @var{n} em fatores
primos, @code{ifactors} retorna @code{[[p1, e1], ... , [pk, ek]]}.

Os m@'{e}todos de fatora@value{cedilha}@~{a}o usados s@~{a}o divis@~{o}es triviais por primos at@'{e} 9973,
o m@'{e}todo rho de Pollard e o m@'{e}todo da curva el@'{i}ptica.

@example
(%i1) ifactors(51575319651600);
(%o1)     [[2, 4], [3, 2], [5, 2], [1583, 1], [9050207, 1]]
(%i2) apply("*", map(lambda([u], u[1]^u[2]), %));
(%o2)                        51575319651600
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} inrt (@var{x}, @var{n})
Retorna a parte inteira da @var{n}'@'{e}sima ra@'{i}z do valor absoluto de @var{x}.

@example
(%i1) l: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]$
(%i2) map (lambda ([a], inrt (10^a, 3)), l);
(%o2) [2, 4, 10, 21, 46, 100, 215, 464, 1000, 2154, 4641, 10000]
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} inv_mod (@var{n}, @var{m})
Calcula o  inverso de @var{n} m@'{o}dulo @var{m}. 
@code{inv_mod (n,m)} retorna @code{false}, 
se @var{n} modulo @var{m} for zero.

@example
(%i1) inv_mod(3, 41);
(%o1)                           14
(%i2) ratsimp(3^-1), modulus=41;
(%o2)                           14
(%i3) inv_mod(3, 42);
(%o3)                          false
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} jacobi (@var{p}, @var{q})
Retorna s@'{i}mbolo de Jacobi de @var{p} e @var{q}.

@example
(%i1) l: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]$
(%i2) map (lambda ([a], jacobi (a, 9)), l);
(%o2)         [1, 1, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0]
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} lcm (@var{expr_1}, ..., @var{expr_n})
Retorna o menor m@'{u}ltiplo comum entre seus argumentos.
Os argumentos podem ser express@~{o}es gerais tamb@'{e}m inteiras.

@code{load ("functs")} chama essa fun@value{cedilha}@~{a}o.

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} minfactorial (@var{expr})
Examina @var{expr} procurando por ocorr@^{e}ncias de dois fatoriais
que diferem por um inteiro.  
@code{minfactorial} ent@~{a}o converte um em um polin@^{o}mio vezes o outro.

@c I CAN'T TELL WHAT THIS IS SUPPOSED TO MEAN. !!!
@c minfactorial DOESN'T SEEM TO DO ANYTHING binomial DOESN'T DO BY ITSELF !!!
@c LOOKING AT THE minfactorial CODE DOESN'T HELP !!!
@c If exp involves binomial coefficients then they will be
@c converted into ratios of factorials.

@example
(%i1) n!/(n+2)!;
                               n!
(%o1)                       --------
                            (n + 2)!
(%i2) minfactorial (%);
                                1
(%o2)                    ---------------
                         (n + 1) (n + 2)
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} next_prime (@var{n})
Retorna o menor primo maior que @var{n}.

@example
(%i1) next_prime(27);
(%o1)                       29
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} partfrac (@var{expr}, @var{var})
Expande a express@~{a}o @var{expr} em fra@value{cedilha}@~{o}es parciais
com rela@value{cedilha}@~{a}o @`a vari@'{a}vel principal @var{var}.  @code{partfrac} faz uma decomposi@value{cedilha}@~{a}o
completa de fra@value{cedilha}@~{a}o parcial.  O algor@'{i}tmo utilizado @'{e} baseado no
fato que os denominadores de uma expans@~{a}o de fra@value{cedilha}@~{a}o parcial (os
fatores do denominador original) s@~{a}o relativamente primos.  Os
numeradores podem ser escritos como combina@value{cedilha}@~{a}o linear dos denominadores, e
a expans@~{a}o acontece.

@example
(%i1) 1/(1+x)^2 - 2/(1+x) + 2/(2+x);
                      2       2        1
(%o1)               ----- - ----- + --------
                    x + 2   x + 1          2
                                    (x + 1)
(%i2) ratsimp (%);
                                 x
(%o2)                 - -------------------
                         3      2
                        x  + 4 x  + 5 x + 2
(%i3) partfrac (%, x);
                      2       2        1
(%o3)               ----- - ----- + --------
                    x + 2   x + 1          2
                                    (x + 1)
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} power_mod (@var{a}, @var{n}, @var{m})
Usa um algor@'{i}tmo modular para calcular @code{a^n mod m} 
onde @var{a} e @var{n} s@~{a}o inteiros e @var{m} @'{e} um inteiro positivo. 
Se @var{n} for negativo, @code{inv_mod} @'{e} usada para encontrar o inverso modular.

@example
(%i1) power_mod(3, 15, 5);
(%o1)                          2
(%i2) mod(3^15,5);
(%o2)                          2
(%i3) power_mod(2, -1, 5);
(%o3)                          3
(%i4) inv_mod(2,5);
(%o4)                          3
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} primep (@var{n})
Teste de primalidade. Se @code{primep (n)} retornar @code{false}, @var{n} @'{e} um
n@'{u}mero compostro e se esse teste retornar @code{true}, @var{n} @'{e} um n@'{u}mero primo
com grande probabilidade.

Para @var{n} menor que 341550071728321 uma vers@~{a}o deterministra do teste de 
Miller-Rabin @'{e} usada. Se @code{primep (n)} retornar @code{true}, ent@~{a}o @var{n} @'{e} um
n@'{u}mero primo.

Para @var{n} maior que 34155071728321 @code{primep} usa
@code{primep_number_of_tests} que @'{e} os testes de pseudo-primalidade de Miller-Rabin
e um teste de pseudo-primalidade de Lucas. A probabilidade que @var{n} ir@'{a}
passar por um teste de Miller-Rabin @'{e} menor que 1/4. Usando o valor padr@~{a}o 25 para
@code{primep_number_of_tests}, a probabilidade de @var{n} passar no teste sendo
composto @'{e} muito menor que 10^-15.

@end deffn

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} primep_number_of_tests
Valor padr@~{a}o: 25

N@'{u}mero de testes de Miller-Rabin usados em @code{primep}.
@end defvr

@deffn {Fun@value{cedilha}@~{a}o} prev_prime (@var{n})
Retorna o maior primo menor que @var{n}.

@example
(%i1) prev_prime(27);
(%o1)                       23
@end example
@end deffn

@deffn {Fun@value{cedilha}@~{a}o} qunit (@var{n})
Retorna a principal unidade do campo dos n@'{u}meros quadr@'{a}ticos reais
@code{sqrt (@var{n})} onde @var{n} @'{e} um inteiro,
i.e., o elemento cuja norma @'{e} unidade.
Isso @'{e} importante para resolver a equa@value{cedilha}@~{a}o de Pell @code{a^2 - @var{n} b^2 = 1}.

@example
(%i1) qunit (17);
(%o1)                     sqrt(17) + 4
(%i2) expand (% * (sqrt(17) - 4));
(%o2)                           1
@end example

@end deffn

@deffn {Fun@value{cedilha}@~{a}o} totient (@var{n})
Retorna o n@'{u}mero de inteiros menores que ou iguais a @var{n} que
s@~{a}o relativamente primos com @var{n}.

@end deffn

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} zerobern
Valor padr@~{a}o: @code{true}

Quando @code{zerobern} for @code{false},
@code{bern} exclui os n@'{u}meros de Bernoulli que forem iguais a zero. 
Veja @code{bern}.

@end defvr

@deffn {Fun@value{cedilha}@~{a}o} zeta (@var{n})
Retorna a fun@value{cedilha}@~{a}o zeta de Riemann se @var{x} for um inteiro negativo, 0, 1,
ou n@'{u}mero par positivo,
e retorna uma forma substantiva @code{zeta (@var{n})} para todos os outros argumentos,
incluindo n@~{a}o inteiros racionais, ponto flutuante, e argumentos complexos.

Veja tamb@'{e}m @code{bfzeta} e @code{zeta%pi}.

@example
(%i1) map (zeta, [-4, -3, -2, -1, 0, 1, 2, 3, 4, 5]);
                                     2              4
           1        1     1       %pi            %pi
(%o1) [0, ---, 0, - --, - -, inf, ----, zeta(3), ----, zeta(5)]
          120       12    2        6              90
@end example

@end deffn

@defvr {Vari@'{a}vel de op@value{cedilha}@~{a}o} zeta%pi
Valor padr@~{a}o: @code{true}

Quando @code{zeta%pi} for @code{true}, @code{zeta} retorna uma express@~{a}o
proporcional a @code{%pi^n} para inteiro par @code{n}.
De outra forma, @code{zeta} retorna uma forma substantiva @code{zeta (n)}
para inteiro par @code{n}.

@example
(%i1) zeta%pi: true$
(%i2) zeta (4);
                                 4
                              %pi
(%o2)                         ----
                               90
(%i3) zeta%pi: false$
(%i4) zeta (4);
(%o4)                        zeta(4)
@end example

@end defvr
