[gambit-list] Kahan's codes for complex functions

Bradley Lucier lucier at math.purdue.edu
Mon Nov 18 18:21:04 EST 2013


I've started implementing the codes in Kahan's paper "Branch Cuts for 
Complex Elementary Functions, or Much Ado About Nothing's Sign Bit".  
The first nontrivial code is for complex magnitude, which he calls cabs.

I've met Kahan a number of times, mainly when I was a graduate student, 
and he's a very bright guy.  A bit scary, actually.

Anyway, I've now compared his code to our current magnitude code for 
1,000,000 pairs of floating-point numbers exponentially distributed (the 
logarithms are distributed uniformly) between the smallest positive 
flonum and the largest finite flonum.

A correctly-rounded result has an error of less than 1/2 unit in the 
last place (ulp). I recorded the number of times the answers were 
incorrect (but still within one ulp of the true answer) and the number 
of times the error was greater than 1 ulp.  The correct answers were 
computed using my computable reals code.

The results were as follows:

Current Gambit magnitude:

Incorrect, but within 1 ulp: 7909
Incorrect, error > 1 ulp: 2132

Kahan's cabs:

Incorrect, but within 1 ulp: 150
Incorrect, error > 1 ulp: 0

Like I said, a bit scary.


More information about the Gambit-list mailing list