Use 1//2 instead of ((rat simp) 1 2)
[maxima.git] / doc / info / pt_BR / DataTypes.texi.update
blob5379d794a1a4d2d1f2de3318ac2de3c21e9495c1
1 @c
2 @c versao pt_BR baseada no md5sum abaixo:
3 @c cd5fc72f73b73126c0df537308441a1c  DataTypes.texi
4 @c
5 @menu
6 * Numbers::
7 * Strings::
8 * Constants::
9 * Lists::
10 * Arrays::
11 * Structures::
12 @end menu
14 @c -----------------------------------------------------------------------------
15 @node Numbers, Strings, Data Types and Structures, Data Types and Structures
16 @section Numbers
17 @c -----------------------------------------------------------------------------
19 @menu
20 * Introduction to Numbers::
21 * Functions and Variables for Numbers::
22 @end menu
24 @c -----------------------------------------------------------------------------
25 @node Introduction to Numbers, Functions and Variables for Numbers, Numbers, Numbers
26 @subsection Introduction to Numbers
27 @c -----------------------------------------------------------------------------
29 @c -----------------------------------------------------------------------------
30 @subheading Complex numbers
31 @c -----------------------------------------------------------------------------
33 Uma express@~{a}o complexa @'{e} especificada em Maxima por meio da adi@,{c}@~{a}o da parte real da
34 express@~{a}o a @code{%i} vezes a parte imagin@'{a}ria.  Dessa forma as ra@'{i}zes da
35 equa@,{c}@~{a}o @code{x^2 - 4*x + 13 = 0} s@~{a}o @code{2 + 3*%i} e @code{2 - 3*%i}.
36 Note que simplifica@,{c}@~{a}o de produtos de express@~{o}es complexas pode ser feita atrav@'{e}s da
37 expans@~{a}o do produto.  Simplifica@,{c}@~{a}o de quocientes, ra@'{i}zes, e outras fun@,{c}@~{o}es
38 de express@~{o}es complexas pode usualmente ser acompanhada do uso das fun@,{c}@~{o}es @code{realpart},
39 @code{imagpart}, @code{rectform}, @code{polarform}, @code{abs},
40 @code{carg}.
42 @opencatbox
43 @category{Vari@'{a}veis complexas}
44 @closecatbox
47 @c -----------------------------------------------------------------------------
48 @subheading Floating point numbers
49 @c -----------------------------------------------------------------------------
51 Maxima tem dois tipos de n@'{u}meros em ponto flutuante. O primeiro @'{e} apenas
52 chamado um ``float'' (mas passar@'{a} a se chamar ``float da m@'{a}quina'' de
53 agora em diante nessa se@,{c}@~{a}o para evitar ambiquidade). O ``float da m@'{a}quina'' @'{e} armazenado no
54 no tipo subjacente tipo DOUBLE-FLOAT do lisp que ir@'{a} quase sempre certamente ser
55 o ponto flutuante com precis@~{a}o dupla da IEEE 754. Para digitar um n@'{u}mero em ponto
56 flutuante literal, apenas digite sua expans@~{a}o decimal (por exemplo,
57 @code{0.01}) ou digite esse n@'{u}mer com um expoente expl@'{i}cito (tal como @code{1e-2}
58 ou @code{0.1e-1}).
60 O segundo tipo de n@'{u}mero em ponto flutuante no Maxima @'{e} chamado um
61 ``bigfloat''. Bigfloats s@~{a}o armazenados como uma mantissa e um expoente
62 da mesma forma que ``floats da m@'{a}quina'' mas o expoente @'{e} um inteiro de precis@~{a}o
63 arbitr@'{a}ria, de forma que o ``bigfloat'' pode representar n@'{u}meros
64 arbitrariamente grandes ou arbitr@'{a}riamente pequenos. O
65 usu@'{a}rio pode tamb@'{e}m personalizar a precis@~{a}o do bigfloat aritim@'{e}tico (o que
66 corresponde a mudar o intervalo da mantissa). Veja @mref{fpprec}
67 para mais informa@,{c}@~{a}o. Para digitar um bigfloat literal, use a nota@,{c}@~{a}o de
68 expoente como acima mas com o caractere @code{b} no lugar do
69 @code{e}. O exemplo de @code{0.01} usado acima pode ser informado como um
70 bigfloat com @code{1b-2} ou @code{0.001b0}.
72 C@'{a}lculos usando floats de m@'{a}quina podem ser significativamente mas r@'{a}pidos que
73 os mesmo c@'{a}lculos usando bigfloats uma vez que processadores dos computadores modernos possuem
74 hardware dedicados aos floats de m@'{a}quina. Essa afirma@,{c}@~{a}o @'{e} particularmente verificada quando o c@'{o}digo do Maxima
75 compilado localmente. Todavia, os n@'{u}meros em ponto flutuante de m@'{a}quina posuem o problema do
76 overflow, onde um n@'{u}mero pode tornar-se muito grande para seu expoente ser
77 representado na mem@'{o}ria dispon@'{i}vel. No c@'{o}digo interpretado, o comportamento
78 padr@~{a}o @'{e} que um c@'{a}lculo que pode causar um overflow de ponto
79 flutuante ao inv@'{e}s de gerar um n@'{u}mero bigfloat. Para configurar esse comportamento, veja
80 a vari@'{a}vel @mref{promote_float_to_bigfloat}.
82 @c -----------------------------------------------------------------------------
83 @node Functions and Variables for Numbers,  , Introduction to Numbers, Numbers
84 @subsection Functions and Variables for Numbers
85 @c -----------------------------------------------------------------------------
87 @c -----------------------------------------------------------------------------
88 @anchor{bfloat}
89 @deffn {Fun@,{c}@~{a}o} bfloat (@var{expr})
91 Converte todos os n@'{u}meros e fun@,{c}@~{o}es de n@'{u}meros em @var{expr} para o formato de grandes n@'{u}meros em ponto flutuante.
92 O n@'{u}mero de d@'{i}gitos significativos nos bigfloats resultantes @'{e} especificado pela
93 vari@'{a}vel global @mrefdot{fpprec}
95 Quando @mref{float2bf}
96 for @code{false} uma mensagem de alerta @'{e} mostrada quando
97 um n@'{u}mero em ponto flutuante @'{e} convertido em um n@'{u}mero bigfloat (uma vez que
98 isso pode levar a perda de precis@~{a}o).
100 @opencatbox
101 @category{Avalia@,{c}@~{a}o num@'{e}rica}
102 @closecatbox
103 @end deffn
105 @c -----------------------------------------------------------------------------
106 @anchor{bfloatp}
107 @deffn {Fun@,{c}@~{a}o} bfloatp (@var{expr})
109 Retorna @code{true} se @var{expr} for um n@'{u}mero bigfloat, de outra forma retorna @code{false}.
111 @opencatbox
112 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Fun@,{c}@~{o}es predicado}
113 @closecatbox
114 @end deffn
116 @c --- 03.11.2011 --------------------------------------------------------------
117 @anchor{bftorat}
118 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} bftorat
119 Valor padr@~{a}o: @code{false}
121 A vari@'{a}vel de op@,{c}@~{a}o @code{bftorat} controla a convers@~{a}o de bfloats para n@'{u}meros racionais.  Quando
122 @code{bftorat} for @code{false}, @mref{ratepsilon}
123 ser@'{a} usada para controlar a
124 convers@~{a}o (esse resulta n@'{u}meros racionais relativamente pequenos).  Quando
125 @code{bftorat} for @code{true}, o n@'{u}mero racional gerado representar@'{a} o bfloat
126 de forma precisa.
128 Nota: @code{bftorat} n@~{a}o tem efeito sobre a transforma@,{c}@~{a}o para n@'{u}meros racionais
129 catrav@'{e}s da fun@,{c}@~{a}o @mrefdot{rationalize}
131 Exemplo:
133 @example
134 (%i1) ratepsilon:1e-4;
135 (%o1)                         1.e-4
136 (%i2) rat(bfloat(11111/111111)), bftorat:false;
137 `rat' replaced 9.99990999991B-2 by 1/10 = 1.0B-1
138                                1
139 (%o2)/R/                       --
140                                10
141 (%i3) rat(bfloat(11111/111111)), bftorat:true;
142 `rat' replaced 9.99990999991B-2 by 11111/111111 = 9.99990999991B-2
143                              11111
144 (%o3)/R/                     ------
145                              111111
146 @end example
148 @opencatbox
149 @category{Avalia@,{c}@~{a}o num@'{e}rica}
150 @closecatbox
151 @end defvr
153 @c -----------------------------------------------------------------------------
154 @anchor{bftrunc}
155 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} bftrunc
156 Valor padr@~{a}o: @code{true}
158 A vari@'{a}vel de op@,{c}@~{a}o @code{bftrunc} faz com que zeros @`{a} direita em n@'{u}meros bigfloat diferentes de zero n@~{a}o sejam
159 mostrados.  Dessa forma, se @code{bftrunc} for @code{false}, @code{bfloat (1)}
160 @'{e} mostrado como @code{1.000000000000000B0}.  De outra forma, @code{bfloat (1)} @'{e} mostrado como
161 @code{1.0B0}.
163 @opencatbox
164 @category{Avalia@,{c}@~{a}o num@'{e}rica}
165 @closecatbox
166 @end defvr
168 @c -----------------------------------------------------------------------------
169 @anchor{evenp}
170 @deffn {Fun@,{c}@~{a}o} evenp (@var{expr})
172 Retorna @code{true} se @var{expr} for um inteiro para.
173 @c THIS IS STRANGE -- SHOULD RETURN NOUN FORM IF INDETERMINATE
174 @code{false} @'{e} retornado em todos os outros casos.
176 @opencatbox
177 @category{Fun@,{c}@~{o}es predicado}
178 @closecatbox
179 @end deffn
181 @c -----------------------------------------------------------------------------
182 @anchor{float}
183 @deffn {Fun@,{c}@~{a}o} float (@var{expr})
185 Converte n@'{u}meros inteiros, n@'{u}meros racionais e bigfloats em @var{expr} para n@'{u}meros em
186 ponto flutuante.  Da mesma forma um @mrefcomma{evflag}
187 @code{float} faz com que
188 n@'{u}meros racionais n@~{a}o inteiros e n@'{u}meros bigfloat sejam convertidos para n@'{u}meros em
189 ponto flutuante.
191 @opencatbox
192 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Sinalizadores de avalia@,{c}@~{a}o}
193 @closecatbox
194 @end deffn
196 @c --- 08.10.2010 DK -----------------------------------------------------------
197 @anchor{float2bf}
198 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} float2bf
199 Valor padr@~{a}o: @code{true}
201 Quando @code{float2bf} for @code{false}, uma mensagem de alerta @'{e} mostrada sempre que
202 um n@'{u}mero em ponto flutuante @'{e} convertido em um n@'{u}mero bigfloat (uma vez que
203 isso pode levar a perda de precis@~{a}o).
205 @opencatbox
206 @category{Avalia@,{c}@~{a}o num@'{e}rica}
207 @closecatbox
208 @end defvr
210 @c -----------------------------------------------------------------------------
211 @anchor{floatnump}
212 @deffn {Fun@,{c}@~{a}o} floatnump (@var{expr})
214 Retorna @code{true} se @var{expr} for um n@'{u}mero em ponto flutuante, de outra forma retorna
215 @code{false}.
217 @opencatbox
218 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Fun@,{c}@~{o}es predicado}
219 @closecatbox
220 @end deffn
222 @c -----------------------------------------------------------------------------
223 @anchor{fpprec}
224 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} fpprec
225 Valor padr@~{a}o: 16
227 @code{fpprec} @'{e} o n@'{u}mero de d@'{i}gitos significativos para opera@,{c}@~{o}es aritm@'{e}ticas usando n@'{u}meros
228 bigfloat.  A vari@'{a}vel de op@,{c}@~{a}o @code{fpprec} n@~{a}o afeta c@'{a}lculos computacionais sobre n@'{u}meros comuns
229 em ponto flutuante.
231 Veja tamb@'{e}m @mref{bfloat}
232 e @mrefdot{fpprintprec}
234 @opencatbox
235 @category{Avalia@,{c}@~{a}o num@'{e}rica}
236 @closecatbox
237 @end defvr
239 @c -----------------------------------------------------------------------------
240 @anchor{fpprintprec}
241 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} fpprintprec
242 Valor padr@~{a}o: 0
244 @code{fpprintprec} @'{e} o n@'{u}mero de d@'{i}gitos a serem mostrados na exibi@,{c}@~{a}o de n@'{u}meros
245 comuns em ponto flutuante ou na exibi@,{c}@~{a}o de n@'{u}meros bigfloat.
247 Para n@'{u}meros comuns em ponto flutuante,
248 quando @code{fpprintprec} tiver um valor entre 2 e 16 (inclusive),
249 o n@'{u}mero de d@'{i}gitos mostrados @'{e} igual a @code{fpprintprec}.
250 De outra forma, @code{fpprintprec} @'{e} 0, ou maior que 16,
251 e o n@'{u}mero de d@'{i}gitos mostrados @'{e} 16.
253 Para n@'{u}meros bigfloat,
254 quando @code{fpprintprec} tiver um valor entre 2 e @code{fpprec} (inclusive),
255 o n@'{u}mero de d@'{i}gitos mostrados @'{e} igual a @code{fpprintprec}.
256 De outra forma, @code{fpprintprec} @'{e} 0, ou maior que @code{fpprec},
257 e o n@'{u}mero de d@'{i}gitos mostrados @'{e} igual a @code{fpprec}.
259 Para ambos floats comuns e bigfloats,
260 zeros iniciais s@~{a}o suprimidos.
261 O n@'{u}mero de d@'{i}gitos atuais mostrado @'{e} menor que @code{fpprintprec}
262 se ouverem d@'{i}gitos zeros iniciais.
264 @code{fpprintprec} n@~{a}o pode ser 1.
266 @opencatbox
267 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Sinalizadores e vari@'{a}veis de exibi@,{c}@~{a}o}
268 @closecatbox
269 @end defvr
271 @c -----------------------------------------------------------------------------
272 @anchor{integerp}
273 @deffn {Fun@,{c}@~{a}o} integerp (@var{expr})
275 Retorna @code{true} se @var{expr} for um inteiro num@'{e}rico literal, de outra forma retorna
276 @code{false}.
278 @code{integerp} retorna @code{false} se seu argumento for um s@'{i}mbolo,
279 mesmo se o argumento for declarado inteiro.
281 Exemplos:
283 @example
284 (%i1) integerp (0);
285 (%o1)                         true
286 (%i2) integerp (1);
287 (%o2)                         true
288 (%i3) integerp (-17);
289 (%o3)                         true
290 (%i4) integerp (0.0);
291 (%o4)                         false
292 (%i5) integerp (1.0);
293 (%o5)                         false
294 (%i6) integerp (%pi);
295 (%o6)                         false
296 (%i7) integerp (n);
297 (%o7)                         false
298 (%i8) declare (n, integer);
299 (%o8)                         done
300 (%i9) integerp (n);
301 (%o9)                         false
302 @end example
304 @opencatbox
305 @category{Fun@,{c}@~{o}es predicado}
306 @closecatbox
307 @end deffn
309 @c -----------------------------------------------------------------------------
310 @anchor{m1pbranch}
311 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} m1pbranch
312 Valor padr@~{a}o: @code{false}
314 A vari@'{a}vel de op@,{c}@~{a}o @code{m1pbranch} @'{e} o ramo principal para @code{-1} elevado a um expoente.
315 Quantidade tais como @code{(-1)^(1/3)} (isto @'{e}, um expoente racional com denominador @'{i}mpar) e 
316 @code{(-1)^(1/4)} (isto @'{e}, um expoente racional com denominador par) s@~{a}o tratadas como segue:
318 @c REDRAW THIS AS A TABLE
319 @example
320               dom@'{i}nio:real
321                             
322 (-1)^(1/3):      -1         
323 (-1)^(1/4):   (-1)^(1/4)   
325              dom@'{i}nio:complex
326 m1pbranch:false          m1pbranch:true
327 (-1)^(1/3)               1/2+%i*sqrt(3)/2
328 (-1)^(1/4)              sqrt(2)/2+%i*sqrt(2)/2
329 @end example
331 @opencatbox
332 @category{Express@~{o}es} @category{Global flags}
333 @closecatbox
334 @end defvr
336 @c -----------------------------------------------------------------------------
337 @deffn {Fun@,{c}@~{a}o} nonnegintegerp (@var{n})
339 Retorna @code{true} se e somente se @code{@var{n} >= 0} e @var{n} for um inteiro.
341 @opencatbox
342 @category{Pacote linearalgebra} @category{Fun@,{c}@~{o}es predicado}
343 @closecatbox
344 @end deffn
346 @c -----------------------------------------------------------------------------
347 @anchor{numberp}
348 @deffn {Fun@,{c}@~{a}o} numberp (@var{expr})
350 Retorna @code{true} se @var{expr} for um inteiro literal, n@'{u}mero racional, 
351 n@'{u}mero em ponto flutuante, ou bigfloat, de outra forma retorna @code{false}.
353 A fun@,{c}@~{a}o @code{numberp} retorna @code{false} se seu argumento for um s@'{i}mbolo, mesmo se o
354 argumento for um n@'{u}mero simb@'{o}lico tal como @code{%pi} ou @code{%i}, ou declarado ser
355 @code{even}, @code{odd}, @code{integer}, @code{rational}, @code{irrational},
356 @code{real}, @code{imaginary}, ou @code{complex}.
358 Exemplos:
360 @example
361 (%i1) numberp (42);
362 (%o1)                         true
363 (%i2) numberp (-13/19);
364 (%o2)                         true
365 (%i3) numberp (3.14159);
366 (%o3)                         true
367 (%i4) numberp (-1729b-4);
368 (%o4)                         true
369 (%i5) map (numberp, [%e, %pi, %i, %phi, inf, minf]);
370 (%o5)      [false, false, false, false, false, false]
371 (%i6) declare (a, even, b, odd, c, integer, d, rational,
372      e, irrational, f, real, g, imaginary, h, complex);
373 (%o6)                         done
374 (%i7) map (numberp, [a, b, c, d, e, f, g, h]);
375 (%o7) [false, false, false, false, false, false, false, false]
376 @end example
378 @opencatbox
379 @category{Fun@,{c}@~{o}es predicado}
380 @closecatbox
381 @end deffn
383 @c NEEDS CLARIFICATION, EXAMPLES
384 @c WHAT ARE THE FUNCTIONS WHICH ARE EVALUATED IN FLOATING POINT ??
385 @c WHAT IS A "NUMERVAL" ?? (SOMETHING DIFFERENT FROM A NUMERIC VALUE ??)
386 @c NEED TO MENTION THIS IS AN evflag
388 @c -----------------------------------------------------------------------------
389 @anchor{numer}
390 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} numer
392 A vari@'{a}vel de op@,{c}@~{a}o @code{numer} faz com que algumas fun@,{c}@~{o}es matem@'{a}ticas (incluindo exponencia@,{c}@~{a}o)
393 com argumentos num@'{e}ricos sejam tratadas como n@'{u}meros em ponto flutuante.  A vari@'{a}vel de op@,{c}@~{a}o @code{numer} faz com que
394 vari@'{a}veis em @code{expr} que resultem em n@'{u}meros sejam substitu@'{i}das pelos
395 seus valores.  A vari@'{a}vel de op@,{c}@~{a}o @code{numer} tamb@'{e}m ajusta o comutador @mref{float}
396 para "on".
398 Veja tamb@'{e}m @mrefdot{%enumer}
400 Exemplos:
402 @c ===beg===
403 @c [sqrt(2), sin(1), 1/(1+sqrt(3))];
404 @c [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
405 @c ===end===
406 @example
407 (%i1) [sqrt(2), sin(1), 1/(1+sqrt(3))];
408                                         1
409 (%o1)            [sqrt(2), sin(1), -----------]
410                                    sqrt(3) + 1
411 (%i2) [sqrt(2), sin(1), 1/(1+sqrt(3))],numer;
412 (%o2) [1.414213562373095, .8414709848078965, .3660254037844387]
413 @end example
415 @opencatbox
416 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Sinalizadores de avalia@,{c}@~{a}o}
417 @closecatbox
418 @end defvr
420 @c -----------------------------------------------------------------------------
421 @anchor{numer_pbranch}
422 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} numer_pbranch
423 Valor padr@~{a}o: @code{false}
425 A vari@'{a}vel de op@,{c}@~{a}o @code{numer_pbranch} controla a avalia@,{c}@~{a}o num@'{e}rica da 
426 de um inteiro negativo elevado a um expoente, de um racional elevado a um expoente, ou de um n@'{u}mero em ponto flutuante elevado a um expoente.  Quando
427 @code{numer_pbranch} for @code{true} e o expoente for um n@'{u}mero em ponto flutuante
428 ou a vari@'{a}vel de op@,{c}@~{a}o @mref{numer}
429 for @code{true} tamb@'{e}m, Maxima avalia
430 o resultado num@'{e}rico usando o ramo principal.  De outra forma um resultado simplificado, mas
431 n@~{a}o um resultado avaliado, @'{e} retornado.
433 Examples:
435 @c ===beg===
436 @c (-2)^0.75;
437 @c (-2)^0.75,numer_pbranch:true;
438 @c (-2)^(3/4);
439 @c (-2)^(3/4),numer;
440 @c (-2)^(3/4),numer,numer_pbranch:true;
441 @c ===end===
442 @example
443 (%i1) (-2)^0.75;
444 (%o1) (-2)^0.75
446 (%i2) (-2)^0.75,numer_pbranch:true;
447 (%o2) 1.189207115002721*%i-1.189207115002721
449 (%i3) (-2)^(3/4);
450 (%o3) (-1)^(3/4)*2^(3/4)
452 (%i4) (-2)^(3/4),numer;
453 (%o4) 1.681792830507429*(-1)^0.75
455 (%i5) (-2)^(3/4),numer,numer_pbranch:true;
456 (%o5) 1.189207115002721*%i-1.189207115002721
457 @end example
459 @opencatbox
460 @category{Avalia@,{c}@~{a}o num@'{e}rica}
461 @closecatbox
462 @end defvr
464 @c NEEDS CLARIFICATION, EXAMPLES
465 @c HOW TO FIND ALL VARIABLES WHICH HAVE NUMERVALS ??
467 @c -----------------------------------------------------------------------------
468 @anchor{numerval}
469 @deffn {Fun@,{c}@~{a}o} numerval (@var{x_1}, @var{expr_1}, @dots{}, @var{var_n}, @var{expr_n})
471 Declara as vari@'{a}veis @code{x_1}, @dots{}, @var{x_n} como tendo
472 valores num@'{e}ricos iguas a @code{expr_1}, @dots{}, @code{expr_n}.
473 O valor num@'{e}rico @'{e} avaliado e a vari@'{a}vel @'{e} substitu@'{i}da
474 em quaisquer express@~{a}o na qual a vari@'{a}vel ocorra se o sinalizador @code{numer} for
475 @code{true}.  Veja tamb@'{e}m @mrefdot{ev}
477 As express@~{o}es @code{expr_1}, @dots{}, @code{expr_n} podem ser quaisquer express@~{o}es,
478 n@~{a}o necess@'{a}riamente num@'{e}ricas.
480 @opencatbox
481 @category{Declara@,{c}@~{o}es e infer@^{e}ncias} @category{Avalia@,{c}@~{a}o num@'{e}rica}
482 @closecatbox
483 @end deffn
485 @c -----------------------------------------------------------------------------
486 @anchor{oddp}
487 @deffn {Fun@,{c}@~{a}o} oddp (@var{expr})
489 @'{e} @code{true} se @var{expr} for um inteiro @'{i}mpar.
490 @c THIS IS STRANGE -- SHOULD RETURN NOUN FORM IF INDETERMINATE
491 @code{false} @'{e} retornado em todos os outros casos.
493 @opencatbox
494 @category{Fun@,{c}@~{o}es predicado}
495 @closecatbox
496 @end deffn
498 @c -----------------------------------------------------------------------------
499 @anchor{promote_float_to_bigfloat}
500 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} promote_float_to_bigfloat
501 Valor padr@~{a}o: @code{true}
503 Quando @code{promote_float_to_bigfloat} for @code{true}, o resultado de qualquer
504 c@'{a}lculo com ponto flutuante que possa vir a causar uma sobrecarga de ponto
505 flutuane @'{e} substitu@'{i}do por um n@'{u}mero bigfloat qye representa o
506 resultado. Note que essa promo@,{c}@~{a}o @'{e} autom@'{a}tica somente acontece no c@'{o}digo
507 interpretado: c@'{o}digo compilado n@~{a}o @'{e} afetado.
509 Essa convers@~{a}o autom@'{a}tica @'{e} muitas vezes conveniente, mas pode atrapalhar em
510 alguns casos. Por exemplo, pode causar perda de precis@~{a}o se
511 @mref{fpprec} for atualmente menor que a precis@~{a}o de n@'{u}em em
512 ponto flutuante. Para desabilitar esse comportamento, ajuste
513 @code{promote_float_to_bigfloat} para @code{false}.
515 @opencatbox
516 @category{Avalia@,{c}@~{a}o num@'{e}rica}
517 @closecatbox
518 @end defvr
520 @c --- 03.11.2011 --------------------------------------------------------------
521 @anchor{ratepsilon}
522 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} ratepsilon
523 Valor padr@~{a}o: @code{2.0e-15}
525 A vari@'{a}vel de op@,{c}@~{a}o @code{ratepsilon} @'{e} a toler@^{a}ncia usada na convers@~{a}o
526 de n@'{u}meros em ponto flutuante em n@'{u}meros racionais, quando a vari@'{a}vel de op@,{c}@~{a}o
527 @mref{bftorat}
528 tiver o valor @code{false}.  Veja @code{bftorat} para um exemplo.
530 @opencatbox
531 @category{Avalia@,{c}@~{a}o num@'{e}rica} @category{Rational expressions}
532 @closecatbox
533 @end defvr
535 @c -----------------------------------------------------------------------------
536 @anchor{rationalize}
537 @deffn {Fun@,{c}@~{a}o} rationalize (@var{expr})
539 Converte todos os n@'{u}meros em ponto flutuante de precis@~{a}o dupla e todos os grandes n@'{u}meros em ponto flutuante (big floats) na express@~{a}o do Maxima @var{expr} para
540 seus equivalentes racionais exatos.  Se voc@^{e} n@~{a}o est@'{a} faminiarizado com a representa@,{c}@~{a}o
541 bin@'{a}ria de n@'{u}meros em ponto flutuante, voc@^{e} pode se surpreender com o fato de
542 @code{rationalize (0.1)} n@~{a}o ser igual a 1/10.  Esse comportamento n@~{a}o ocorre somente com
543 Maxima -- o n@'{u}mero 1/10 tem uma repetitiva, infinita, representa@,{c}@~{a}o
544 bin@'{a}ria.
546 @c ===beg===
547 @c rationalize (0.5);
548 @c rationalize (0.1);
549 @c fpprec : 5$
550 @c rationalize (0.1b0);
551 @c fpprec : 20$
552 @c rationalize (0.1b0);
553 @c rationalize (sin (0.1*x + 5.6));
554 @c ===end===
555 @example
556 (%i1) rationalize (0.5);
557                                 1
558 (%o1)                           -
559                                 2
560 (%i2) rationalize (0.1);
561                                1
562 (%o2)                          --
563                                10
564 (%i3) fpprec : 5$
565 (%i4) rationalize (0.1b0);
566                              209715
567 (%o4)                        -------
568                              2097152
569 (%i5) fpprec : 20$
570 (%i6) rationalize (0.1b0);
571                      236118324143482260685
572 (%o6)                ----------------------
573                      2361183241434822606848
574 (%i7) rationalize (sin (0.1*x + 5.6));
575                               x    28
576 (%o7)                     sin(-- + --)
577                               10   5
578 @end example
580 @opencatbox
581 @category{Avalia@,{c}@~{a}o num@'{e}rica}
582 @closecatbox
583 @end deffn
585 @c -----------------------------------------------------------------------------
586 @anchor{ratnump}
587 @deffn {Fun@,{c}@~{a}o} ratnump (@var{expr})
589 Retorna @code{true} se @var{expr} for um inteiro literal ou raz@~{a}o de inteiros
590 literais, de outra forma retorna @code{false}.
592 @opencatbox
593 @category{Fun@,{c}@~{o}es predicado} @category{Rational expressions}
594 @closecatbox
595 @end deffn
598 @c -----------------------------------------------------------------------------
599 @page
600 @node Strings, Constants, Numbers, Data Types and Structures
601 @section Strings
602 @c -----------------------------------------------------------------------------
604 @menu
605 * Introduction to Strings::
606 * Functions and Variables for Strings::
607 @end menu
609 @c -----------------------------------------------------------------------------
610 @node Introduction to Strings, Functions and Variables for Strings, Strings, Strings
611 @subsection Introduction to Strings
612 @c -----------------------------------------------------------------------------
614 @cindex backslash
615 @ifnotinfo
616 @cindex \
617 @end ifnotinfo
618 @ifinfo
619 @c adding the backslash to the index here breaks the LaTeX syntax of the file
620 @c maxima.fns that is created by the first pdfLaTeX run by "make pdf".
621 @end ifinfo
622 Strings (sequ@^{e}ncias de caractere) s@~{a}o colocadas entre aspas duplas @code{"}
623 para entrada, e mostradas com ou sem as aspas duplas, dependendo do valor da
624 vari@'{a}vel global @mrefdot{stringdisp}
626 Sequ@^{e}ncias de caractere podem conter quaisquer caracteres, incluindo caracteres detabula@,{c}@~{a}o,
627 nova linha, e de retorno de carro.  A sequ@^{e}ncia @code{\"} @'{e} reconhecida como o caractere de aspas duplas
628 propriamente ditas, e @code{\\} como o caractere barra invertida.  Quando a barra invertida aparece no
629 final de uma linha, a barra invertida e o terminador de linha (ou nova linha ou
630 retorno de carro junto com nova linha) s@~{a}o ignorados, de forma que a sequ@^{e}ncia de caracteres continua na
631 linha seguinte.  Nenhuma outra combina@,{c}@~{a}o especial de barra invertida com outro caractere
632 @'{e} reconhecida; quando a barra invertida aparece antes de qualquer outro caractere que n@~{a}o @code{"},
633 @code{\}, ou um terminador de linha, a barra invertida @'{e} ignorada.  N@~{a}o existe uma forma de
634 representar um caractere especial (tais como tabula@,{c}@~{a}o, nova linha, ou retorno de carro)
635 a n@~{a}o ser o de embutir o caractere literal na sequ@^{e}ncia de caracteres.
637 N@~{a}o existe o o tipo caracteres no Maxima; um caractere sozinho @'{e} representado como uma
638 sequ@^{e}ncia de caracteres de tamanho um.
640 O pacote adicional @code{stringproc} cont@'{e}m muitas fun@,{c}@~{o}es para trabalhar com
641 sequ@^{e}ncias de caractere.
643 Exemplos:
645 @c ===beg===
646 @c s_1 : "This is a string.";
647 @c s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
648 @c s_3 : "Embedded line termination
649 @c in this string.";
650 @c s_4 : "Ignore the \
651 @c line termination \
652 @c characters in \
653 @c this string.";
654 @c stringdisp : false;
655 @c s_1;
656 @c stringdisp : true;
657 @c s_1;
658 @c ===end===
659 @example
660 (%i1) s_1 : "This is a string.";
661 (%o1)               This is a string.
662 (%i2) s_2 : "Embedded \"double quotes\" and backslash \\ characters.";
663 (%o2) Embedded "double quotes" and backslash \ characters.
664 (%i3) s_3 : "Embedded line termination
665 in this string.";
666 (%o3) Embedded line termination
667 in this string.
668 (%i4) s_4 : "Ignore the \
669 line termination \
670 characters in \
671 this string.";
672 (%o4) Ignore the line termination characters in this string.
673 (%i5) stringdisp : false;
674 (%o5)                         false
675 (%i6) s_1;
676 (%o6)                   This is a string.
677 (%i7) stringdisp : true;
678 (%o7)                         true
679 (%i8) s_1;
680 (%o8)                  "This is a string."
681 @end example
683 @opencatbox
684 @category{Sintaxe}
685 @closecatbox
687 @c -----------------------------------------------------------------------------
688 @node Functions and Variables for Strings,  , Introduction to Strings, Strings
689 @subsection Functions and Variables for Strings
690 @c -----------------------------------------------------------------------------
692 @c -----------------------------------------------------------------------------
693 @anchor{concat}
694 @deffn {Fun@,{c}@~{a}o} concat (@var{arg_1}, @var{arg_2}, @dots{})
696 Concatena seus argumentos.  Os argumentos devem avaliar para @'{a}tomos.  O valor de
697 retorno @'{e} um s@'{i}mbolo se o primeiro argumento for um s@'{i}mbolo e o valor de retorno @'{e} uma sequ@^{e}ncia de caracteres nos outros casos.
699 @code{concat} avalia seus argumentos.  O ap@'{o}strofo @code{'} evita a
700 avalia@,{c}@~{a}o.
702 @example
703 (%i1) y: 7$
704 (%i2) z: 88$
705 (%i3) concat (y, z/2);
706 (%o3)                          744
707 (%i4) concat ('y, z/2);
708 (%o4)                          y44
709 @end example
711 Um s@'{i}mbolo constru@'{i}do atrav@'{e}s de @code{concat} pode receber um valor e aparecer em
712 express@~{o}es.  O operador de atribui@,{c}@~{a}o @mref{::}
713 (duplo dois pontos) avalia seu
714 lado direito.
716 @example
717 (%i5) a: concat ('y, z/2);
718 (%o5)                          y44
719 (%i6) a:: 123;
720 (%o6)                          123
721 (%i7) y44;
722 (%o7)                          123
723 (%i8) b^a;
724 @group
725                                y44
726 (%o8)                         b
727 @end group
728 (%i9) %, numer;
729                                123
730 (%o9)                         b
731 @end example
733 Note that although @code{concat (1, 2)} looks like a number, it is a string.
735 @example
736 (%i10) concat (1, 2) + 3;
737 (%o10)                       12 + 3
738 @end example
740 @opencatbox
741 @category{Express@~{o}es} @category{Sequ@^{e}ncias de caractere}
742 @closecatbox
743 @end deffn
745 @c -----------------------------------------------------------------------------
746 @anchor{sconcat}
747 @deffn {Fun@,{c}@~{a}o} sconcat (@var{arg_1}, @var{arg_2}, @dots{})
749 Concatena seus argmentos em uma sequ@^{e}ncia de caracteres.  A menos que @mrefcomma{concat}
750 os argumentos @i{n@~{a}o} precisem ser @'{a}tomos.
752 @example
753 (%i1) sconcat ("xx[", 3, "]:", expand ((x+y)^3));
754 (%o1)               xx[3]:y^3+3*x*y^2+3*x^2*y+x^3
755 @end example
757 @opencatbox
758 @category{Express@~{o}es} @category{Sequ@^{e}ncias de caractere}
759 @closecatbox
760 @end deffn
762 @c NEEDS CLARIFICATION AND EXAMPLES
764 @c -----------------------------------------------------------------------------
765 @anchor{string}
766 @deffn {Fun@,{c}@~{a}o} string (@var{expr})
768 Converte @code{expr} para a nota@,{c}@~{a}o linear do Maxima como se @code{expr} tivesse sido
769 digitada.
771 O valor de retorno de @code{string} @'{e} uma sequ@^{e}ncia de caracteres, e n@~{a}o pode ser usado em um
772 c@'{a}lculo.
774 @opencatbox
775 @category{Sequ@^{e}ncias de caractere}
776 @closecatbox
777 @end deffn
779 @c SHOULD BE WRITTEN WITH LEADING ? BUT THAT CONFUSES CL-INFO SO WORK AROUND
781 @c -----------------------------------------------------------------------------
782 @anchor{stringdisp}
783 @defvr {Vari@'{a}vel de op@,{c}@~{a}o} stringdisp
784 Valor padr@~{a}o: @code{false}
786 Quando @code{stringdisp} for @code{true}, sequ@^{e}ncias de caractere s@~{a}o mostras entre
787 aspas duplas.  De outra forma, as aspas duplas n@~{a}o s@~{a}o mostradas.
789 @code{stringdisp} @'{e} sempre @code{true} na sa@'{i}da que segue imediatamente a uma entrada que define uma fun@,{c}@~{a}o.
791 Exemplos:
793 @c ===beg===
794 @c stringdisp: false$
795 @c "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
796 @c qualquercoisa () := 
797 @c       print ("Isso @'{e} uma sequ@^{e}ncia de caracteres dentro de uma defini@,{c}@~{a}o de fun@,{c}@~{a}o.");
798 @c stringdisp: true$
799 @c "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
800 @c ===end===
801 @example
802 (%i1) stringdisp: false$
803 (%i2) "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
804 (%o2)              Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.
805 @group
806 (%i3) qualquercoisa () :=
807       print ("Isso @'{e} uma sequ@^{e}ncia de caracteres dentro de uma defini@,{c}@~{a}o de fun@,{c}@~{a}o.");
808 @end group
809 (%o3) qualquercoisa() := 
810               print("Isso @'{e} uma sequ@^{e}ncia de caracteres dentro de uma defini@,{c}@~{a}o de fun@,{c}@~{a}o.")
811 (%i4) stringdisp: true$
812 (%i5) "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo.";
813 (%o5)             "Isso @'{e} uma sequ@^{e}ncia de caracteres exemplo."
814 @end example
816 @opencatbox
817 @category{Sinalizadores e vari@'{a}veis de exibi@,{c}@~{a}o}
818 @closecatbox
819 @end defvr