continued work
[clqr.git] / clqr-numbers.tex
blob6de724fa22bccff1988af426ab752235991900a1
1 % Copyright (C) 2008 Bert Burgemeister
3 % Permission is granted to copy, distribute and/or modify this
4 % document under the terms of the GNU Free Documentation License,
5 % Version 1.2 or any later version published by the Free Software
6 % Foundation; with no Invariant Sections, no Front-Cover Texts and
7 % no Back-Cover Texts. For details see file COPYING.
10 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
11 \section{Numbers}
12 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
14 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15 \subsection{Predicates}
16 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
18 \begin{LIST}{1cm}
20 \IT{\arrGOO{(\FU{\boldmath$=$}\RP{\VAR{
21 number}})\\
22 (\FU{\boldmath$/=$}\RP{\VAR{ number}})}{.}}
24 \index{=}%
25 \index{/=}%
26 Return \retval{\T} if all \VAR{number}s, or
27 none, respectively, are equal.
30 \IT{\arrGOO{(\FU{\boldmath$>$}\RP{\VAR{
31 number}})\\(\FU{\boldmath$>=$}\RP{\VAR{
32 number}})\\(\FU{\boldmath$<$}\RP{\VAR{
33 number}})\\(\FU{\boldmath$<=$}\RP{\VAR{ number}})}{.}}
35 \index{>@$>$}%
36 \index{>=@$>=$}%
37 \index{<@$<$}%
38 \index{<=@$<=$}%
39 Return \retval{\T} if \VAR{number}s are
40 monotonically decreasing, monotonically non-increasing,
41 monotonically increasing, or monotonically non-decreasing, respectively.
44 \IT{\arrGOO{(\FU*{MINUSP} \VAR{ a})\\
45 (\FU*{ZEROP} \VAR{ a})\\
46 (\FU*{PLUSP}
47 \VAR{ a})}{.}}
49 Return \retval{\T} if $a < 0$, $a = 0$, or $a > 0$, respectively.
52 \IT{\arrGOO{(\FU*{EVENP } \VAR{integer})\\
53 (\FU*{ODDP } \VAR{integer})}{\}}}
55 Return \retval{\T} if \VAR{integer} is even or odd, respectively.
58 \IT{\arrGOO{(\FU*{NUMBERP} \VAR{ foo})\\
59 (\FU*{INTEGERP} \VAR{ foo})\\
60 (\FU*{RATIONALP} \VAR{ foo})\\
61 (\FU*{FLOATP} \VAR{ foo})\\
62 (\FU*{REALP} \VAR{ foo})\\
63 (\FU*{COMPLEXP} \VAR{ foo})\\
64 (\FU*{RANDOM-STATE-P} \VAR{ foo})
65 }{.}}
67 \retval{\T} if \VAR{foo} is of
68 indicated type.
71 \IT{(\FU*{LOGBITP} \VAR{i} \VAR{integer})}
73 \retval{\T} if zero-indexed \VAR{i}th bit of \VAR{integer} is set.
77 \end{LIST}
79 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
80 \subsection{Numeric Functions}
81 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
83 \begin{LIST}{1cm}
85 \IT{(\FU*{ABS} \VAR{n})}
87 Return \retval{$|n|$}
90 \IT{\arrGOO{(\FU*{+} \OPn{\VAR{ a}})\\
91 (\FU*{*} \OPn{\VAR{ a}})}{.}}
93 Return \retval{$\sum{a}$} or \retval{$\prod{a}$}, respectively. Without any
94 \VAR{a}s, return \retval{0} or \retval{1}, respectively.
97 \IT{\arrGOO{(\FU*{--} \VAR{ a}\OPn{\VAR{ b}})\\
98 (\FU*{/} \VAR{ a}
99 \OPn{\VAR{ b}})}{.}}
101 Return \retval{$a-\sum{b}$} or \retval{$a/\prod{b}$}, respectively. Without any
102 \VAR{b}s, return \retval{$-a$} or \retval{$1/a$}, respectively.
105 \IT{\arrGOO{(\FU*{1+} \VAR{ a})\\(\FU*{1--} \VAR{ a})}{.}}
106 {Return \retval{$a+1$} or
107 \retval{$a-1$}, respectively.
110 \IT{(\xorGOO{\SF*{INCF}\\\SF*{DECF}}{\}} \VAR{place}
111 \Op{\VAR{delta}\DF{1}})}
113 Increment or
114 decrement \VAR{place} by \VAR{delta} returning \retval{new value}.
117 \IT{(\FU*{EXP} \VAR{p})}
118 {Return \retval{$\mbox{e}^p$}.
121 \IT{(\FU*{EXPT} \VAR{b} \VAR{p})}
122 {Return \retval{$b^p$}.
125 \IT{(\FU*{LOG} \VAR{a} \Op{\VAR{b}})}
127 Return \retval{$\log_b a$} or,
128 without \VAR{b}, \retval{$\ln a$}.
131 \IT{\arrGOO{(\FU*{SQRT} \VAR{ n})\\
132 (\FU*{ISQRT} \VAR{ n})}{.}}
134 Return, in complex or natural numbers, respectively, $\sqrt{n}$.
137 \IT{\arrGOO{(\FU*{LCM} \OPn{\VAR{ integer}}\DF{1})\\
138 (\FU*{GCD} \OPn{\VAR{ integer}})}{.}}
140 \retval{Least common multiple} or \retval{greatest common
141 denominator}, respectively, of \VAR{integer}s.
144 \IT{\CNS*{PI}}
146 \kwd{long-float} approximation of $\pi$, Ludolph's number.
149 \IT{\arrGOO{(\FU*{SIN} \VAR{ a})\\
150 (\FU*{COS} \VAR{ a})\\
151 (\FU*{TAN} \VAR{ a})}{.}}
153 With \VAR{a} in radians, return \retval{$\sin a$}, \retval{$\cos
154 a$}, or \retval{$\tan a$}, respectively.
157 \IT{\arrGOO{(\FU*{ASIN} \VAR{ a})\\
158 (\FU*{ACOS} \VAR{ a})}{.}}
160 \retval{$\arcsin a$} or \retval{$\arccos
161 a$}, respectively, in radians.
164 \IT{(\FU*{ATAN} \VAR{a} \Op{\VAR{b}\DF{1}})}
166 \retval{$\arctan \frac{a}{b}$} in radians.
169 \IT{\arrGOO{(\FU*{SINH} \VAR{ a})\\(\FU*{COSH} \VAR{ a})\\(\FU*{TANH}
170 \VAR{ a})}{.}}
172 Return \retval{$\sinh a$}, \retval{$\cosh
173 a$}, or \retval{$\tanh a$}, respectively.
176 \IT{\arrGOO{(\FU*{ASINH} \VAR{ a})\\
177 (\FU*{ACOSH} \VAR{ a})
178 \\(\FU*{ATANH} \VAR{ a})}{.}}
180 \retval{$\operatorname{asinh} a$}, \retval{$\operatorname{acosh}
181 a$}, or \retval{$\operatorname{atanh} a$}, respectively.
184 \IT{(\FU*{CIS} \VAR{a})}
186 Return
187 \retval{$\operatorname{e}^{\operatorname{i} a} = \cos a +
188 \operatorname{i}\sin a$}.
191 \IT{(\FU*{CONJUGATE} \VAR{a})}
192 {Return \retval{conjugate of \VAR{a}}.
195 \IT{\arrGOO{(\FU*{NUMERATOR} \VAR{ rational})\\
196 (\FU*{DENOMINATOR} \VAR{ rational})}{.}}
198 Return \retval{numerator} or \retval{denominator}, respectively, of
199 \VAR{rational}'s canonical form.
202 \IT{\arrGOO{(\FU*{REALPART} \VAR{ number})\\
203 (\FU*{IMAGPART} \VAR{ number})}{.}}
205 Return \retval{real part} or \retval{imaginary part}, respectively, of \VAR{number}.
208 \IT{\arrGOO{(\FU*{MAX } \RP{\VAR{num}})\\
209 (\FU*{MIN } \RP{\VAR{num}})}{.}}
211 Return \retval{greatest} or \retval{least}, respectively, of \VAR{num}s.
214 \IT{(\xorGOO{%
215 \Goo{\FU*{FLOOR}\XOR\FU*{FFLOOR}}\\
216 \Goo{\FU*{CEILING}\XOR\FU*{FCEILING}}\\
217 \Goo{\FU*{TRUNCATE}\XOR\FU*{FTRUNCATE}}\\
218 \Goo{\FU*{ROUND}\XOR\FU*{FROUND}}}{\}}
219 \VAR{n} \Op{\VAR{d}\DF{1}})}
221 Return \retval{$n/d$} (\kwd{integer} or \kwd{float}, respectively) truncated
222 towards $-\infty$, $+\infty$, $0$, or rounded, respectively; and \retvalii{remainder}.
225 \IT{(\xorGOO{\FU*{MOD}\\
226 \FU*{REM}}{\}} \VAR{n} \Op{\VAR{d}\DF{1}})}
227 {Same as \FU{floor} or
228 \FU{truncate}, respectively, but return \retval{remainder} only.
231 \IT{(\FU*{RANDOM} \VAR{limit} \Op{\VAR{state}\DF{\V{*random-state}}})}
233 Return non-negative \retval{random
234 number} less then, and of type of \VAR{limit}.
237 \IT{(\FU*{MAKE-RANDOM-STATE} \Op{\VAR{state}\DF{\NIL}})}
239 Make \retval{random state}.
242 \IT{\V*{*random-state*}}
244 Current random state.
247 \IT{(\FU*{FLOAT-SIGN} \VAR{num-a} \Op{\VAR{num-b}\DF{1}})}
249 \retval{\VAR{num-b}} with the sign of \VAR{num-a}.
252 \IT{(\FU*{SIGNUM} \VAR{n})}
253 {\retval{Number} of magnitude 1
254 representing sign or phase of \VAR{n}.
257 \IT{(\FU*{COMPLEX} \VAR{real} \Op{\VAR{imag}\DF{0}})}
258 {Make a \retval{complex number}.
261 \IT{(\FU*{PHASE} \VAR{number})}
262 {\retval{Angle} of \VAR{number}'s polar representation.
265 \IT{\arrGOO{(\FU*{RATIONAL} \VAR{ real})\\
266 (\FU*{RATIONALIZE} \VAR{ real})}{.}}
268 Convert \VAR{real} to \retval{rational}. Assume complete/limited accuracy for \VAR{real}.
271 \IT{(\FU*{FLOAT} \VAR{real}
272 \Op{\VAR{prototype}\DF{\kwd{single-float}}})}
274 Convert \VAR{real} into \VAR{prototype}-shaped \retval{float}.
277 \end{LIST}
280 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
281 \subsection{Logic Functions}
282 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
283 \label{section:Logic Functions}
285 \begin{LIST}{1cm}
287 \IT{(\kwd*{BOOLE} \VAR{operation} \VAR{int-a} \VAR{int-b})}
289 Return
290 \retval{value} of bit-wise logical \VAR{operation}. \VAR{operation}s
294 \begin{LIST}{.5cm}
295 \IT{\CNS*{BOOLE-1}} {\retval{\VAR{int-a}}.}
296 \IT{\CNS*{BOOLE-2}} {\retval{\VAR{int-b}}.}
297 \IT{\CNS*{BOOLE-C1}} {\retval{Two's complement of \VAR{int-a}}.}
298 \IT{\CNS*{BOOLE-C2}} {\retval{Two's complement of \VAR{int-b}}.}
299 \IT{\CNS*{BOOLE-SET}} {\retval{All bits set}.}
300 \IT{\CNS*{BOOLE-CLR}} {\retval{All bits zero}.}
301 \IT{\CNS*{BOOLE-EQV}} {\retval{$\text{\VAR{int-a}} \equiv \text{\VAR{int-b}}$}.}
302 \IT{\CNS*{BOOLE-AND}} {\retval{$\text{\VAR{int-a}}\land\text{\VAR{int-b}}$}.}
303 \IT{\CNS*{BOOLE-ANDC1}} {\retval{Two's complement of \VAR{int-a} $\land$ \VAR{int-b}}.}
304 \IT{\CNS*{BOOLE-ANDC2}} {\retval{\VAR{int-a} $\land$ two's complement of \VAR{int-b}}.}
305 \IT{\CNS*{BOOLE-NAND}} {\retval{$\lnot(\text{\VAR{int-a}} \land \text{\VAR{int-b}})$}.}
306 \IT{\CNS*{BOOLE-IOR}} {\retval{$\text{\VAR{int-a}} \lor \text{\VAR{int-b}}$}.}
307 \IT{\CNS*{BOOLE-ORC1}} {\retval{Two's complement of \VAR{int-a} $\lor$ \VAR{int-b}}.}
308 \IT{\CNS*{BOOLE-ORC2}} {\retval{\VAR{int-a} $\lor$ two's complement of \VAR{int-b}}.}
309 \IT{\CNS*{BOOLE-XOR}} {\retval{$\lnot(\text{\VAR{int-a}} \equiv \text{\VAR{int-b}})$}.}
310 \IT{\CNS*{BOOLE-NOR}} {\retval{$\lnot(\text{\VAR{int-a}} \lor \text{\VAR{int-b}})$}.}
311 \end{LIST}
313 \IT{(\FU*{LOGNOT}\VAR{ integer})}
315 \retval{Two's complement of \VAR{integer}}.
318 \IT{\arrGOO{(\FU*{LOGEQV} \OPn{\VAR{ integer}})\\
319 (\FU*{LOGAND} \OPn{\VAR{ integer}})}{.}}
321 Return \retval{value of exclusive-nored or anded \VAR{integer}s},
322 respectively. Without any \VAR{integer}, return \retval{$-1$}.
325 \IT{(\FU*{LOGANDC1} \VAR{ int-a} \VAR{ int-b})}
327 \retval{Two's complement of \VAR{int-a} $\land$ \VAR{int-b}}.
330 \IT{(\FU*{LOGANDC2} \VAR{ int-a} \VAR{ int-b})}
332 \retval{\VAR{int-a} $\land$ two's complement of \VAR{int-b}}.
335 \IT{(\FU*{LOGNAND} \VAR{ int-a} \VAR{ int-b})}
337 \retval{$\lnot(\text{\VAR{int-a}} \land \text{\VAR{int-b}})$}.
340 \IT{\arrGOO{(\FU*{LOGXOR} \OPn{\VAR{ integer}})\\
341 (\FU*{LOGIOR} \OPn{\VAR{ integer}})}{.}}
343 Return \retval{value of exclusive-ored or ored \VAR{integer}s},
344 respectively. Without any \VAR{integer}, return \retval{0}.
347 \IT{(\FU*{LOGORC1} \VAR{ int-a} \VAR{ int-b})}
349 \retval{Two's complement of \VAR{int-a} $\lor$ \VAR{int-b}}.
352 \IT{(\FU*{LOGORC2} \VAR{ int-a} \VAR{ int-b})}
354 \retval{\VAR{int-a} $\lor$ two's complement of \VAR{int-b}}.
357 \IT{(\FU*{LOGNOR} \VAR{ int-a} \VAR{ int-b})}
359 \retval{$\lnot(\text{\VAR{int-a}} \lor \text{\VAR{int-b}})$}.
362 \IT{(\FU*{LOGTEST} \VAR{int-a} \VAR{int-b})}
363 {Return \retval{\T} if
364 there is any bit set in \VAR{int-a} which ist set in \VAR{int-b} as well.
367 \IT{(\FU*{LOGCOUNT} \VAR{integer})}
369 \retval{number of bits} set
370 in \VAR{integer}.
373 \IT{(\FU*{ASH} \VAR{integer} \VAR{count})}
375 Return copy of \retval{\VAR{integer}} arithmetically shifted left with zeros added
376 at the right, or, for $\VAR{count}<0$, shifted right discarding
377 bits.
380 \IT{(\FU*{MASK-FIELD} \VAR{byte-spec} \VAR{integer})}
382 Return copy of \retval{\VAR{integer}} with all bits unset but those denoted by
383 \VAR{byte-spec}. \kwd{setf}able.
387 \end{LIST}
389 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
390 \subsection{Integer Functions}
391 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
392 \begin{LIST}{1cm}
394 \IT{(\FU*{INTEGER-LENGTH} \VAR{integer})}
396 \retval{Number of bits} necessary to represent \VAR{integer}.
399 \IT{(\FU*{LDB-TEST} \VAR{byte-spec} \VAR{integer})}
401 Return \retval{\T} if any bit specified by \VAR{byte-spec} in
402 \VAR{integer} is set.
405 \IT{(\FU*{LDB} \VAR{byte-spec} \VAR{integer})}
407 Extract \retval{byte} denoted by \VAR{byte-spec} from
408 \VAR{integer}. \kwd{setf}able.
411 \IT{(\FU*{BYTE} \VAR{size} \VAR{position})}
413 \retval{Byte specifier} for a byte of \VAR{size} bits starting at a
414 weight of $2^{\VAR{position}}$.
417 \IT{\arrGOO{(\FU*{BYTE-SIZE} \VAR{ byte-spec})\\
418 (\FU*{BYTE-POSITION} \VAR{ byte-spec})}{.}}
420 \retval{Size} or \retval{position}, respective, of \VAR{byte-spec}.
423 \IT{(\xorGOO{\FU*{DEPOSIT-FIELD}\\
424 \FU*{DPB}}{\}}
425 \VAR{int-a} \VAR{byte-spec} \VAR{int-b})}
427 Return \retval{\VAR{int-b}} with bits denoted by \VAR{byte-spec} replaced
428 by corresponding bits of \VAR{int-a}, or by the low (\FU{byte-size}
429 \VAR{byte-spec}) bits of \VAR{int-a}, respectively.
432 \end{LIST}
435 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
436 \subsection[Implementation- Dependent]{Implementation-Dependent}
437 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
438 \begin{LIST}{1cm}
440 \IT{\arrGOO{\CNS{SHORT-FLOAT}\\
441 \CNS{SINGLE-FLOAT}\\
442 \CNS{DOUBLE-FLOAT}\\
443 \CNS{LONG-FLOAT}}{\}}\kwd{-}%
444 \xorGOO{\kwd{EPSILON}\\
445 \kwd{NEGATIVE-EPSILON}}{.}}
447 \index{SHORT-FLOAT-EPSILON}%
448 \index{SINGLE-FLOAT-EPSILON}%
449 \index{DOUBLE-FLOAT-EPSILON}%
450 \index{LONG-FLOAT-EPSILON}%
451 \index{SHORT-FLOAT-NEGATIVE-EPSILON}%
452 \index{SINGLE-FLOAT-NEGATIVE-EPSILON}%
453 \index{DOUBLE-FLOAT-NEGATIVE-EPSILON}%
454 \index{LONG-FLOAT-NEGATIVE-EPSILON}%
455 Smallest possible number making a difference when added or subtracted, respectively.
458 \IT{\arrGOO{%
459 \CNS{LEAST-NEGATIVE}\\
460 \CNS{LEAST-NEGATIVE-NORMALIZED}\\
461 \CNS{LEAST-POSITIVE}\\
462 \CNS{LEAST-POSITIVE-NORMALIZED}}{\}}%
463 \kwd{-}%
464 \xorGOO{%
465 \kwd{SHORT-FLOAT}\\
466 \kwd{SINGLE-FLOAT}\\
467 \kwd{DOUBLE-FLOAT}\\
468 \kwd{LONG-FLOAT}}{.}}
470 \index{LEAST-NEGATIVE-SHORT-FLOAT}%
471 \index{LEAST-NEGATIVE-NORMALIZED-SHORT-FLOAT}%
472 \index{LEAST-NEGATIVE-SINGLE-FLOAT}%
473 \index{LEAST-NEGATIVE-NORMALIZED-SINGLE-FLOAT}%
474 \index{LEAST-NEGATIVE-DOUBLE-FLOAT}%
475 \index{LEAST-NEGATIVE-NORMALIZED-DOUBLE-FLOAT}%
476 \index{LEAST-NEGATIVE-LONG-FLOAT}%
477 \index{LEAST-NEGATIVE-NORMALIZED-LONG-FLOAT}%
478 \index{LEAST-POSITIVE-SHORT-FLOAT}%
479 \index{LEAST-POSITIVE-NORMALIZED-SHORT-FLOAT}%
480 \index{LEAST-POSITIVE-SINGLE-FLOAT}%
481 \index{LEAST-POSITIVE-NORMALIZED-SINGLE-FLOAT}%
482 \index{LEAST-POSITIVE-DOUBLE-FLOAT}%
483 \index{LEAST-POSITIVE-NORMALIZED-DOUBLE-FLOAT}%
484 \index{LEAST-POSITIVE-LONG-FLOAT}%
485 \index{LEAST-POSITIVE-NORMALIZED-LONG-FLOAT}%
486 Available numbers closest to $-0$ or $+0$, respectively.
489 \IT{\arrGOO{\CNS{MOST-NEGATIVE}\\
490 \CNS{MOST-POSITIVE}}{\}}%
491 \kwd{-}%
492 \xorGOO{%
493 \kwd{DOUBLE-FLOAT}\\
494 \kwd{LONG-FLOAT}\\
495 \kwd{SHORT-FLOAT}\\
496 \kwd{SINGLE-FLOAT}\\
497 \kwd{FIXNUM}}{.}}
499 \index{MOST-NEGATIVE-DOUBLE-FLOAT}%
500 \index{MOST-NEGATIVE-LONG-FLOAT}%
501 \index{MOST-NEGATIVE-SHORT-FLOAT}%
502 \index{MOST-NEGATIVE-SINGLE-FLOAT}%
503 \index{MOST-NEGATIVE-FIXNUM}%
504 \index{MOST-POSITIVE-DOUBLE-FLOAT}%
505 \index{MOST-POSITIVE-LONG-FLOAT}%
506 \index{MOST-POSITIVE-SHORT-FLOAT}%
507 \index{MOST-POSITIVE-SINGLE-FLOAT}%
508 \index{MOST-POSITIVE-FIXNUM}%
509 Available numbers closest to $-\infty$ or $+\infty$, respectively.
512 \IT{\arrGOO{(\FU*{DECODE-FLOAT} \VAR{ n})\\
513 (\FU*{INTEGER-DECODE-FLOAT} \VAR{ n})}{.}}
515 Return \retval{significand}, \retvalii{exponent}, and
516 \retvaliii{sign} of \kwd{float} \VAR{n}.
519 \IT{(\FU*{SCALE-FLOAT} \VAR{n} \Op{\VAR{i}})}
521 With \VAR{n}'s radix $b$, return $n b^{i}$.
524 \IT{\arrGOO{
525 (\FU*{FLOAT-RADIX} \VAR{ n})\\
526 (\FU*{FLOAT-DIGITS} \VAR{ n})\\
527 (\FU*{FLOAT-PRECISION} \VAR{ n})}{.}}
529 \retval{Radix}, \retval{number of digits} in that radix, or
530 \retval{precision} in that radix, respectively, of float \VAR{n}.
533 \IT{(\FU*{UPGRADED-COMPLEX-PART-TYPE} \VAR{foo})}
534 {\retval{Type} of
535 most specialized complex number able to hold parts of type \VAR{foo}.
538 \end{LIST}