#include "f2c.h"

extern void sig_die (char *, int);
void
c_div (complex * c, complex * a, complex * b)
{
  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)
	{
#ifdef IEEE_COMPLEX_DIVIDE
	  float af, bf;
	  af = bf = abr;
	  if (a->i != 0 || a->r != 0)
	    af = 1.;
	  c->i = c->r = af / bf;
	  return;
#else
	  sig_die ("complex division by zero", 1);
#endif
	}
      ratio = (double) 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 = (double) 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;
}
