xref: /netbsd-src/lib/libm/src/w_fmodl.c (revision 497f60487129de90c1624fc5a7630fcef81c85b8)
1d0d44021Sjoerg /* @(#)w_fmod.c 5.1 93/09/24 */
2d0d44021Sjoerg /*
3d0d44021Sjoerg  * ====================================================
4d0d44021Sjoerg  * Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
5d0d44021Sjoerg  *
6d0d44021Sjoerg  * Developed at SunPro, a Sun Microsystems, Inc. business.
7d0d44021Sjoerg  * Permission to use, copy, modify, and distribute this
8d0d44021Sjoerg  * software is freely granted, provided that this notice
9d0d44021Sjoerg  * is preserved.
10d0d44021Sjoerg  * ====================================================
11d0d44021Sjoerg  */
12d0d44021Sjoerg 
13d0d44021Sjoerg #include <sys/cdefs.h>
14*497f6048Smartin __RCSID("$NetBSD: w_fmodl.c,v 1.4 2013/11/21 13:41:10 martin Exp $");
15d0d44021Sjoerg 
16d0d44021Sjoerg /*
17d0d44021Sjoerg  * wrapper fmodl(x,y)
18d0d44021Sjoerg  */
19d0d44021Sjoerg #include "namespace.h"
20d0d44021Sjoerg 
21d0d44021Sjoerg #include "math.h"
22d0d44021Sjoerg #include "math_private.h"
23d0d44021Sjoerg 
24e53a269bSjoerg #ifdef __HAVE_LONG_DOUBLE
25e53a269bSjoerg 
26d0d44021Sjoerg #ifdef __weak_alias
__weak_alias(fmodl,_fmodl)27d0d44021Sjoerg __weak_alias(fmodl, _fmodl)
28d0d44021Sjoerg #endif
29d0d44021Sjoerg 
30d0d44021Sjoerg long double
31d0d44021Sjoerg fmodl(long double x, long double y)	/* wrapper fmod */
32d0d44021Sjoerg {
33d0d44021Sjoerg #ifdef _IEEE_LIBM
34d0d44021Sjoerg 	return __ieee754_fmodl(x,y);
35d0d44021Sjoerg #else
36*497f6048Smartin 	long double z;
37d0d44021Sjoerg 	z = __ieee754_fmodl(x,y);
38d0d44021Sjoerg 	if(_LIB_VERSION == _IEEE_ ||isnan(y)||isnan(x)) return z;
39d0d44021Sjoerg 	if(y==0.0) {
404281b1a8Sjoerg 	        return __kernel_standard(x,y,227); /* fmod(x,0) */
41d0d44021Sjoerg 	} else
42d0d44021Sjoerg 	    return z;
43d0d44021Sjoerg #endif
44d0d44021Sjoerg }
45e53a269bSjoerg 
46e53a269bSjoerg #endif
47