# CVS difference for ais/ai-00185.txt

Differences between 1.3 and version 1.4
Log of other versions for file ais/ai-00185.txt

```--- ais/ai-00185.txt	2000/12/14 00:10:32	1.3
+++ ais/ai-00185.txt	2000/12/22 00:23:07	1.4
@@ -255,3 +255,222 @@
mathematical formulas in a plain text file.

****************************************************************
+
+From: Pascal Leroy
+Sent: Thursday, December 14, 2000 4:35 AM
+
+> Hi, Pascal.  I thought I'd spare the others the gruesome mathematical
+> details, and just converse with you.
+
+Good idea.  I am copying John, who is as far as I can tell the only other
+ARG member interested in "gruesome mathematical details".  I am also copying
+Randy to make sure that the discussion is recorded in the AI.
+
+> >If a complex function is (1) analytic and (2) an extension of the real
+> >function with the same name, you can _prove_ the following:
+> >
+> >1 - The branch cuts are invariant by complex conjugation.
+> >2 - For odd functions the branch cuts are invariant by reflection in the
+> >origin.
+> >3 - The branch cuts begin and end at the points where the function has no
+> >Taylor/Laurent series expansion.
+>
+> For #3 I agree.  For #1 and #2 I don't see this, unless there are
+> *different* implicit assumptions being made, in which case it might be
+> worthwhile to explicitly state *those* assumptions.
+>
+> Could you supply the proofs in question to me?
+
+I am copying the following from a 1987 paper by W. Kahan on the
+implementation of complex elementary functions.
+
+"Each of our nine elementary complex function f(z) has a slit or slits that
+bound a region, called the principal domain, inside which f(z) has a
+principal value that is single valued and analytic (representable locally by
+power series), though it must be discontinuous across the slit(s).  That
+principal value is an extension, with maximal principal domain, of a real
+elementary function f(x) analytic at every interior point of its domain,
+which is a segment of the real x-axis.  To conserve the power series'
+validity, points strictly inside that segment must also lie strictly inside
+the principal domain; therefore the slit(s) cannot intersect the segment's
+interior.  Let z* = x - iy denote the complex conjugate of z = x + iy; the
+power series for f(x) satisfy the identity f(z*) = f(z)* within some complex
+neighbourhood of the segment's interior, so the identity should persevere
+throughout the principal domain's interior too.  Consequently complex
+conjugation must map the slit(s) to itself/themselves.  The slit(s) of an
+odd function f(z) = -f(-z) must be invariant under reflection in the origin
+z = 0.  Finally, the slit(s) must begin and end at branch-points: these are
+singularities around which some branch of the function cannot be represented
+by a Taylor nor Laurent series expansion.  A slit can end at branch point at
+infinity.
+
+Consequently the slit for Sqrt, Log, and z ** w turns out to be the negative
+real axis.  Then the slits for Arcsin, Arccos and Arctanh turn out to be
+those parts of the real axis not between -1 and +1; similarly those parts of
+the imaginary axis not between -i and +i serve as slits for Arctan and
+Arcsinh.  The slit for Arccosh, the only slit with a finite branch-point
+(-1) inside it, must be drawn along the real axis where z <= +1.  None of
+this is controversial, although a few other writers have at times drawn the
+slits elsewhere either for a special purpose or by mistake; other tastes can
+be accomodated by substitutions sometimes so simple as writing, say, Log
+(-1) - Log (-1/z) in place of Log (z) to draw its slit along (and just
+under) the positive real axis instead of the negative real axis."
+
+> As extrinsic evidence
+> for this, I'll quote Ahlfors p. 98: "The cut along the positive axis could
+> be replaced by a cut along any simple arc from 0 to [infinity]... the cuts
+> are in no way distinguished lines on the surface, but the introduction of
+> specific cuts is necessary for descriptive purposes."  In his context he
+> was constructing a cut which would *not* be a usual choice, for the
+> function z**(1/n) where n > 1 is an integer.
+
+First, note that the cut for z ** (1/n) falls "naturally" on the negative
+real axis.  This is quite important, because we don't want the cut to lie on
+a part of the real axis where the equivalent real function is well-defined
+(x ** (1/n) is perfectly well-defined for x >= 0).
+
+Now it is true that you can put the cuts where you want.  For instance if
+you rewrite z ** (1/n) as ((a * z) ** (1/n)) * ((1/a) ** (1/n)), that causes
+the cut to rotate around the origin (its direction is given by -a*).  But
+then the resulting function is _not_ the sum of a power series, because we
+don't have f(z*) = f(z)* anymore.
+
+> Regardless, I intend to drop the suggestion that any secondary principle is
+> needed.
+
+I don't think a secondary principle is needed, but a note could be in order,
+to summarize the discussion we are having (if we are having this discussion,
+probably someone else could get confused too).
+
+****************************************************************
+
+From: Michael Yoder
+Sent: Thursday, December 14, 2000 12:20 PM
+
+Here (from Kahan's words) are the additional assumptions I knew had to be
+there:
+
+>  Let z* = x - iy denote the complex conjugate of z = x + iy; the
+>power series for f(x) satisfy the identity f(z*) = f(z)* within some complex
+>neighbourhood of the segment's interior, so the identity should persevere
+>throughout the principal domain's interior too.  Consequently complex
+>conjugation must map the slit(s) to itself/themselves.  The slit(s) of an
+>odd function f(z) = -f(-z) must be invariant under reflection in the origin
+>z = 0.
+
+Here he assumes *without* explicit statement (presumably by analogy) that
+if the multivalued function is odd, our single-valued restriction of it
+should be odd as well.
+
+Many years ago I would have taken assumptions like this for granted with
+impunity.  I am more careful nowadays because I've found cases where two
+seemingly self-evident assumptions contradict, and also cases where
+obviously desirable axioms lead to potentially large implementation
+difficulties.
+
+Indeed, the following problem occurs with his oddness axiom for Arcsin and
+Arctanh on machines without signed zeros.  (Here the branch cuts are that
+part of the real axis with absolute value greater than 1.)  Is it
+preferable for the implementation function to be odd on the branch cuts
+themselves, or for the result to match that which would obtain on an
+implementation with signed zeros for an argument with imaginary part
++0.0?  Of course he may have only meant to demand that symmetry in most of
+the complex plane and not on the cuts; this might be resolvable by reading
+the rest of his paper.
+
+To sum up: I prefer to state explicitly even the "obvious" axioms because,
+as in the example just cited, it is possible for two "obvious" axioms to
+collide.
+
+****************************************************************
+
+From: John Barnes
+Sent: Thursday, December 14, 2000 10:20 AM
+
+Thanks for keeping old John informed on this indeed gruesome
+mathematical topic. Analysis never was my first love - I was more for
+geometry (and curvacious girls).
+
+I met Kahan once.  In fact I gave him a lift from a conference we were
+both at somewhere in Oregon to the airport. It was a strange
+conference arranged by Los Alamos and I was invited to tell them about
+Ada.  Must have been around 1982.
+
+A bright man.  He told me how he designed the algorithms built in to
+the HP pocket calculator for intergration and equation solution.  He
+was given so many bytes to fit it in.
+
+Anyway, without reading this discussion in too much detail, I think
+the main thing is to ensure that the truth is told but I wouldn't give
+the reader too much detail or alternative views in case it just
+confuses.
+
+****************************************************************
+
+From: Randy Brukardt
+Sent: Thursday, December 14, 2000 5:14 PM
+
+> I don't think a secondary principle is needed, but a note could be in order,
+> to summarize the discussion we are having (if we are having this discussion,
+> probably someone else could get confused too).
+
+While I barely have a clue what this discussion is about (no, no, NO don't try
+to tell me!!), this sounds like an AARM-only note. I doubt we would want to
+clutter up the RM with this stuff.
+
+****************************************************************
+
+From: Pascal Leroy
+Sent: Friday, December 15, 2000 3:45 AM
+
+> While I barely have a clue what this discussion is about (no, no, NO don't
+> try to tell me!!),
+
+That's OK, as I said I am only copying you to make sure that the discussion
+is recorded in extenso.
+
+> this sounds like an AARM-only note. I doubt we would want
+> to clutter up the RM with this stuff.
+
+Undoubtedly.  Users of the RM don't want to know the details.  However a
+numerics expert would probably be interested in finding the assumptions
+documented in the AARM.  I wish the original authors of annex G had done
+that, because it would have been much easier to correct their mistake (and
+maybe they wouldn't even have made the mistake in the first place).
+
+****************************************************************
+
+From: Pascal Leroy
+Sent: Friday, December 15, 2000 3:57 AM
+
+> Here he assumes *without* explicit statement (presumably by analogy) that
+> if the multivalued function is odd, our single-valued restriction of it
+> should be odd as well.
+
+True.  Making this assumption explicit in the AI (and the AARM) is fine with
+me.
+
+> Indeed, the following problem occurs with his oddness axiom for Arcsin and
+> Arctanh on machines without signed zeros.  (Here the branch cuts are that
+> part of the real axis with absolute value greater than 1.)  Is it
+> preferable for the implementation function to be odd on the branch cuts
+> themselves, or for the result to match that which would obtain on an
+> implementation with signed zeros for an argument with imaginary part
+> +0.0?  Of course he may have only meant to demand that symmetry in most of
+> the complex plane and not on the cuts; this might be resolvable by reading
+> the rest of his paper.
+
+Kahan's paper was, among other things, insisting on the importance of signed
+zeros (the subtitle of the paper is: Much Ado About Nothing's Sign Bit).
+Other than explaining how complex elementary functions should be computed
+(this is surprisingly difficult because some of these functions behave
+wildly in the vicinity of their cuts), he explains that if you don't have
+signed zeros then you run into all sorts of contradictions when
+implementing/using these functions, because many natural mathematical
+identities become wrong on the cuts.
+
+(I must say btw that I cannot get too excited by non-IEEE machines these
+days.  And I would definitely say that, if the underlying hardware is IEEE,
+a decent Ada compiler must have 'Signed_Zeros = True.)
+
+****************************************************************
```

Questions? Ask the ACAA Technical Agent