/* Copyright (C) 2002 by Red Hat, Incorporated. All rights reserved. * * Permission to use, copy, modify, and distribute this software * is freely granted, provided that this notice is preserved. */ #include "fdlibm.h" #ifdef __STDC__ float fmaf(float x, float y, float z) #else float fmaf(x,y,z) float x; float y; float z; #endif { /* NOTE: The floating-point exception behavior of this is not as * required. But since the basic function is not really done properly, * it is not worth bothering to get the exceptions right, either. */ /* Let the implementation handle this. */ /* <= NONSENSE! */ /* In floating-point implementations in which double is larger than float, * computing as double should provide the desired function. Otherwise, * the behavior will not be as specified in the standards. */ return (float) (((double) x * (double) y) + (double) z); } #ifdef _DOUBLE_IS_32BITS #ifdef __STDC__ double fma(double x, double y, double z) #else double fma(x,y,z) double x; double y; double z; #endif { return (double) fmaf((float) x, (float) y, (float) z); } #endif /* defined(_DOUBLE_IS_32BITS) */