murphy@pur-phy (William J. Murphy) (02/20/89)
I posted sometime last week about taking the sources for atan2 and j0, j1, y0, y1 from our local Unix box for use with Manx 3.6 c. Well, I was informed that I need to clarify that they were from 4.3BSD Unix and NOT from AT&T derivitives. As I now understand it, A user may not take sources of any kind from AT&T copyrighted materials. Sorry for the confusion. Bill Murphy
ecphssrw@afws.csun.edu (Stephen Walton) (02/24/89)
This took about ten minutes, counting testing.  Based on the manual
entry for Microsoft C's atan2 (which is all I had around), but the
code itself is entirely PD (in fact, I just wrote and tested it
against the system atan2()).
/* myatan2 */
#include <errno.h>
#include <stdio.h>
#include <math.h>
#define PI 3.14159265359
extern int errno;
double myatan2(y, x)
double y, x; {
    double atan();
    if (x == 0.0) {
        if (y == 0.0) {
	    errno = EDOM;
	    fputs("atan2: DOMAIN error\n", stderr);
	    return(0.0);
        } else if (y > 0.0)
            return(PI/2.0);
        else
            return(-PI/2.0);
    } else if (x > 0)
        return(atan(y/x));
    else
        if (y >= 0.0)
            return(atan(y/x) + PI);
        else
            return(atan(y/x) - PI);
}