Date: Wed, 20 Sep 89 11:24:48 EDTFrom: gls@Think.COM (Guy Steele)

Message-Id: <8909201524.AA21857@verdi.think.com>

To: x3j13@sail.stanford.edu

Cc: gls@Think.COM, cl-cleanup@sail.stanford.edu

Subject: Issue COMPLEX-ATANH-BOGUS-FORMULA

I hate to bring *anything* up at this late date, but while working over the

numbers chapter second edition I have been going over this branch cut stuff

one more time, with even greater care, and have discovered that the formula

for

ATANHon page 209 and again on page 213 is completely bogus. What thatcomputes is not anything like a hyperbolic arc tangent. It would seem that

I must have mistranscribed the APL formula in Penfield's article.

CLtL has: arctanh z = log ((1+z)

sqrt(1 - (1 / z^2)))

Should be: arctanh z = log ((1+z)

sqrt(1 / (1 - z^2)))

Note that they differ in the transposition of two operators. (Boy, am I

embarrassed.)

Clearly this must be corrected. In the meantime I have found a more

definitive treatment of complex branch cuts by W. Kahan, and I propose to

follow his recommendations. This involves correcting the formula for

ATANH, and adopting new formulas forACOSandACOSHthat are equivalent tothe ones we have now but more perspicuous.

I would appreciate knowing very soon on an informal basis whether anyone

objects to this change, so that I can include some discussion of it in the

second edition. (Of course I'm not asking for a vote until we have an

official meeting.)

--Guy

----------------------------------------------------------------

Status:New proposal

Forum:Cleanup

Issue:COMPLEX-ATANH-BOGUS-FORMULA

References:CLtL pp. 209, 212, 213Penfield, P. "Principal Values and Branch Cuts in

Complex APL", Proc. APL 81 Conference Proceedings,

Association for Computing Machinery, 1981

Kahan, W. "Branch Cuts for Complex Elementary

Functions, or Much Ado About Nothing's Sign Bit"

in Iserles and Powell (eds.) "The State of the Art

in Numerical Analysis", pp. 165-211, Clarendon

Press, 1987

Related issues: COMPLEX-ATAN-BRANCH-CUT, IEEE-ATAN-BRANCH-CUT

Category:CHANGE

Edit history:Version 1, 20-SEP-89, Steele

Problem description:

The formula that defines

ATANHin CLtL is incorrect, apparentlybecause of a mistranscription of a formula from Penfield's article.

CLtL has: arctanh z = log ((1+z)

sqrt(1 - (1 / z^2)))

Should be: arctanh z = log ((1+z)

sqrt(1 / (1 - z^2)))

However, given the change to

ATANin issue COMPLEX-ATAN-BRANCH-CUT,it seems simpler to follow Kahan's recommendation and define

arctanh z = (log(1+z) - log(1-z))/2

thereby preserving the identity i arctan z = arctanh iz .

Kahan also notes that Penfield's formula for arccosh (CLtL p. 213)

arccosh z = log(z + (z + 1)

sqrt((z-1)/(z+1)))

has a gratuitous removable singularity at z=-1 and recommends

arccosh z = 2 log(

sqrt((z+1)/2) +sqrt((z-1)/2))

which has the same values and is also well-defined at z=-1.

Finally, Kahan recommends a different defining formula for

acosthat is more similar to that of

acosh(but less similar to thatof

asin).

Proposal (COMPLEX-ATANH-BRANCH-CUT:TWEAK-MORE):

(1) Replace the erroneous formula

arctanh z = log ((1+z)

sqrt(1 - (1 / z^2)))with

arctanh z = (log(1+z) - log(1-z))/2

(2) Note that i arctan z = arctanh iz .

(3) Replace the gratuitously singular formula

arccosh z = log(z + (z + 1)

sqrt((z-1)/(z+1)))with

arccosh z = 2 log(

sqrt((z+1)/2) +sqrt((z-1)/2))

(4) Adopt the formula (already in CLtL)

arccos z = (pi / 2) - arcsin z

as the official definition of arccos, and also note that the

formulas

arccos z = -i log(z + i

sqrt(1 - z^2))

(already in CLtL) and

arccos z = 2 log(

sqrt((1+z)/2) + isqrt((1-z)/2)) / i

(recommended by Kahan) are equivalent.

Rationale:

Compatibility with what seems to be becoming

standardpractice.

Current practice:

Implementations I have checked have a correct implementation

of

ATANHrather than slavishly following the bogus CLtL formula.

Cost to Implementors:

ATANHmust be rewritten. It is not a very difficult fix.

Possibly

ACOSHmust be rewritten. It is not a very difficult fix.

Cost to Users:

The compatibility note on p. 210 of CLtL gave users fair warning that

a change of this kind might be adopted.

Cost of non-adoption:

Possible incorrect implementations of

ATANH.

Incompatibility with HP calculators.

Benefits:

Numerical analysts may find the new definition easier to use.

Esthetics:

A toss-up, except to those who care.

Discussion:

Kahan's article not only discussed formulas but also gives specific

implementation techniques for use with IEEE 754 arithmetic.