#include <assert.h>
-#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_REAL_4)
+
+#if defined (HAVE_GFC_REAL_4) && defined (HAVE_GFC_REAL_4) && defined (HAVE_SQRTF) && defined (HAVE_FABSF)
+
+#define MATHFUNC(funcname) funcname ## f
extern void norm2_r4 (gfc_array_r4 * const restrict,
count[n] = 0;
dstride[n] = GFC_DESCRIPTOR_STRIDE(retarray,n);
if (extent[n] <= 0)
- len = 0;
+ return;
}
base = array->data;
{
GFC_REAL_4 scale;
- result = 0.0F;
- scale = 1.0F;
+ result = 0;
+ scale = 1;
if (len <= 0)
- *dest = 0.0F;
+ *dest = 0;
else
{
for (n = 0; n < len; n++, src += delta)
{
- if (*src != 0.0F)
+ if (*src != 0)
{
GFC_REAL_4 absX, val;
- absX = fabsf (*src);
+ absX = MATHFUNC(fabs) (*src);
if (scale < absX)
{
val = scale / absX;
- result = 1.0F + result * val * val;
+ result = 1 + result * val * val;
scale = absX;
}
else
}
}
}
- result = scale * sqrtf (result);
+ result = scale * MATHFUNC(sqrt) (result);
*dest = result;
}
}