To: J3                                                     J3/24-179
From: Malcolm Cohen
Subject: Not an interp on mathematical equivalence
Date: 2024-October-27
Reference: 24-158


/INTERP subgroup declines to accept 24-158 as a defect report, as it is not
reporting a defect, and for the following other reasons:

1. This question of how the result of a complex operation is calculated is
   excluded by Clause 1 paragraph 4, which states

    "[The Fortran standard] does not specify...
     the method of rounding, approximating, or computing numeric values on
     a particular processor, except by reference to ISO/IEC 60559:2020".

   ISO/IEC 60559:2020 contains no specification of complex arithmetic,
   therefore the Fortran standard itself says it does not specify how this
   is done.

2. In 7.4.3 Numeric intrinsic types, we have the normative statements
        "The set of values for the integer type is a subset of the
         mathematical integers.", "The real type has values that
         approximate the mathematical real numbers.", and "The complex type
         has values that approximate the mathematical complex numbers."
   There is no question that the mathematical integers, real numbers, and
   complex numbers, do not include the IEEE special values of infinity or
   NaN. Thus any question of "mathematical equivalence" must inevitably
   exclude consideration thereof.

3. Quite apart from the fact of the exclusion, the Fortran standard itself
   contains no specification or requirement on the algorithm used to
   calculate complex multiplication.

   As was pointed out in email, there are algorithms for complex multiply
   other than the "traditional" one. One such algorithm omits parts of the
   traditional calculation when the real or imaginary part of one of the
   operands is known to be zero.

   Furthermore, as the standard contains no specification or requirement,
   it thus contains no requirement that the same algorithm be used at all
   times. Thus anything "processor-dependent" can depend on "the phase of
   the moon" or indeed anything else.

   It is thus valid for the processor to use a different algorithm for
   complex multiply when the operation is on an odd-numbered line of the
   source file, the operation involves a real value promoted to complex,
   or on alternate Tuesdays.

   That is because there is literally no specification or requirement on
   the algorithmic calculation of complex multiplication. There is not even
   any accuracy or consistency requirement on such calculations.

4. It is long-standing policy that it is inappropriate to use the very
   expensive defect reporting mechanism to answer a question that is easily
   answered in the standard. The question as to whether the standard
   requires a particular calculation method is clearly answered in the
   negative by Clause 1.

===END===