c3ad4b4583
the function naming problem for complex double function i've recently aksed for in -committers. (The recently committed rev 1.5 of proc.c was actually also part of this update.) Should the mailing lists come to an agreement that f2c better belongs into the ports, this could be done nevertheless. For the time being, we've at least got a current version now. Thanks, Steve! Submitted by: Steve Kargl <sgk@troutmask.apl.washington.edu>
37 lines
709 B
C
37 lines
709 B
C
#include "f2c.h"
|
|
|
|
#ifdef KR_headers
|
|
extern VOID sig_die();
|
|
VOID z_div(c, a, b) doublecomplex *a, *b, *c;
|
|
#else
|
|
extern void sig_die(char*, int);
|
|
void z_div(doublecomplex *c, doublecomplex *a, doublecomplex *b)
|
|
#endif
|
|
{
|
|
double ratio, den;
|
|
double abr, abi, cr;
|
|
|
|
if( (abr = b->r) < 0.)
|
|
abr = - abr;
|
|
if( (abi = b->i) < 0.)
|
|
abi = - abi;
|
|
if( abr <= abi )
|
|
{
|
|
if(abi == 0)
|
|
sig_die("complex division by zero", 1);
|
|
ratio = b->r / b->i ;
|
|
den = b->i * (1 + ratio*ratio);
|
|
cr = (a->r*ratio + a->i) / den;
|
|
c->i = (a->i*ratio - a->r) / den;
|
|
}
|
|
|
|
else
|
|
{
|
|
ratio = b->i / b->r ;
|
|
den = b->r * (1 + ratio*ratio);
|
|
cr = (a->r + a->i*ratio) / den;
|
|
c->i = (a->i - a->r*ratio) / den;
|
|
}
|
|
c->r = cr;
|
|
}
|