|
@@ -61,6 +61,37 @@ FLOATRET NAME(blasint *N, FLOAT *x, blasint *INCX){ |
|
|
#else |
|
|
#else |
|
|
return fabsf(x[0]); |
|
|
return fabsf(x[0]); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
if (incx == 0) |
|
|
|
|
|
#ifndef COMPLEX |
|
|
|
|
|
#ifdef DOUBLE |
|
|
|
|
|
return (sqrt((double)n)*fabs(x[0])); |
|
|
|
|
|
#else |
|
|
|
|
|
return (sqrt((float)n)*fabsf(x[0])); |
|
|
|
|
|
#endif |
|
|
|
|
|
#else |
|
|
|
|
|
#ifdef DOUBLE |
|
|
|
|
|
{ |
|
|
|
|
|
double fr=fabs(x[0]); |
|
|
|
|
|
double fi=fabs(x[1]); |
|
|
|
|
|
double fmin=MIN(fr,fi); |
|
|
|
|
|
double fmax=MAX(fr,fi); |
|
|
|
|
|
if (fmax==0.) return(fmax); |
|
|
|
|
|
if (fmax==fmin) return(sqrt((double)n)*sqrt(2.)*fmax); |
|
|
|
|
|
return (sqrt((double)n) * fmax * sqrt (1. + (fmin/fmax)*(fmin/fmax))); |
|
|
|
|
|
} |
|
|
|
|
|
#else |
|
|
|
|
|
{ |
|
|
|
|
|
float fr=fabs(x[0]); |
|
|
|
|
|
float fi=fabs(x[1]); |
|
|
|
|
|
float fmin=MIN(fr,fi); |
|
|
|
|
|
float fmax=MAX(fr,fi); |
|
|
|
|
|
if (fmax==0.) return(fmax); |
|
|
|
|
|
if (fmax==fmin) return(sqrt((float)n)*sqrt(2.)*fmax); |
|
|
|
|
|
return (sqrt((float)n) * fmax * sqrt (1. + (fmin/fmax)*(fmin/fmax))); |
|
|
|
|
|
} |
|
|
|
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
if (incx < 0) |
|
|
if (incx < 0) |
|
@@ -97,13 +128,50 @@ FLOAT CNAME(blasint n, FLOAT *x, blasint incx){ |
|
|
|
|
|
|
|
|
if (n <= 0) return 0.; |
|
|
if (n <= 0) return 0.; |
|
|
|
|
|
|
|
|
#ifndef COMPLEX |
|
|
|
|
|
if (n == 1) |
|
|
if (n == 1) |
|
|
|
|
|
#ifndef COMPLEX |
|
|
#ifdef DOUBLE |
|
|
#ifdef DOUBLE |
|
|
return fabs(x[0]); |
|
|
return fabs(x[0]); |
|
|
#else |
|
|
#else |
|
|
return fabsf(x[0]); |
|
|
return fabsf(x[0]); |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
#else |
|
|
|
|
|
#ifdef DOUBLE |
|
|
|
|
|
return fabs(x[0]+fabs(x[1])); |
|
|
|
|
|
#else |
|
|
|
|
|
return fabsf(x[0]+fabsf(x[1])); |
|
|
|
|
|
#endif |
|
|
|
|
|
#endif |
|
|
|
|
|
|
|
|
|
|
|
if (incx == 0) |
|
|
|
|
|
#ifndef COMPLEX |
|
|
|
|
|
#ifdef DOUBLE |
|
|
|
|
|
return (sqrt((double)n)*fabs(x[0])); |
|
|
|
|
|
#else |
|
|
|
|
|
return (sqrt((float)n)*fabsf(x[0])); |
|
|
|
|
|
#endif |
|
|
|
|
|
#else |
|
|
|
|
|
#ifdef DOUBLE |
|
|
|
|
|
{ |
|
|
|
|
|
double fr=fabs(x[0]); |
|
|
|
|
|
double fi=fabs(x[1]); |
|
|
|
|
|
double fmin=MIN(fr,fi); |
|
|
|
|
|
double fmax=MAX(fr,fi); |
|
|
|
|
|
if (fmax==0.) return(fmax); |
|
|
|
|
|
if (fmax==fmin) return(sqrt((double)n)*sqrt(2.)*fmax); |
|
|
|
|
|
return (sqrt((double)n) * fmax * sqrt (1. + (fmin/fmax)*(fmin/fmax))); |
|
|
|
|
|
} |
|
|
|
|
|
#else |
|
|
|
|
|
{ |
|
|
|
|
|
float fr=fabs(x[0]); |
|
|
|
|
|
float fi=fabs(x[1]); |
|
|
|
|
|
float fmin=MIN(fr,fi); |
|
|
|
|
|
float fmax=MAX(fr,fi); |
|
|
|
|
|
if (fmax==0.) return(fmax); |
|
|
|
|
|
if (fmax==fmin) return(sqrt((float)n)*sqrt(2.)*fmax); |
|
|
|
|
|
return (sqrt((float)n) * fmax * sqrt (1. + (fmin/fmax)*(fmin/fmax))); |
|
|
|
|
|
} |
|
|
|
|
|
#endif |
|
|
#endif |
|
|
#endif |
|
|
|
|
|
|
|
|
if (incx < 0) |
|
|
if (incx < 0) |
|
|