/[dtapublic]/to_be_filed/uculib01/doc/manual/c_afn0/c_afn0.tex
ViewVC logotype

Contents of /to_be_filed/uculib01/doc/manual/c_afn0/c_afn0.tex

Parent Directory Parent Directory | Revision Log Revision Log


Revision 30 - (show annotations) (download) (as text)
Sat Oct 8 07:22:17 2016 UTC (7 years, 8 months ago) by dashley
File MIME type: application/x-tex
File size: 49008 byte(s)
Initial commit.
1 %$Header: /home/dashley/cvsrep/uculib01/uculib01/doc/manual/c_afn0/c_afn0.tex,v 1.37 2010/05/12 18:35:49 dashley Exp $
2
3 \chapter{Arithmetic Functions}
4
5 \label{cafn0}
6
7 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
8 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
9 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
10 \section{Introduction and Overview}
11 %Section tag: iov0
12 \label{cafn0:siov0}
13
14 This chapter documents functions that perform arithmetic.
15
16 \begin{itemize}
17 \item \S{}\ref{cafn0:sscx0} (p. \pageref{cafn0:sscx0}) documents
18 functions that compare UCU\_UINT16 data.
19 \item \S{}\ref{cafn0:slsf0} (p. \pageref{cafn0:slsf0}) documents
20 functions that calculate or approximate functions of the form
21 $y=mx$, where $y$ is a UCU\_UINT16.
22 \item \S{}\ref{cafn0:ssre0} (p. \pageref{cafn0:ssre0}) documents
23 functions that calculate or approximate square roots.
24 \end{itemize}
25
26
27 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
28 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
29 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
30 \section{UCU\_UINT16 Comparison Functions}
31 %Section tag: scx0
32 \label{cafn0:sscx0}
33
34 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
35 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
36 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
37 \subsection[\emph{UcuAtU16CmpDiffAbsGtRxx(\protect\mbox{\protect$\cdot$})}]
38 {\emph{UcuAtU16CmpDiffAbsGtRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
39 %Subsection tag: csx0
40 \label{cafn0:sscx0:scsx0}
41
42 \index{UcuAtU16CmpDiffAbsGtRxx()@\emph{UcuAtU16CmpDiffAbsGtRxx($\cdot$)}}%
43
44 \noindent\textbf{PROTOTYPE}
45 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
46 \item
47 \begin{verbatim}
48 UCU_BOOLEAN UcuAtU16CmpDiffAbsGtRxx(
49 UCU_UINT16 x1,
50 UCU_UINT16 x2,
51 UCU_UINT16 d
52 )
53 \end{verbatim}
54 \end{list}
55 \vspace{2.8ex}
56
57 \noindent\textbf{SYNOPSIS}
58 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
59 \item Returns UCU\_TRUE if $|x_1-x_2|>d$, or UCU\_FALSE otherwise.
60 \end{list}
61 \vspace{2.8ex}
62
63 \noindent\textbf{INPUTS}
64 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
65 \item \emph{\textbf{x1}}, \emph{\textbf{x2}}\\
66 The UCU\_UINT16 arguments to compare.
67 \item \emph{\textbf{d}}\\
68 The comparison threshold.
69 \end{list}
70 \vspace{2.8ex}
71
72 \noindent\textbf{OUTPUT}
73 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
74 \item UCU\_TRUE if $|x_1-x_2|>d$, or UCU\_FALSE otherwise.
75 \end{list}
76 \vspace{2.8ex}
77
78 \noindent\textbf{DETAILED DESCRIPTION}
79 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
80 \item \emph{UcuAtU16CmpDiffAbsGtRxx($\cdot$)} determines whether
81 $x_1$ and $x_2$ are more than $d$ apart.
82 \item The function is
83 typically used to detect change in a value (either negative or positive)
84 of a magnitude greater than $d$,
85 or to determine if two values are within $d$ of each other.
86 \item \emph{UcuAtU16CmpDiffAbsGtRxx($\cdot$)} is symmetric with
87 respect to its arguments: $f(x_1, x_2) \equiv f(x_2, x_1)$.
88 \end{list}
89 \vspace{2.8ex}
90
91 \noindent\textbf{INTERRUPT COMPATIBILITY}
92 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
93 \item This function may be used from both non-ISR and ISR software.
94 \item This function is thread-safe.
95 \end{list}
96 \vspace{2.8ex}
97
98 \noindent\textbf{EXECUTION TIME}
99 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
100 \item TBD.
101 \end{list}
102 \vspace{2.8ex}
103
104 \noindent\textbf{FUNCTION NAME MNEMONIC}
105 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
106 \item \emph{U16}: arguments and return type are UCU\_UINT16.
107 \emph{Cmp}: compare.
108 \emph{Diff}: difference.
109 \emph{Abs}: absolute value.
110 \emph{Gt}: greater than.
111 \end{list}
112
113
114 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
115 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
116 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
117 %\section{UCU\_SINT32 Complement and Negation Functions}
118 %\label{cafn0:scnf0}
119 %
120 %
121 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
122 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
123 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
124 %\subsection[\emph{UcuAtS32NegationRxx(\protect\mbox{\protect$\cdot$})}]
125 % {\emph{UcuAtS32NegationRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
126 %\label{cafn0:scnf0:sstf0}
127 %
128 %\index{UcuAtS32NegationRxx()@\emph{UcuAtS32NegationRxx($\cdot$)}}%
129 %
130 %\noindent\textbf{PROTOTYPE}
131 %\begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
132 %\item
133 %\begin{verbatim}
134 %UCU_SINT32 UcuAtS32NegationRxx( UCU_SINT32 x )
135 %\end{verbatim}
136 %\end{list}
137 %\vspace{2.8ex}
138 %
139 %\noindent\textbf{SYNOPSIS}
140 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
141 %\item Returns the 1's complement of $x$, plus 1. In most cases, this represents
142 % $-x$, but $-2^{31}$ (the most negative representable value) maps to
143 % $-2^{31}$ (this is a standard feature of the 2's complement representation of signed
144 % integers).
145 %\end{list}
146 %\vspace{2.8ex}
147 %
148 %\noindent\textbf{INPUTS}
149 %\begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
150 %\item \emph{\textbf{x}} \\
151 % The UCU\_SINT32 integer to negate.
152 %\end{list}
153 %\vspace{2.8ex}
154 %
155 %\noindent\textbf{OUTPUT}
156 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
157 %\item The 1's complement of $x$, plus 1
158 %\end{list}
159 %\vspace{2.8ex}
160 %
161 %\noindent\textbf{INTERRUPT COMPATIBILITY}
162 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
163 %\item This function may be used from both non-ISR and ISR software.
164 %\item This function is thread-safe.
165 %\end{list}
166 %\vspace{2.8ex}
167 %
168 %\noindent\textbf{EXECUTION TIME}
169 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
170 %\item TBD.
171 %\end{list}
172 %\vspace{2.8ex}
173 %
174 %\noindent\textbf{FUNCTION NAME MNEMONIC}
175 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
176 %\item \emph{Negation}: negates the argument.
177 %\end{list}
178 %
179 %
180 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
181 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
182 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
183 \section{UCU\_UINT16 Linear Scaling Functions, Zero Y-Intercept}
184 %Section tag: lsf0
185 \label{cafn0:slsf0}
186
187
188 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
189 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
190 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
191 \subsection[\emph{UcuAtU16LscZyiFAxdAxrRxx(\protect\mbox{\protect$\cdot$})}]
192 {\emph{UcuAtU16LscZyiFAxdAxrRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
193 %Subsection tag: faa0
194 \label{cafn0:slsf0:sfaa0}
195
196 \index{UcuAtU16LscZyiFAxdAxrRxx()@\emph{UcuAtU16LscZyiFAxdAxrRxx($\cdot$)}}%
197
198 \noindent\textbf{PROTOTYPE}
199 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
200 \item
201 \begin{verbatim}
202 UCU_UINT16 UcuAtU16LscZyiFAxdAxrRxx(
203 UCU_UINT16 x,
204 UCU_UINT16 x_max,
205 UCU_UINT16 y_max
206 )
207 \end{verbatim}
208 \end{list}
209 \vspace{2.8ex}
210
211 \noindent\textbf{SYNOPSIS}
212 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
213 \item Linearly scales (or projects) from $[0, x_{max}]$ to $[0, y_{max}]$,
214 implementing the floor function (discarding any remainder resulting
215 from the division). The value calculated is
216 $\displaystyle{\left\lfloor \frac{y_{max} x}{x_{max}} \right\rfloor}$,
217 with the provision that the function output will never
218 exceed $y_{max}$.
219
220 \end{list}
221 \vspace{2.8ex}
222
223 \noindent\textbf{INPUTS}
224 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
225 \item \emph{\textbf{x}}\\
226 The input to scale.
227 \item \emph{\textbf{x\_max}}\\
228 The value of $x$ that should correspond to $y_{max}$.
229 \item \emph{\textbf{y\_max}}\\
230 The maximum output value of the function.
231 \end{list}
232 \vspace{2.8ex}
233
234 \noindent\textbf{OUTPUT}
235 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
236 \item $\displaystyle{\left\lfloor \frac{y_{max} x}{x_{max}} \right\rfloor}$, with
237 a maximum of $y_{max}$.
238 \end{list}
239 \vspace{2.8ex}
240
241 \noindent\textbf{EXCEPTION CASES}
242 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
243 \item If $x>x_{max}$, $y_{max}$ is returned.
244 \item If $x_{max}=0$ or $y_{max}=0$, 0 is returned. (In either of these
245 cases, it isn't possible to determine the intent of the caller,
246 so 0 is the safest return value.)
247 \end{list}
248 \vspace{2.8ex}
249
250 \noindent\textbf{INTERRUPT COMPATIBILITY}
251 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
252 \item This function may be used from both non-ISR and ISR software.
253 \item This function is thread-safe.
254 \end{list}
255 \vspace{2.8ex}
256
257 \noindent\textbf{EXECUTION TIME}
258 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
259 \item TBD.
260 \end{list}
261 \vspace{2.8ex}
262
263 \noindent\textbf{FUNCTION NAME MNEMONIC}
264 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
265 \item \emph{U16}: operates on and returns UCU\_UINT16.
266 \emph{Lsc}: linear scaling function.
267 \emph{Zyi}: zero $y$ intercept.
268 \emph{F}: result floored (rather than rounded).
269 \emph{Axd}: arbitrary maxima of domain.
270 \emph{Axr}: arbitrary maxima of range.
271 \end{list}
272
273
274 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
275 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
276 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
277 \subsection[\emph{UcuAtU16LscZyiRAxdAxrRxx(\protect\mbox{\protect$\cdot$})}]
278 {\emph{UcuAtU16LscZyiRAxdAxrRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
279 %Subsection tag: faa1
280 \label{cafn0:slsf0:sfaa1}
281
282 \index{UcuAtU16LscZyiRAxdAxrRxx()@\emph{UcuAtU16LscZyiRAxdAxrRxx($\cdot$)}}%
283
284 \noindent\textbf{PROTOTYPE}
285 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
286 \item
287 \begin{verbatim}
288 UCU_UINT16 UcuAtU16LscZyiRAxdAxrRxx(
289 UCU_UINT16 x,
290 UCU_UINT16 x_max,
291 UCU_UINT16 y_max
292 )
293 \end{verbatim}
294 \end{list}
295 \vspace{2.8ex}
296
297 \noindent\textbf{SYNOPSIS}
298 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
299 \item Linearly scales from $[0, x_{max}]$ to $[0, y_{max}]$, rounding the result
300 to the nearest integer with a downward bias. The result calculated is
301 $\displaystyle{\left\lfloor \frac{y_{max} x + \left\lfloor \displaystyle{\frac{x_{max} - 1}{2}} \right\rfloor}{x_{max}} \right\rfloor}$,
302 with the provision that the function output will never exceed $y_{max}$.
303 \end{list}
304 \vspace{2.8ex}
305
306 \noindent\textbf{INPUTS}
307 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
308 \item \emph{\textbf{x}}\\
309 The input to scale.
310 \item \emph{\textbf{x\_max}}\\
311 The value of $x$ that should correspond to $y_{max}$.
312 \item \emph{\textbf{y\_max}}\\
313 The maximum output value of the function.
314 \end{list}
315 \vspace{2.8ex}
316
317 \noindent\textbf{OUTPUT}
318 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
319 \item $\displaystyle{\left\lfloor \frac{y_{max} x + \left\lfloor \displaystyle{\frac{x_{max} - 1}{2}} \right\rfloor}{x_{max}} \right\rfloor}$,
320 with a maximum of $y_{max}$.
321 \end{list}
322 \vspace{2.8ex}
323
324 \noindent\textbf{EXCEPTION CASES}
325 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
326 \item If $x>x_{max}$, $y_{max}$ is returned.
327 \item If $x_{max}=0$ or $y_{max}=0$, 0 is returned. (In either
328 of these cases, it isn't possible to determine the intent of
329 the caller, so 0 is the safest return value.)
330 \end{list}
331 \vspace{2.8ex}
332
333 \noindent\textbf{INTERRUPT COMPATIBILITY}
334 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
335 \item This function may be used from both non-ISR and ISR software.
336 \item This function is thread-safe.
337 \end{list}
338 \vspace{2.8ex}
339
340 \noindent\textbf{EXECUTION TIME}
341 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
342 \item TBD.
343 \end{list}
344 \vspace{2.8ex}
345
346 \noindent\textbf{FUNCTION NAME MNEMONIC}
347 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
348 \item \emph{U16}: operates on UCU\_UINT16 operands.
349 \emph{Lsc}: linear scaling function.
350 \emph{Zyi}: zero $y$ intercept.
351 \emph{R}: result rounded to nearest integer.
352 \emph{Axd}: arbitrary maxima of domain.
353 \emph{Axr}: arbitrary maxima of range.
354 \end{list}
355
356
357 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
358 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
359 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
360 \section{Ratiometric Adjustment Functions}
361 %Section tag: sraf0
362 \label{cafn0:sraf0}
363
364
365 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
366 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
367 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
368 \subsection[\emph{UcuAtU16RatAdjRRxx(\protect\mbox{\protect$\cdot$})}]
369 {\emph{UcuAtU16RatAdjRRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
370 %Subsection tag: rat0
371 \label{cafn0:sraf0:srat0}
372
373 \index{UcuAtU16RatAdjRRxx()@\emph{UcuAtU16RatAdjRRxx($\cdot$)}}%
374
375 \noindent\textbf{PROTOTYPE}
376 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
377 \item
378 \begin{verbatim}
379 UCU_UINT16 UcuAtU16RatAdjRRxx(
380 UCU_UINT16 arg,
381 UCU_UINT16 arg_max,
382 UCU_UINT16 adj_in,
383 UCU_UINT16 adj_nom
384 )
385 \end{verbatim}
386 \end{list}
387 \vspace{2.8ex}
388
389 \noindent\textbf{SYNOPSIS}
390 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
391 \item Ratiometrically adjusts $arg$ according to the formula
392 $\displaystyle{\left\lfloor \frac{arg\;adj_{nom} + \left\lfloor \displaystyle{\frac{adj_{in} - 1}{2}} \right\rfloor}{adj_{in}} \right\rfloor}$,
393 with the result then clipped at $arg_{max}$.
394 \end{list}
395 \vspace{2.8ex}
396
397 \noindent\textbf{INPUTS}
398 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
399 \item \emph{\textbf{arg}}\\
400 The input to scale.
401 \item \emph{\textbf{arg\_max}}\\
402 The maximum value of $arg$ that may be returned by the function.
403 \item \emph{\textbf{adj\_in}}\\
404 The value of the adjustment parameter that should be used for calculation.
405 \item \emph{\textbf{adj\_nom}}\\
406 The nominal value of the adjustment parameter that should leave $arg$ unchanged. As
407 $adj_{in}$ increases, the value returned will decrease, and vice-versa.
408 \end{list}
409 \vspace{2.8ex}
410
411 \noindent\textbf{OUTPUT}
412 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
413 \item $\displaystyle{\left\lfloor \frac{arg\;adj_{nom} + \left\lfloor \displaystyle{\frac{adj_{in} - 1}{2}} \right\rfloor}{adj_{in}} \right\rfloor}$,
414 with a maximum of $arg_{max}$.
415 \end{list}
416 \vspace{2.8ex}
417
418 \noindent\textbf{EXCEPTION CASES}
419 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
420 \item If $adj_{in}=0$ and $arg=0$, 0 is returned.
421 \item If $adj_{in}=0$ and $arg>0$, $arg_{max}$ is returned.
422 \item If $adj_{nom}=0$, 0 is returned.
423 \end{list}
424 \vspace{2.8ex}
425
426 \noindent\textbf{INTERRUPT COMPATIBILITY}
427 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
428 \item This function may be used from both non-ISR and ISR software.
429 \item This function is thread-safe.
430 \end{list}
431 \vspace{2.8ex}
432
433 \noindent\textbf{EXECUTION TIME}
434 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
435 \item TBD.
436 \end{list}
437 \vspace{2.8ex}
438
439 \noindent\textbf{FUNCTION NAME MNEMONIC}
440 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
441 \item \emph{U16}: operates on UCU\_UINT16 operands.
442 \emph{RatAdj}: ratiometric adjustment.
443 \emph{R}: result rounded to nearest integer.
444 \end{list}
445
446
447 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
448 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
449 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
450 \section{Vector Functions, 2-Dimensional}
451 \label{cafn0:svft0}
452
453
454 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
455 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
456 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
457 %\subsection[\emph{UcuAtS32S16v2CpRxx(\protect\mbox{\protect$\cdot$})}]
458 % {\emph{UcuAtS32S16v2CpRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
459 %\label{cafn0:svft0:scpt1}
460 %
461 %\index{UcuAtS32S16v2CpRxx()@\emph{UcuAtS32S16v2CpRxx($\cdot$)}}%
462 %
463 %\noindent\textbf{PROTOTYPE}
464 %\begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
465 %\item
466 %\begin{verbatim}
467 %UCU_SINT32 UcuAtS32S16v2CpRxx(
468 % UCU_SINT16 a_x,
469 % UCU_SINT16 a_y,
470 % UCU_SINT16 b_x,
471 % UCU_SINT16 b_y
472 % )
473 %\end{verbatim}
474 %\end{list}
475 %\vspace{2.8ex}
476 %
477 %\noindent\textbf{SYNOPSIS}
478 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
479 %\item Calculates the signed magnitude of the $\hat{k}$-component of the
480 % cross-product of $\vec{a}$ and $\vec{b}$:
481 %
482 % \begin{equation}
483 % \label{eq:cafn0:svft0:scpt1:01}
484 % a_x b_y - a_y b_x .
485 % \end{equation}
486 %\end{list}
487 %\vspace{2.8ex}
488 %
489 %\noindent\textbf{INPUTS}
490 %\begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
491 %\item \emph{\textbf{a\_x, a\_y, b\_x, b\_y}}\\
492 % The $x$ and $y$ components of the two vectors. The correct cross-product
493 % will be returned over the entire domain of input arguments.
494 %\end{list}
495 %\vspace{2.8ex}
496 %
497 %\noindent\textbf{OUTPUT}
498 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
499 %\item $a_x b_y - a_y b_x$.
500 %\end{list}
501 %\vspace{2.8ex}
502 %
503 %\noindent\textbf{EXCEPTION CASES}
504 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
505 %\item None.
506 %\end{list}
507 %\vspace{2.8ex}
508 %
509 %\noindent\textbf{INTERRUPT COMPATIBILITY}
510 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
511 %\item This function may be used from both non-ISR and ISR software.
512 %\item This function is thread-safe.
513 %\end{list}
514 %\vspace{2.8ex}
515 %
516 %\noindent\textbf{EXECUTION TIME}
517 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
518 %\item TBD.
519 %\end{list}
520 %\vspace{2.8ex}
521 %
522 %\noindent\textbf{FUNCTION NAME MNEMONIC}
523 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
524 %\item \emph{S32}: returned value is a UCU\_SINT32.
525 % \emph{S16v2}: operates on 2-dimensional vecotrs with UCU\_SINT16 components.
526 % \emph{Cp}: cross-product.
527 %\end{list}
528 %\vspace{2.8ex}
529 %
530 %\noindent\textbf{DETAILED DESCRIPTION / ADDITIONAL INFORMATION}
531 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
532 %\item The three-dimensional vector cross product is defined as
533 %
534 % \begin{equation}
535 % \label{eq:cafn0:svft0:scpt1:02}
536 % \vec{a} \times \vec{b} = \left |
537 % {
538 % \begin{array}{ccc}
539 % \hat{i} & \hat{j} & \hat{k} \\
540 % a_x & a_y & a_z \\
541 % b_x & b_y & b_z
542 % \end{array}
543 % }
544 % \right |.
545 % \end{equation}
546 %\item In two dimensions ($a_z = b_z = 0$), the vector
547 % cross-product is defined as
548 %
549 % \begin{equation}
550 % \label{eq:cafn0:svft0:scpt1:03}
551 % \vec{a} \times \vec{b} = \left |
552 % {
553 % \begin{array}{ccc}
554 % \hat{i} & \hat{j} & \hat{k} \\
555 % a_x & a_y & 0 \\
556 % b_x & b_y & 0
557 % \end{array}
558 % }
559 % \right | = \hat{k} (a_x b_y - a_y b_x) .
560 % \end{equation}
561 %
562 % This function calculates the magnitude of the $\vec{k}$ component
563 % of a 3-dimensional vector cross-product when $a_z = b_z = 0$.
564 %\item This function returns a maximum when $a_x = b_y = a_y = -2^{15}$
565 % and $b_x = 2^{15} - 1$, leading to a maximum of $2^{31} - 2^{15}$.
566 % Similarly, the minimum can be shown to be $-2^{31} + 2^{15}$\@.
567 % Thus, the calculated result is always exact and always fits in a UCU\_SINT32.
568 %\end{list}
569 %
570 %
571 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
572 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
573 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
574 \subsection[\emph{UcuAtU16v2CpDiva2FRxx(\protect\mbox{\protect$\cdot$})}]
575 {\emph{UcuAtU16v2CpDiva2FRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
576 \label{cafn0:svft0:scpt0}
577
578 \index{UcuAtU16v2CpDiva2FRxx()@\emph{UcuAtU16v2CpDiva2FRxx($\cdot$)}}%
579
580 \noindent\textbf{PROTOTYPE}
581 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
582 \item
583 \begin{verbatim}
584 UCU_UINT16 UcuAtU16v2CpDiva2FRxx(
585 UCU_UINT16 a_x,
586 UCU_UINT16 a_y,
587 UCU_UINT16 b_x,
588 UCU_UINT16 b_y
589 )
590 \end{verbatim}
591 \end{list}
592 \vspace{2.8ex}
593
594 \noindent\textbf{SYNOPSIS}
595 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
596 \item Calculates an approximation to
597
598 \begin{equation}
599 \label{eq:cafn0:svft0:scpt0:01}
600 \left\lfloor \frac{| \vec{a} \times \vec{b} |}{| \vec{b} |} \right\rfloor
601 =
602 \left\lfloor \frac{| \vec{a} | | \vec{b} | \sin \theta}{| \vec{b} |} \right\rfloor ,
603 \end{equation}
604
605 where $\vec{a}$ and $\vec{b}$ are in a special form as described below.
606 \item This function is a special purpose function and not especially portable. In particular, the design
607 of the interface is awkward. This function will eventually be replaced in the library.
608 \end{list}
609 \vspace{2.8ex}
610
611 \noindent\textbf{INPUTS}
612 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
613 \item \emph{\textbf{a\_x, a\_y, b\_x, b\_y}}\\
614 The $x$ and $y$ components of the two vectors. Each is in ``excess-4096'' format, so that a value of 0 represents -4096, a value of 4096
615 represents 0, and a value of 8192 represents 4096.
616
617 Each of these parameters are clipped into [32, 8160] by the function before any calculation
618 is performed, representing vector component values in [-4064, 4064].
619 \end{list}
620 \vspace{2.8ex}
621
622 \noindent\textbf{OUTPUT}
623 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
624 \item An approximation of
625 $\left\lfloor \frac{| \vec{a} \times \vec{b} |}{| \vec{b} |}\right\rfloor
626 =
627 \left\lfloor\frac{| \vec{a} | | \vec{b} | \sin \theta}{| \vec{b} |}\right\rfloor$.
628 The approximation is within several counts of the ideal value.
629 \end{list}
630 \vspace{2.8ex}
631
632 \noindent\textbf{EXCEPTION CASES}
633 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
634 \item If $\vec{b} = \vec{0}$, 0 is returned.
635 \end{list}
636 \vspace{2.8ex}
637
638 \noindent\textbf{INTERRUPT COMPATIBILITY}
639 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
640 \item This function may be used from both non-ISR and ISR software.
641 \item This function is thread-safe.
642 \end{list}
643 \vspace{2.8ex}
644
645 \noindent\textbf{EXECUTION TIME}
646 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
647 \item TBD.
648 \end{list}
649 \vspace{2.8ex}
650
651 \noindent\textbf{FUNCTION NAME MNEMONIC}
652 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
653 \item \emph{U16v2}: operates on 2-dimensional vecotrs with UCU\_UINT16 components.
654 \emph{Cp}: cross-product.
655 \emph{Diva2}: divided by the second argument (the second vector).
656 \emph{F}: the result is floor'd.
657 \end{list}
658
659
660 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
661 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
662 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
663 %\subsection[\emph{UcuAtS32S16v2CpDiva2FRxx(\protect\mbox{\protect$\cdot$})}]
664 % {\emph{UcuAtS32S16v2CpDiva2FRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
665 %\label{cafn0:svft0:scpt2}
666 %
667 %\index{UcuAtS32S16v2CpDiva2FRxx()@\emph{UcuAtS32S16v2CpDiva2FRxx($\cdot$)}}%
668 %
669 %\noindent\textbf{PROTOTYPE}
670 %\begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
671 %\item
672 %\begin{verbatim}
673 %UCU_SINT32 UcuAtS32S16v2CpDiva2FRxx(
674 % UCU_SINT16 a_x,
675 % UCU_SINT16 a_y,
676 % UCU_SINT16 b_x,
677 % UCU_SINT16 b_y
678 % )
679 %\end{verbatim}
680 %\end{list}
681 %\vspace{2.8ex}
682 %
683 %\noindent\textbf{SYNOPSIS}
684 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
685 %\item Calculates
686 %
687 % \begin{equation}
688 % \label{eq:cafn0:svft0:scpt2:01}
689 % \left\lfloor \frac{\vec{a} \times \vec{b}}{| \vec{b} | \hat{k}} \right\rfloor ,
690 % \end{equation}
691 %
692 % where the floor function rounds negative values towards zero. It should be noted that by definition
693 %
694 % \begin{equation}
695 % \label{eq:cafn0:svft0:scpt2:02}
696 % \left\lfloor \left| \frac{\vec{a} \times \vec{b}}{| \vec{b} | \hat{k}} \right| \right\rfloor
697 % =
698 % \lfloor |\vec{a}| \sin \theta \rfloor ,
699 % \end{equation}
700 %
701 % where $\theta$ is the angle between $\vec{a}$ and $\vec{b}$, $0 \leq \theta \leq \pi$,
702 % so that this function provides an excellent approximation to
703 % $\lfloor |\vec{a}| \sin \theta \rfloor$.
704 %\item For two vectors $\vec{a}$ and $\vec{b}$ that both begin at the origin,
705 % the absolute value of this function's return value is
706 % the floor of the shortest distance between the tip of $\vec{a}$ and the line coincident with
707 % $\vec{b}$.
708 %\item The precise calculation method used by this function is described in
709 % \S{}\ref{ctbg0:svec2} (p. \pageref{ctbg0:svec2}).
710 %\end{list}
711 %\vspace{2.8ex}
712 %
713 %\noindent\textbf{INPUTS}
714 %\begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
715 %\item \emph{\textbf{a\_x, a\_y, b\_x, b\_y}}\\
716 % The $x$ and $y$ components of the two vectors. All components are signed, and this function
717 % will return correct results over the entire input domain.
718 %\end{list}
719 %\vspace{2.8ex}
720 %
721 %\noindent\textbf{OUTPUT}
722 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
723 %\item $\displaystyle{\left\lfloor \frac{\vec{a} \times \vec{b}}{| \vec{b} | \hat{k}} \right\rfloor}$,
724 % where the floor function rounds negative values towards zero.
725 %\end{list}
726 %\vspace{2.8ex}
727 %
728 %\noindent\textbf{EXCEPTION CASES}
729 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
730 %\item None.
731 %\end{list}
732 %\vspace{2.8ex}
733 %
734 %\noindent\textbf{INTERRUPT COMPATIBILITY}
735 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
736 %\item This function may be used from both non-ISR and ISR software.
737 %\item This function is thread-safe.
738 %\end{list}
739 %\vspace{2.8ex}
740 %
741 %\noindent\textbf{EXECUTION TIME}
742 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
743 %\item TBD.
744 %\end{list}
745 %\vspace{2.8ex}
746 %
747 %\noindent\textbf{FUNCTION NAME MNEMONIC}
748 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
749 %\item \emph{S32}: the return value is UCU\_SINT32.
750 % \emph{S16v2}: operates on 2-dimensional vectors with UCU\_SINT16 components.
751 % \emph{Cp}: cross-product.
752 % \emph{Diva2}: divided by the second argument (the second vector).
753 % \emph{F}: the result is floor'd.
754 %\end{list}
755 %
756 %
757 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
758 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
759 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
760 %\subsection[\emph{UcuAtU32S16v2MagSquaredRxx(\protect\mbox{\protect$\cdot$})}]
761 % {\emph{UcuAtU32S16v2MagSquaredRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
762 %\label{cafn0:svft0:svmf0}
763 %
764 %\index{UcuAtU32S16v2MagSquaredRxx()@\emph{UcuAtU32S16v2MagSquaredRxx($\cdot$)}}%
765 %
766 %\noindent\textbf{PROTOTYPE}
767 %\begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
768 %\item
769 %\begin{verbatim}
770 %UCU_UINT32 UcuAtU32S16v2MagSquaredRxx(
771 % UCU_SINT16 a_x,
772 % UCU_SINT16 a_y
773 % )
774 %\end{verbatim}
775 %\end{list}
776 %\vspace{2.8ex}
777 %
778 %\noindent\textbf{SYNOPSIS}
779 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
780 %\item Calculates $a_x^2 + a_y^2$.
781 %\item The maximum value of $a_x^2 + a_y^2$ is $2(2^{15})^2$ = $2^{31}$,
782 % so the return value of this function may exceed the maximum value
783 % of an UCU\_SINT32, hence the return type UCU\_UINT32 is necessary,
784 % and the result of this function may not be safely cast to
785 % UCU\_SINT32.
786 %\end{list}
787 %\vspace{2.8ex}
788 %
789 %\noindent\textbf{INPUTS}
790 %\begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
791 %\item \emph{\textbf{a\_x, a\_y}}\\
792 % The $x$ and $y$ components of a vector. The components are signed, and this function
793 % will return correct results over the entire input domain.
794 %\end{list}
795 %\vspace{2.8ex}
796 %
797 %\noindent\textbf{OUTPUT}
798 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
799 %\item $a_x^2 + a_y^2$.
800 %\end{list}
801 %\vspace{2.8ex}
802 %
803 %\noindent\textbf{EXCEPTION CASES}
804 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
805 %\item None.
806 %\end{list}
807 %\vspace{2.8ex}
808 %
809 %\noindent\textbf{INTERRUPT COMPATIBILITY}
810 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
811 %\item This function may be used from both non-ISR and ISR software.
812 %\item This function is thread-safe.
813 %\end{list}
814 %\vspace{2.8ex}
815 %
816 %\noindent\textbf{EXECUTION TIME}
817 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
818 %\item TBD.
819 %\end{list}
820 %\vspace{2.8ex}
821 %
822 %\noindent\textbf{FUNCTION NAME MNEMONIC}
823 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
824 %\item \emph{U32}: the return value is UCU\_UINT32.
825 % \emph{S16v2}: operates on 2-dimensional vectors with UCU\_SINT16 components.
826 % \emph{MagSquared}: returns the vector magnitude squared.
827 %\end{list}
828 %
829 %
830 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
831 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
832 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
833 \section{Square Root Extraction Functions}
834 %Section tag: sre0
835 \label{cafn0:ssre0}
836
837
838 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
839 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
840 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
841 \subsection[\emph{UcuAtU8SqrtFRxx(\protect\mbox{\protect$\cdot$})}]
842 {\emph{UcuAtU8SqrtFRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
843 %Subsection tag: lcp0
844 \label{cafn0:ssre0:suee0}
845
846 \index{UcuAtU8SqrtFRxx()@\emph{UcuAtU8SqrtFRxx($\cdot$)}}%
847
848 \noindent\textbf{PROTOTYPE}
849 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
850 \item
851 \begin{verbatim}
852 UCU_UINT8 UcuAtU8SqrtFRxx( UCU_UINT8 x )
853 \end{verbatim}
854 \end{list}
855 \vspace{2.8ex}
856
857 \noindent\textbf{SYNOPSIS}
858 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
859 \item
860 Calculates $\lfloor \sqrt{x} \rfloor$ using a 4-iteration
861 trial squaring algorithm.
862 \end{list}
863 \vspace{2.8ex}
864
865 \noindent\textbf{INPUT}
866 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
867 \item \emph{\textbf{x}}\\
868 The unsigned 8-bit integer whose square root is to be calculated.
869 \end{list}
870 \vspace{2.8ex}
871
872 \noindent\textbf{OUTPUT}
873 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
874 \item $\lfloor \sqrt{x} \rfloor$.
875 \end{list}
876 \vspace{2.8ex}
877
878 \noindent\textbf{INTERRUPT COMPATIBILITY}
879 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
880 \item This function may be used from both non-ISR and ISR software.
881 \item This function is thread-safe.
882 \end{list}
883 \vspace{2.8ex}
884
885 \noindent\textbf{EXECUTION TIME}
886 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
887 \item TBD.
888 \end{list}
889 \vspace{2.8ex}
890
891 \noindent\textbf{FUNCTION NAME MNEMONIC}
892 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
893 \item \emph{U8}: operates on UCU\_UINT8 operands.
894 \emph{Sqrt}: square root.
895 \emph{F}: result is floor'd.
896 \end{list}
897
898
899 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
900 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
901 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
902 \subsection[\emph{UcuAtU16SqrtFRxx(\protect\mbox{\protect$\cdot$})}]
903 {\emph{UcuAtU16SqrtFRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
904 \label{cafn0:ssre0:suee1}
905
906 \index{UcuAtU16SqrtFRxx()@\emph{UcuAtU16SqrtFRxx($\cdot$)}}%
907
908 \noindent\textbf{PROTOTYPE}
909 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
910 \item
911 \begin{verbatim}
912 UCU_UINT8 UcuAtU16SqrtFRxx( UCU_UINT16 x )
913 \end{verbatim}
914 \end{list}
915 \vspace{2.8ex}
916
917 \noindent\textbf{SYNOPSIS}
918 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
919 \item
920 Calculates $\lfloor \sqrt{x} \rfloor$ using an 8-iteration
921 trial squaring algorithm.
922 \end{list}
923 \vspace{2.8ex}
924
925 \noindent\textbf{INPUT}
926 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
927 \item \emph{\textbf{x}}\\
928 The unsigned 16-bit integer whose square root is to be calculated.
929 \end{list}
930 \vspace{2.8ex}
931
932 \noindent\textbf{OUTPUT}
933 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
934 \item $\lfloor \sqrt{x} \rfloor$.
935 \end{list}
936 \vspace{2.8ex}
937
938 \noindent\textbf{INTERRUPT COMPATIBILITY}
939 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
940 \item This function may be used from both non-ISR and ISR software.
941 \item This function is thread-safe.
942 \end{list}
943 \vspace{2.8ex}
944
945 \noindent\textbf{EXECUTION TIME}
946 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
947 \item TBD.
948 \end{list}
949 \vspace{2.8ex}
950
951 \noindent\textbf{FUNCTION NAME MNEMONIC}
952 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
953 \item \emph{U16}: operates on UCU\_UINT16 operands.
954 \emph{Sqrt}: square root.
955 \emph{F}: result is floor'd.
956 \end{list}
957
958
959 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
960 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
961 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
962 \subsection[\emph{UcuAtU16SqrtX10FRxx(\protect\mbox{\protect$\cdot$})}]
963 {\emph{UcuAtU16SqrtX10FRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
964 \label{cafn0:ssre0:suee2}
965
966 \index{UcuAtU16SqrtX10FRxx()@\emph{UcuAtU16SqrtX10FRxx($\cdot$)}}%
967
968 \noindent\textbf{PROTOTYPE}
969 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
970 \item
971 \begin{verbatim}
972 UCU_UINT16 UcuAtU16SqrtX10FRxx( UCU_UINT16 val )
973 \end{verbatim}
974 \end{list}
975 \vspace{2.8ex}
976
977 \noindent\textbf{SYNOPSIS}
978 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
979 \item
980 Calculates an approximation to $10 \sqrt{x}$ using the Babylonian method.
981 The value returned will be either $\lfloor 10 \sqrt{x} \rfloor$
982 or $\lfloor 10 \sqrt{x} \rfloor + 1$.
983 \end{list}
984 \vspace{2.8ex}
985
986 \noindent\textbf{INPUT}
987 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
988 \item \emph{\textbf{x}}\\
989 The unsigned 16-bit integer whose square root is to be calculated.
990 \end{list}
991 \vspace{2.8ex}
992
993 \noindent\textbf{OUTPUT}
994 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
995 \item $\lfloor 10 \sqrt{x} \rfloor$ or $\lfloor 10 \sqrt{x} \rfloor + 1$. There is
996 no rule as to which will be returned (i.e. the value returned does not
997 represent rounding). The possibility of returning either value is tied
998 to the algorithm used.\footnote{This is a to-do item for this function.
999 It should be modified to return $\lfloor 10 \sqrt{x} \rfloor$ in
1000 all cases. Alternate algorithms should also be explored (for speed).}
1001 \item This function is known to return a maximum of 2,559,
1002 corresponding to $x = 65535$.
1003 \end{list}
1004 \vspace{2.8ex}
1005
1006 \noindent\textbf{INTERRUPT COMPATIBILITY}
1007 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1008 \item This function may be used from both non-ISR and ISR software.
1009 \item This function is thread-safe.
1010 \end{list}
1011 \vspace{2.8ex}
1012
1013 \noindent\textbf{EXECUTION TIME}
1014 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1015 \item TBD.
1016 \end{list}
1017 \vspace{2.8ex}
1018
1019 \noindent\textbf{FUNCTION NAME MNEMONIC}
1020 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1021 \item \emph{U16}: operates on UCU\_UINT16 operands.
1022 \emph{Sqrt}: square root.
1023 \emph{X10}: result is multiplied by 10.
1024 \emph{F}: result is floor'd.
1025 \end{list}
1026
1027
1028 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1029 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1030 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1031 %\subsection[\emph{UcuAtU32SqrtFRxx(\protect\mbox{\protect$\cdot$})}]
1032 % {\emph{UcuAtU32SqrtFRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
1033 %\label{cafn0:ssre0:suee5}
1034 %
1035 %\index{UcuAtU32SqrtFRxx()@\emph{UcuAtU32SqrtFRxx($\cdot$)}}%
1036 %
1037 %\noindent\textbf{PROTOTYPE}
1038 %\begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1039 %\item
1040 %\begin{verbatim}
1041 %UCU_UINT16 UcuAtU32SqrtFRxx( UCU_UINT32 x )
1042 %\end{verbatim}
1043 %\end{list}
1044 %\vspace{2.8ex}
1045 %
1046 %\noindent\textbf{SYNOPSIS}
1047 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1048 %\item
1049 %Calculates $\lfloor \sqrt{x} \rfloor$ using a 16-iteration
1050 %trial squaring algorithm.
1051 %\end{list}
1052 %\vspace{2.8ex}
1053 %
1054 %\noindent\textbf{INPUT}
1055 %\begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
1056 %\item \emph{\textbf{x}}\\
1057 % The unsigned 32-bit integer whose square root is to be calculated.
1058 %\end{list}
1059 %\vspace{2.8ex}
1060 %
1061 %\noindent\textbf{OUTPUT}
1062 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1063 %\item $\lfloor \sqrt{x} \rfloor$.
1064 %\end{list}
1065 %\vspace{2.8ex}
1066 %
1067 %\noindent\textbf{INTERRUPT COMPATIBILITY}
1068 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1069 %\item This function may be used from both non-ISR and ISR software.
1070 %\item This function is thread-safe.
1071 %\end{list}
1072 %\vspace{2.8ex}
1073 %
1074 %\noindent\textbf{EXECUTION TIME}
1075 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1076 %\item TBD.
1077 %\end{list}
1078 %\vspace{2.8ex}
1079 %
1080 %\noindent\textbf{FUNCTION NAME MNEMONIC}
1081 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1082 %\item \emph{U32}: operates on UCU\_UINT32 operands.
1083 % \emph{Sqrt}: square root.
1084 % \emph{F}: result is floor'd.
1085 %\end{list}
1086 %
1087 %
1088 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1089 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1090 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1091 %\section{Sign Determination Functions}
1092 %\label{cafn0:ssdf0}
1093 %
1094 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1095 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1096 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1097 %\subsection[\emph{UcuAtS32IsNegRxx(\protect\mbox{\protect$\cdot$})}]
1098 % {\emph{UcuAtS32IsNegRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
1099 %\label{cafn0:ssdf0:sisn0}
1100 %
1101 %\index{UcuAtS32IsNegRxx()@\emph{UcuAtS32IsNegRxx($\cdot$)}}%
1102 %
1103 %\noindent\textbf{PROTOTYPE}
1104 %\begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1105 %\item
1106 %\begin{verbatim}
1107 %UCU_BOOLEAN UcuAtS32IsNegRxx( UCU_SINT32 x )
1108 %\end{verbatim}
1109 %\end{list}
1110 %\vspace{2.8ex}
1111 %
1112 %\noindent\textbf{SYNOPSIS}
1113 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1114 %\item
1115 %Returns UCU\_TRUE if $x<0$ or UCU\_FALSE otherwise.
1116 %\end{list}
1117 %\vspace{2.8ex}
1118 %
1119 %\noindent\textbf{INPUT}
1120 %\begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
1121 %\item \emph{\textbf{x}}\\
1122 % The signed 32-bit integer to be tested for negativity.
1123 %\end{list}
1124 %\vspace{2.8ex}
1125 %
1126 %\noindent\textbf{OUTPUT}
1127 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1128 %\item UCU\_TRUE if $x<0$ or UCU\_FALSE otherwise.
1129 %\end{list}
1130 %\vspace{2.8ex}
1131 %
1132 %\noindent\textbf{INTERRUPT COMPATIBILITY}
1133 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1134 %\item This function may be used from both non-ISR and ISR software.
1135 %\item This function is thread-safe.
1136 %\end{list}
1137 %\vspace{2.8ex}
1138 %
1139 %\noindent\textbf{EXECUTION TIME}
1140 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1141 %\item TBD.
1142 %\end{list}
1143 %\vspace{2.8ex}
1144 %
1145 %\noindent\textbf{FUNCTION NAME MNEMONIC}
1146 %\begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1147 %\item \emph{S32}: operates on UCU\_SINT32 operands.
1148 % \emph{IsNeg}: tests if the argument \emph{is} \emph{neg}ative.
1149 %\end{list}
1150 %
1151 %
1152 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1153 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1154 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1155 \section{Trigonometric Functions}
1156 \label{cafn0:strf0}
1157
1158
1159 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1160 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1161 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1162 \subsection[\emph{UcuAtAtanIx100Odegx1RRxx(\protect\mbox{\protect$\cdot$})}]
1163 {\emph{UcuAtAtanIx100Odegx1RRxx(\protect\mbox{\protect\boldmath $\cdot$})}}
1164 \label{cafn0:strf0:sata0}
1165
1166 \index{UcuAtAtanIx100Odegx1RRxx()@\emph{UcuAtAtanIx100Odegx1RRxx($\cdot$)}}%
1167
1168 \noindent\textbf{PROTOTYPE}
1169 \begin {list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1170 \item
1171 \begin{verbatim}
1172 UCU_UINT8 UcuAtAtanIx100Odegx1RRxx( UCU_UINT16 x )
1173 \end{verbatim}
1174 \end{list}
1175 \vspace{2.8ex}
1176
1177 \noindent\textbf{SYNOPSIS}
1178 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1179 \item Calculates $\tan{}^{-1}x$ to 1-degree precision in the first quadrant
1180 only using a binary search on an internal 90-element lookup table.
1181 \end{list}
1182 \vspace{2.8ex}
1183
1184 \noindent\textbf{INPUT}
1185 \begin{list}{}{\setlength{\leftmargin}{0.5in}\setlength{\itemindent}{-0.25in}\setlength{\topsep}{0.0in}\setlength{\partopsep}{0.0in}}
1186 \item \emph{\textbf{x}}\\
1187 100 times the tangent whose arctangent is to be calculated.
1188 For example, 0.58 would be supplied to this function
1189 as $x=58$.
1190 \end{list}
1191 \vspace{2.8ex}
1192
1193 \noindent\textbf{OUTPUT}
1194 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1195 \item $\tan{}^{-1}x$, in the first quadrant, rounded approximately to the
1196 nearest degree.
1197 \end{list}
1198 \vspace{2.8ex}
1199
1200 \noindent\textbf{EXCEPTION CASES}
1201 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1202 \item This function returns the expected value for all input arguments,
1203 so there are no exception cases.
1204 Input arguments from 11459 through $2^{16}-1$ will result
1205 in a returned value of 90.\footnote{The tangent of 89.5 degrees is approximately 114.5887,
1206 so an input argument of 11458 will result in a return value of 89, while an
1207 input argument of 11459 will result in a return value of 90.}
1208 \end{list}
1209 \vspace{2.8ex}
1210
1211 \noindent\textbf{INTERRUPT COMPATIBILITY}
1212 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1213 \item This function may be used from both non-ISR and ISR software.
1214 \item This function is thread-safe.
1215 \end{list}
1216 \vspace{2.8ex}
1217
1218 \noindent\textbf{EXECUTION TIME}
1219 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1220 \item TBD.
1221 \end{list}
1222 \vspace{2.8ex}
1223
1224 \noindent\textbf{FUNCTION NAME MNEMONIC}
1225 \begin{list}{}{\setlength{\leftmargin}{0.25in}\setlength{\topsep}{0.0in}}
1226 \item \emph{Atan}: arctangent.
1227 \emph{Ix100}: input $\times$ 100.
1228 \emph{Odegx1}: output in degrees $\times$ 1.
1229 \emph{R}: rounded (to nearest degree).
1230 \end{list}
1231
1232
1233 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1234 \noindent\begin{figure}[!b]
1235 \noindent\rule[-0.25in]{\textwidth}{1pt}
1236 \begin{tiny}
1237 \begin{verbatim}
1238 $RCSfile: c_afn0.tex,v $
1239 $Source: /home/dashley/cvsrep/uculib01/uculib01/doc/manual/c_afn0/c_afn0.tex,v $
1240 $Revision: 1.37 $
1241 $Author: dashley $
1242 $Date: 2010/05/12 18:35:49 $
1243 \end{verbatim}
1244 \end{tiny}
1245 \noindent\rule[0.25in]{\textwidth}{1pt}
1246 \end{figure}
1247 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1248 %$Log: c_afn0.tex,v $
1249 %Revision 1.37 2010/05/12 18:35:49 dashley
1250 %Removal of UcuAtS32S16v2CpDiva2FRxx() function.
1251 %
1252 %Revision 1.36 2010/05/12 18:29:49 dashley
1253 %Removal of UcuAtS32S16v2CpRxx() function.
1254 %
1255 %Revision 1.35 2010/05/12 17:20:51 dashley
1256 %Removal of UcuAtS32NegationRxx() function.
1257 %
1258 %Revision 1.34 2010/05/12 17:16:47 dashley
1259 %Removal of UcuAtU32S16v2MagSquaredRxx() function.
1260 %
1261 %Revision 1.33 2010/05/12 17:09:42 dashley
1262 %UcuAtS32IsNegRxx() function backed out.
1263 %
1264 %Revision 1.32 2010/05/12 17:04:17 dashley
1265 %UcuAtU32SqrtFRxx() function backed out. This function is not yet
1266 %implemented.
1267 %
1268 %Revision 1.31 2010/04/16 19:35:41 dashley
1269 %Missing word added.
1270 %
1271 %Revision 1.30 2010/04/16 19:33:37 dashley
1272 %Addition of UcuAtS32NegationRxx() function.
1273 %
1274 %Revision 1.29 2010/04/15 20:21:07 dashley
1275 %Typo corrected.
1276 %
1277 %Revision 1.28 2010/04/15 19:34:39 dashley
1278 %Addition of UcuAtU32S16v2MagSquaredRxx() function.
1279 %
1280 %Revision 1.27 2010/04/15 17:34:52 dashley
1281 %Addition of UcuAtS32IsNegRxx() function.
1282 %
1283 %Revision 1.26 2010/04/15 14:56:28 dashley
1284 %Addition of UcuAtU32SqrtFRxx() function.
1285 %
1286 %Revision 1.25 2010/04/14 14:29:47 dashley
1287 %Incorrect equation labels changed.
1288 %
1289 %Revision 1.24 2010/04/05 15:13:50 dashley
1290 %Edits.
1291 %
1292 %Revision 1.23 2010/04/05 13:22:09 dashley
1293 %Function documentation updated.
1294 %
1295 %Revision 1.22 2010/04/01 20:21:50 dashley
1296 %Edits.
1297 %
1298 %Revision 1.21 2010/04/01 14:49:25 dashley
1299 %Addition of UcuAtS32S16v2CpRxx() function.
1300 %
1301 %Revision 1.20 2010/02/20 16:55:52 dashley
1302 %Function added.
1303 %
1304 %Revision 1.19 2010/02/19 17:12:55 dashley
1305 %Function added.
1306 %
1307 %Revision 1.18 2010/02/18 17:05:57 dashley
1308 %Edits.
1309 %
1310 %Revision 1.17 2010/02/17 19:07:34 dashley
1311 %Documentation added.
1312 %
1313 %Revision 1.16 2010/02/16 23:38:42 dashley
1314 %Description of Sqrtx10 function corrected.
1315 %
1316 %Revision 1.15 2010/02/15 20:33:56 dashley
1317 %Minor typo corrected.
1318 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
1319

dashley@gmail.com
ViewVC Help
Powered by ViewVC 1.1.25