#ifdef KR_headers
extern double sqrt();
double f__cabs(real, imag) double real, imag;
#else
#undef abs
#include "math.h"
double f__cabs(double real, double imag)
#endif
{
  double temp;

  if(real < 0)
    real = -real;
  if(imag < 0)
    imag = -imag;
  if(imag > real)
  {
    temp = real;
    real = imag;
    imag = temp;
  }
  if((real + imag) == real)
    return(real);

  temp = imag / real;
  temp = real * sqrt(1.0 + temp * temp); /*overflow!!*/
  return(temp);
}
