!standard A.5.1(15) 10-10-20 AC95-00196/01
!standard A.5.1(45)
!class confirmation 10-10-20
!status received no action 10-10-20
!status received 10-03-04
!subject Problems with A.5.1 language
!summary
!appendix
!topic Problems with A.5.1 language
!reference A.5.1
!from Adam Beneschan 10-03-04
!discussion
I'm looking over A.5.1, and it looks to me like there are some passages that aren't really appropriate in an Ada standard. I'm guessing that some of this language was lifted from IEC559:1989 with little or no modification, but probably ought to be reworked a bit.
A.5.1(15): "The results of the Artcan and Arccot functions are in the quadrant
containing the point (x, y), where x and y are the values of the parameters X
and Y, respectively. This may be any quadrant (I through IV) when the parameter
X (resp., Y) of Arctan (resp., Arccot) is specified, but it is restricted to
quadrants I and IV (resp., I and II) when that parameter is omitted....."
My problem with this is that Arctan and Arccot (without the Cycle
parameters) are declared like this:
function Arctan (Y : Float_Type'Base;
X : Float_Type'Base := 1.0);
function Arccot (X : Float_Type'Base;
Y : Float_Type'Base := 1.0);
In Ada, when a parameter has a default value, calling the subprogram with an
omitted parameter is, semantically, exactly the same as calling it with the
default value of the parameter. So to me, it really doesn't make any sense to
speak as if the behavior of such a function were different depending on whether
a parameter is specified or omitted. It might make sense when talking about
Fortran, which (if I recall correctly) has separate routines arctan(x) and
arctan2(y,x). And this is probably true for other languages as well. But I
don't think the language is appropriate for Ada.
It happens to be *true*, I think---i.e. if the X parameter to arctan has the
default value (or any positive value, for that matter), the result will be in
quadrant I or IV. But I still think this paragraph should be reworded without
any reference to whether a parameter is "omitted". After all, in Ada, it never
really is omitted.
A.5.1(45): "A prescribed zero result delivered _at the origin_ by one of the odd
functions (Sin, Arcsin, Sinh, Arcsinh, Tan, Arctan, or Arccot as a function of Y
when X is fixed and positive, Tanh, and Arctanh) has the sign of the parameter X
(Y, in the case of Arctan or Arccot)."
First of all, if "at the origin" just means that the argument is zero (the first
argument, in the case or Arctan), wouldn't it be better just to say so? (Also,
what does it mean for Arccot?) If it means something else, what does it mean?
Second, the reference to "Arccot as a function of Y when X is fixed and
positive" doesn't make sense. Parameters in Ada have values, but they don't
have properties like "being fixed". So that language doesn't particularly make
sense. (I'm not really sure it makes sense in any computer language.)
I propose that this paragraph be reworded to just say what it means, like
A.5.1(38). "If Sin, Arcsin, Sinh, Arcsinh, Tan, Tanh, or Arctanh is called with
zero as its parameter, the result has the same sign as the parameter."
Similarly for Arctan if Y is zero, and for Arccot when Y is zero and X is
positive (the result has the same sign as Y)---assuming I have the intent
correct.
****************************************************************
Considered insufficiently broken. Ed Schonberg said: "Adam is technically right,
but this is make-work, the text is perfectly correct, albeit redundant."
****************************************************************