\documentclass[nocolor,memo]{j3}
\oddsidemargin 0pt
\renewcommand{\hdate}{13 January 2004}
\renewcommand{\vers}{J3/04-218}
\usepackage{lineno}
\usepackage{longtable}
\usepackage{xr}
\externaldocument{007}
\input pdftest
\begin{document}
\vspace{-10pt}
\begin{tabbing}
Subject: \hspace*{0.25in}\=``Strict'' mode for floating-point arithmetic\\
From: \>Van Snyder\\
Reference: \>Ada Reference Manual (see
http://www.ada-auth.org/$\sim$acats/arm.html), Section G.2.\\
\end{tabbing}
\pagewiselinenumbers
\leftlinenumbers
\linenumbers*
\section*{Number}
TBD
\section*{Title}
``Strict'' mode for floating-point arithmetic.
\section*{Submitted By}
J3
\section*{Status}
For consideration.
\section*{Basic Functionality}
Provide a specification that within a range of executable statements,
arithmetic and intrinsic elementary functions conform to strict rules of
accuracy.
\section*{Rationale}
The Fortran standard presently specifies only that arithmetic operations
on and intrinsic functions of floating-point numbers are approximate. It
provides no specification what that means. Some processors sacrifice
accuracy for speed, while others do the opposite. In some applications,
it would be important to users to control which policy applies.
\section*{Estimated Impact}
Minor changes in Sections 7 and 13.
\section*{Detailed Specification}
Provide a specification that within a range of executable statements,
arithmetic and intrinsic elementary functions conform to strict rules of
accuracy. It would also make sense to specify the treatment of signed
zeroes within that range, while it might not make sense to do so outwith
it. It should be allowed that a processor's relaxed mode conforms to the
standard's strict requirements.
One syntactic way to do this is with an attribute for subprograms.
Another is as a construct. It would be useful to have both; if only one
is acceptable, I prefer the construct. An attribute for objects is a bad
idea because it raises the question what happens if an operator has two
operands with different strictness, and would require specifications how
to propagate strictness.
The Ada standard specifies a strict numeric mode in section G.2. The
foundation for it is the \emph{fundamental interval}, which for any
number is bounded by the two consecutive floating-point numbers that
surround it. Accuracy of arithmetic operations and intrinsic elementary
functions is specified in terms of that interval, and the radix and
round-off level (epsilon) for floating-point numbers.
The specification amounts to a little over seven pages in the Ada
standard, and this includes the requirements for Complex arithmetic. The
same could be done in the Fortran standard.
\section*{History}
\label{lastpage}
\end{document}