981007-1.c   [plain text]


extern double fabs (double);
extern double sqrt (double);

typedef struct complexm {
  double re,im;
} complex;

static complex
setCom (double r, double i)
{
  complex ct;
  ct.re=fabs(r)<1E-300?0.0:r;
  ct.im=fabs(i)<1E-300?0.0:i;
  return ct;
}

static complex
csqrt_crash (double x)
{
  return (x>=0) ? setCom(sqrt(x),0) : setCom(0,sqrt(-x));
}