Loading float.tex +92 −38 Original line number Diff line number Diff line % !TeX root = forth.tex % !TeX spell check = en_US \chapter{The optional Floating-Point word set} % 12 \wordlist{floating} Loading Loading @@ -264,6 +267,10 @@ See: (\wref{floating:Fd}{F.}, \wref{floating:FEd}{FE.}, \wref{floating:FSd}{FS.}). \item \place{x:stoftos}{\param{n} can't be precisely represented as \emph{float} in \wref{floating:StoF}{S>F};} \item \place{x:stoftos}{integer part of \emph{float} can't be represented by \param{n} in \wref{floating:FtoS}{F>S}.} \end{itemize} \subsubsection{Other system documentation} % 12.4.1.3 Loading Loading @@ -297,8 +304,8 @@ See: \section{Compliance and labeling} % 12.5 \cbstart\patch{F94} \subsection[Forth systems]{ANS\strike{3.5}{25} Forth systems} % 12.5.1 \cbstart\patch{F12} \subsection[Forth-\snapshot systems]{Forth-\snapshot\strike{-1}{25} systems} % 12.5.1 \cbend The phrase ``Providing the Floating-Point word set'' shall be Loading @@ -314,8 +321,8 @@ The phrase ``Providing the Floating-Point Extensions word set'' shall be appended to the label of any Standard System that provides all of the Floating-Point and Floating-Point Extensions word sets. \cbstart\patch{F94} \subsection[Forth programs]{ANS\strike{3.5}{25} Forth programs} % 12.5.2 \cbstart\patch{F12} \subsection[Forth-\snapshot programs]{Forth-\snapshot\strike{-1}{25} programs} % 12.5.2 \cbend The phrase ``Requiring the Floating-Point word set'' shall be Loading Loading @@ -376,7 +383,7 @@ word sets. does the text interpreter since the latter defines rules for composing source programs whereas \word{toFLOAT} defines rules for accepting data. \word{toFLOAT} is defined as broadly as is feasible to permit input of data from \remove{F94}{ANS} Forth systems as well feasible to permit input of data from Forth\place{F12}{-\snapshot} systems as well as other widely used standard programming environments. This is a synthesis of common FORTRAN practice. Embedded spaces Loading @@ -385,7 +392,7 @@ word sets. While \word{toFLOAT} is not required to treat a string of blanks as zero, this behavior is strongly encouraged, since a future version of \replace{F94}{ANS Forth}{this standard} may include such a requirement. version of this standard may include such a requirement. \end{rationale} \end{worddef} Loading Loading @@ -806,7 +813,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{DFFIELD:}[d-f-field-colon][X:structures] \begin{worddef}{1207}[40]{DFFIELD:}[d-f-field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} Skip leading space delimiters. Parse \param{name} delimited by Loading @@ -818,18 +825,18 @@ word sets. given below. \execute[name] \cbstart\patch{ed11} \stack{a-addr_{\sout{1}}}{\sout{a}\uline{df}-addr_{\sout{2}}} \cbstart\patch{ed12} \stack{\sout{a-}addr_{\uline{1}}}{\sout{df-}addr_{\uline{2}}} \cbend Add the \param{offset} calculated during the compile time action to \cbstart\param{a-addr_{\sout{1}}}\cbend\ \cbstart\param{\sout{a-}addr_{\uline{1}}}\cbend\ giving the double-float aligned address \cbstart\param{\sout{a}\uline{df}-addr_{\sout{2}}}.\cbend \cbstart\param{\sout{df-}addr_{\uline{2}}}.\cbend \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \linebreak \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \rref{facility:FIELD:}{}. \end{worddef} Loading Loading @@ -862,7 +869,7 @@ word sets. \end{worddef} \begin{worddef}[Fd]{1427}{F.}[f-dot] \begin{worddef}[Fd]{1427}{F.{}}[f-dot] \item \stack{}{} \stack[F]{r}{} or \stack{r}{} Loading @@ -879,11 +886,36 @@ word sets. \rref{floating:Fd}{}. \begin{rationale} % A.12.6.1.1427 F. For example, \texttt{1E3} \word{Fd} displays \texttt{1000.} . For example, \texttt{1E3} \replace{ed12}{\textbf{\texttt{F}}}{ \word{Fd}} displays \texttt{1000.} . \end{rationale} \end{worddef} % ========== x:stoftos ========== \begin{worddef*}[FtoS]{1471}{F>S}[F to S][x:stoftos] \item \stack{}{n} \stack[F]{r}{} or \stack{r}{n} \uline{\param{n} is the single-cell signed-integer equivalent of the integer portion of \param{r}. The fractional portion of \param{r} is discarded. An ambiguous condition exists if the integer portion of \param{r} cannot be precisely represented as a single-cell signed integer.} \note \uline{Rounding the floating-point value prior to calling \word{FtoS} is advised.} \see \uline{\wref{floating:StoF}{}.} \begin{implement} \uline{\word{:} \word{FtoS} \word{p} r -{}- n )} \\ \tab \uline{\word{FtoD} \word[double]{DtoS}} \\ \uline{\word{;}} \end{implement} \end{worddef*} % ============================== \begin{worddef}{1474}{FABS}[f-abs] \item \stack[F]{r_1}{r_2} or \stack{r_1}{r_2} Loading Loading @@ -981,11 +1013,12 @@ word sets. Thus the phrase \word{FSINCOS} \word{F/} is functionally equivalent to \word{FTAN}, but is useful over only a limited and discontinuous range of angles, whereas \word{FSINCOS} and \word{FATAN2} are useful for all angles. This ordering has \word{FATAN2} are useful for all angles. \remove{ed12}{This ordering has been found convenient for nearly two decades, and has the added benefit of being easy to remember. A corollary to this observation is that vectors in general should appear on the stack in this order. stack in this order.} The argument order for \word{FATAN2} is the same, converting a vector in the conventional representation to a scalar angle. Loading Loading @@ -1210,14 +1243,14 @@ word sets. This function allows accurate computation when its arguments are close to zero, and provides a useful base for the standard exponential functions. Hyperbolic functions such as \textsf{cosh($x$)} can be efficiently and accurately \textsf{\replace{ed12}{cosh}{sinh}($x$)} can be efficiently and accurately implemented by using \word{FEXPM1}; accuracy is lost in this function for small values of $x$ if the word \word{FEXP} is used. An important application of this word is in finance; say a loan is repaid at 15\% per year; what is the daily rate? On a computer with single precision (six decimal digit) accuracy: with single\place{ed12}{-}precision (six decimal digit) accuracy: \begin{enumerate} \item[1.] Using \word{FLN} and \word{FEXP}: Loading @@ -1227,7 +1260,7 @@ word sets. form the exponent using \word{FEXP} = 1.00038, and \\ subtract one (1) and convert to percentage = 0.038\%. \end{enumerate} Thus we only have two digit accuracy. Thus we only have two\place{ed12}{-}digit accuracy. \begin{enumerate} \item[2.] Using \word{FLNP1} and \word{FEXPM1}: Loading @@ -1239,9 +1272,9 @@ word sets. \word{FEXPM1} = 3.82983E-4, and \\ convert to percentage = 0.0382983\%. \end{enumerate} This is full six digit accuracy. This is full six\place{ed12}{-}digit accuracy. The presence of this word allows the hyperbolic functions to \replace{ed12}{The presence of this}{ This} \remove{ed12}{word} allows the hyperbolic functions to be computed with usable accuracy. For example, the hyperbolic sine can be defined as: Loading @@ -1257,7 +1290,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{FFIELD:}[f-field-colon][X:structures] \begin{worddef}{1517}{FFIELD:}[f-field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} Skip leading space delimiters. Parse \param{name} delimited by Loading @@ -1268,18 +1301,18 @@ word sets. given below. \execute[name] \cbstart\patch{ed11} \stack{a-addr_{\sout{1}}}{\sout{a}\uline{f}-addr_{\sout{2}}} \cbstart\patch{ed12} \stack{\sout{a-}addr_{\uline{1}}}{\sout{f-}addr_{\uline{2}}} \cbend Add the \param{offset} calculated during the compile time action to \cbstart\param{a-addr_{\sout{1}}}\cbend\ \cbstart\param{\sout{a-}addr_{\uline{1}}}\cbend\ giving the float aligned address \cbstart\param{\sout{a}\uline{f}-addr_{\sout{2}}}.\cbend \cbstart\param{\sout{f-}addr_{\uline{2}}}.\cbend \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \linebreak \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \rref{facility:FIELD:}{}. \end{worddef} Loading Loading @@ -1408,7 +1441,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{FTRUNC}[f-trunc][x:ftrunc] \begin{worddef}{1627}{FTRUNC}[f-trunc][x:ftrunc] \item \stack[F]{r_1}{r_2} or \stack{r_1}{r_2} Round \param{r_1} to an integral value using the ``round Loading Loading @@ -1446,7 +1479,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{FVALUE}[f-value][X:fvalue] \begin{worddef}{1628}{FVALUE}[f-value][X:fvalue] \item \stack[F]{r}{} \stack{"<spaces>name"}{} or \stack{r "<spaces>name"}{} Loading Loading @@ -1543,6 +1576,27 @@ word sets. \end{worddef} % ========== x:stoftos ========== \begin{worddef*}[StoF]{2175}{S>F}[S to F][x:stoftos] \item \stack{n}{} \stack[F]{}{r} or \stack{n}{r} \uline{\param{r} is the floating-point equivalent of the single-cell value \param{n}. An ambiguous condition exists if \param{n} can not be precisely represented as a floating-point value.} \see \uline{\wref{floating:FtoS}{F>S}.} \begin{implement} \uline{\word{:} \word{StoF} \word{p} n -{}- r )} \\ \tab \uline{\word{StoD} \word{DtoF}} \\ \uline{\word{;}} \end{implement} \end{worddef*} % ============================== \begin{worddef}{2200}{SET-PRECISION} \item \stack{u}{} Loading Loading @@ -1607,7 +1661,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{SFFIELD:}[s-f-field-colon][X:structures] \begin{worddef}{2206}[40]{SFFIELD:}[s-f-field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} Skip leading space delimiters. Parse \param{name} delimited by Loading @@ -1619,18 +1673,18 @@ word sets. given below. \execute[name] \cbstart\patch{ed11} \stack{a-addr_{\sout{1}}}{\sout{a}\uline{sf}-addr_{\sout{2}}} \cbstart\patch{ed12} \stack{\sout{a-}addr_{\uline{1}}}{\sout{sf-}addr_{\uline{2}}} \cbend Add the \param{offset} calculated during the compile time action to \cbstart\param{a-addr_{\sout{1}}}\cbend\ \cbstart\param{\sout{a-}addr_{\uline{1}}}\cbend\ giving the single-float aligned address \cbstart\param{\sout{a}\uline{sf}-addr_{\sout{2}}}.\cbend \cbstart\param{\sout{sf-}addr_{\uline{2}}}.\cbend \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \linebreak \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \rref{facility:FIELD:}{}. \end{worddef} Loading Loading
float.tex +92 −38 Original line number Diff line number Diff line % !TeX root = forth.tex % !TeX spell check = en_US \chapter{The optional Floating-Point word set} % 12 \wordlist{floating} Loading Loading @@ -264,6 +267,10 @@ See: (\wref{floating:Fd}{F.}, \wref{floating:FEd}{FE.}, \wref{floating:FSd}{FS.}). \item \place{x:stoftos}{\param{n} can't be precisely represented as \emph{float} in \wref{floating:StoF}{S>F};} \item \place{x:stoftos}{integer part of \emph{float} can't be represented by \param{n} in \wref{floating:FtoS}{F>S}.} \end{itemize} \subsubsection{Other system documentation} % 12.4.1.3 Loading Loading @@ -297,8 +304,8 @@ See: \section{Compliance and labeling} % 12.5 \cbstart\patch{F94} \subsection[Forth systems]{ANS\strike{3.5}{25} Forth systems} % 12.5.1 \cbstart\patch{F12} \subsection[Forth-\snapshot systems]{Forth-\snapshot\strike{-1}{25} systems} % 12.5.1 \cbend The phrase ``Providing the Floating-Point word set'' shall be Loading @@ -314,8 +321,8 @@ The phrase ``Providing the Floating-Point Extensions word set'' shall be appended to the label of any Standard System that provides all of the Floating-Point and Floating-Point Extensions word sets. \cbstart\patch{F94} \subsection[Forth programs]{ANS\strike{3.5}{25} Forth programs} % 12.5.2 \cbstart\patch{F12} \subsection[Forth-\snapshot programs]{Forth-\snapshot\strike{-1}{25} programs} % 12.5.2 \cbend The phrase ``Requiring the Floating-Point word set'' shall be Loading Loading @@ -376,7 +383,7 @@ word sets. does the text interpreter since the latter defines rules for composing source programs whereas \word{toFLOAT} defines rules for accepting data. \word{toFLOAT} is defined as broadly as is feasible to permit input of data from \remove{F94}{ANS} Forth systems as well feasible to permit input of data from Forth\place{F12}{-\snapshot} systems as well as other widely used standard programming environments. This is a synthesis of common FORTRAN practice. Embedded spaces Loading @@ -385,7 +392,7 @@ word sets. While \word{toFLOAT} is not required to treat a string of blanks as zero, this behavior is strongly encouraged, since a future version of \replace{F94}{ANS Forth}{this standard} may include such a requirement. version of this standard may include such a requirement. \end{rationale} \end{worddef} Loading Loading @@ -806,7 +813,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{DFFIELD:}[d-f-field-colon][X:structures] \begin{worddef}{1207}[40]{DFFIELD:}[d-f-field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} Skip leading space delimiters. Parse \param{name} delimited by Loading @@ -818,18 +825,18 @@ word sets. given below. \execute[name] \cbstart\patch{ed11} \stack{a-addr_{\sout{1}}}{\sout{a}\uline{df}-addr_{\sout{2}}} \cbstart\patch{ed12} \stack{\sout{a-}addr_{\uline{1}}}{\sout{df-}addr_{\uline{2}}} \cbend Add the \param{offset} calculated during the compile time action to \cbstart\param{a-addr_{\sout{1}}}\cbend\ \cbstart\param{\sout{a-}addr_{\uline{1}}}\cbend\ giving the double-float aligned address \cbstart\param{\sout{a}\uline{df}-addr_{\sout{2}}}.\cbend \cbstart\param{\sout{df-}addr_{\uline{2}}}.\cbend \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \linebreak \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \rref{facility:FIELD:}{}. \end{worddef} Loading Loading @@ -862,7 +869,7 @@ word sets. \end{worddef} \begin{worddef}[Fd]{1427}{F.}[f-dot] \begin{worddef}[Fd]{1427}{F.{}}[f-dot] \item \stack{}{} \stack[F]{r}{} or \stack{r}{} Loading @@ -879,11 +886,36 @@ word sets. \rref{floating:Fd}{}. \begin{rationale} % A.12.6.1.1427 F. For example, \texttt{1E3} \word{Fd} displays \texttt{1000.} . For example, \texttt{1E3} \replace{ed12}{\textbf{\texttt{F}}}{ \word{Fd}} displays \texttt{1000.} . \end{rationale} \end{worddef} % ========== x:stoftos ========== \begin{worddef*}[FtoS]{1471}{F>S}[F to S][x:stoftos] \item \stack{}{n} \stack[F]{r}{} or \stack{r}{n} \uline{\param{n} is the single-cell signed-integer equivalent of the integer portion of \param{r}. The fractional portion of \param{r} is discarded. An ambiguous condition exists if the integer portion of \param{r} cannot be precisely represented as a single-cell signed integer.} \note \uline{Rounding the floating-point value prior to calling \word{FtoS} is advised.} \see \uline{\wref{floating:StoF}{}.} \begin{implement} \uline{\word{:} \word{FtoS} \word{p} r -{}- n )} \\ \tab \uline{\word{FtoD} \word[double]{DtoS}} \\ \uline{\word{;}} \end{implement} \end{worddef*} % ============================== \begin{worddef}{1474}{FABS}[f-abs] \item \stack[F]{r_1}{r_2} or \stack{r_1}{r_2} Loading Loading @@ -981,11 +1013,12 @@ word sets. Thus the phrase \word{FSINCOS} \word{F/} is functionally equivalent to \word{FTAN}, but is useful over only a limited and discontinuous range of angles, whereas \word{FSINCOS} and \word{FATAN2} are useful for all angles. This ordering has \word{FATAN2} are useful for all angles. \remove{ed12}{This ordering has been found convenient for nearly two decades, and has the added benefit of being easy to remember. A corollary to this observation is that vectors in general should appear on the stack in this order. stack in this order.} The argument order for \word{FATAN2} is the same, converting a vector in the conventional representation to a scalar angle. Loading Loading @@ -1210,14 +1243,14 @@ word sets. This function allows accurate computation when its arguments are close to zero, and provides a useful base for the standard exponential functions. Hyperbolic functions such as \textsf{cosh($x$)} can be efficiently and accurately \textsf{\replace{ed12}{cosh}{sinh}($x$)} can be efficiently and accurately implemented by using \word{FEXPM1}; accuracy is lost in this function for small values of $x$ if the word \word{FEXP} is used. An important application of this word is in finance; say a loan is repaid at 15\% per year; what is the daily rate? On a computer with single precision (six decimal digit) accuracy: with single\place{ed12}{-}precision (six decimal digit) accuracy: \begin{enumerate} \item[1.] Using \word{FLN} and \word{FEXP}: Loading @@ -1227,7 +1260,7 @@ word sets. form the exponent using \word{FEXP} = 1.00038, and \\ subtract one (1) and convert to percentage = 0.038\%. \end{enumerate} Thus we only have two digit accuracy. Thus we only have two\place{ed12}{-}digit accuracy. \begin{enumerate} \item[2.] Using \word{FLNP1} and \word{FEXPM1}: Loading @@ -1239,9 +1272,9 @@ word sets. \word{FEXPM1} = 3.82983E-4, and \\ convert to percentage = 0.0382983\%. \end{enumerate} This is full six digit accuracy. This is full six\place{ed12}{-}digit accuracy. The presence of this word allows the hyperbolic functions to \replace{ed12}{The presence of this}{ This} \remove{ed12}{word} allows the hyperbolic functions to be computed with usable accuracy. For example, the hyperbolic sine can be defined as: Loading @@ -1257,7 +1290,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{FFIELD:}[f-field-colon][X:structures] \begin{worddef}{1517}{FFIELD:}[f-field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} Skip leading space delimiters. Parse \param{name} delimited by Loading @@ -1268,18 +1301,18 @@ word sets. given below. \execute[name] \cbstart\patch{ed11} \stack{a-addr_{\sout{1}}}{\sout{a}\uline{f}-addr_{\sout{2}}} \cbstart\patch{ed12} \stack{\sout{a-}addr_{\uline{1}}}{\sout{f-}addr_{\uline{2}}} \cbend Add the \param{offset} calculated during the compile time action to \cbstart\param{a-addr_{\sout{1}}}\cbend\ \cbstart\param{\sout{a-}addr_{\uline{1}}}\cbend\ giving the float aligned address \cbstart\param{\sout{a}\uline{f}-addr_{\sout{2}}}.\cbend \cbstart\param{\sout{f-}addr_{\uline{2}}}.\cbend \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \linebreak \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \rref{facility:FIELD:}{}. \end{worddef} Loading Loading @@ -1408,7 +1441,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{FTRUNC}[f-trunc][x:ftrunc] \begin{worddef}{1627}{FTRUNC}[f-trunc][x:ftrunc] \item \stack[F]{r_1}{r_2} or \stack{r_1}{r_2} Round \param{r_1} to an integral value using the ``round Loading Loading @@ -1446,7 +1479,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{FVALUE}[f-value][X:fvalue] \begin{worddef}{1628}{FVALUE}[f-value][X:fvalue] \item \stack[F]{r}{} \stack{"<spaces>name"}{} or \stack{r "<spaces>name"}{} Loading Loading @@ -1543,6 +1576,27 @@ word sets. \end{worddef} % ========== x:stoftos ========== \begin{worddef*}[StoF]{2175}{S>F}[S to F][x:stoftos] \item \stack{n}{} \stack[F]{}{r} or \stack{n}{r} \uline{\param{r} is the floating-point equivalent of the single-cell value \param{n}. An ambiguous condition exists if \param{n} can not be precisely represented as a floating-point value.} \see \uline{\wref{floating:FtoS}{F>S}.} \begin{implement} \uline{\word{:} \word{StoF} \word{p} n -{}- r )} \\ \tab \uline{\word{StoD} \word{DtoF}} \\ \uline{\word{;}} \end{implement} \end{worddef*} % ============================== \begin{worddef}{2200}{SET-PRECISION} \item \stack{u}{} Loading Loading @@ -1607,7 +1661,7 @@ word sets. % --------------------------------------------------------- \begin{worddef}{}{SFFIELD:}[s-f-field-colon][X:structures] \begin{worddef}{2206}[40]{SFFIELD:}[s-f-field-colon][X:structures] \item \stack{n_1 "<spaces>name"}{n_2} Skip leading space delimiters. Parse \param{name} delimited by Loading @@ -1619,18 +1673,18 @@ word sets. given below. \execute[name] \cbstart\patch{ed11} \stack{a-addr_{\sout{1}}}{\sout{a}\uline{sf}-addr_{\sout{2}}} \cbstart\patch{ed12} \stack{\sout{a-}addr_{\uline{1}}}{\sout{sf-}addr_{\uline{2}}} \cbend Add the \param{offset} calculated during the compile time action to \cbstart\param{a-addr_{\sout{1}}}\cbend\ \cbstart\param{\sout{a-}addr_{\uline{1}}}\cbend\ giving the single-float aligned address \cbstart\param{\sout{a}\uline{sf}-addr_{\sout{2}}}.\cbend \cbstart\param{\sout{sf-}addr_{\uline{2}}}.\cbend \see \wref{facility:+FIELD}{+FIELD}, \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \linebreak \wref{facility:BEGIN-STRUCTURE}{BEGIN-STRUCTURE}, \\ \wref{facility:END-STRUCTURE}{END-STRUCTURE}, \rref{facility:FIELD:}{}. \end{worddef} Loading