1*10550Sdlw /* 2*10550Sdlw * "@(#)z_div.c 1.1" 3*10550Sdlw */ 4*10550Sdlw 5*10550Sdlw #include "complex" 6*10550Sdlw 7*10550Sdlw z_div(c, a, b) 8*10550Sdlw dcomplex *a, *b, *c; 9*10550Sdlw { 10*10550Sdlw double ratio, den; 11*10550Sdlw double abr, abi; 12*10550Sdlw 13*10550Sdlw if( (abr = b->dreal) < 0.) 14*10550Sdlw abr = - abr; 15*10550Sdlw if( (abi = b->dimag) < 0.) 16*10550Sdlw abi = - abi; 17*10550Sdlw if( abr <= abi ) 18*10550Sdlw { 19*10550Sdlw if(abi == 0) 20*10550Sdlw abort(); /* fatal("complex division by zero"); */ 21*10550Sdlw ratio = b->dreal / b->dimag ; 22*10550Sdlw den = b->dimag * (1 + ratio*ratio); 23*10550Sdlw c->dreal = (a->dreal*ratio + a->dimag) / den; 24*10550Sdlw c->dimag = (a->dimag*ratio - a->dreal) / den; 25*10550Sdlw } 26*10550Sdlw 27*10550Sdlw else 28*10550Sdlw { 29*10550Sdlw ratio = b->dimag / b->dreal ; 30*10550Sdlw den = b->dreal * (1 + ratio*ratio); 31*10550Sdlw c->dreal = (a->dreal + a->dimag*ratio) / den; 32*10550Sdlw c->dimag = (a->dimag - a->dreal*ratio) / den; 33*10550Sdlw } 34*10550Sdlw 35*10550Sdlw } 36