xref: /dflybsd-src/contrib/openbsd_libm/src/s_scalbln.c (revision 4382f29d99a100bd77a81697c2f699c11f6a472a)
1*05a0b428SJohn Marino /*	$OpenBSD: s_scalbln.c,v 1.1 2009/07/25 11:38:10 martynas Exp $	*/
2*05a0b428SJohn Marino 
3*05a0b428SJohn Marino /*
4*05a0b428SJohn Marino  * Written by Martynas Venckus.  Public domain
5*05a0b428SJohn Marino  */
6*05a0b428SJohn Marino 
7*05a0b428SJohn Marino #include <limits.h>
8*05a0b428SJohn Marino #include <math.h>
9*05a0b428SJohn Marino 
10*05a0b428SJohn Marino double
scalbln(double x,long n)11*05a0b428SJohn Marino scalbln(double x, long n)
12*05a0b428SJohn Marino {
13*05a0b428SJohn Marino 	if (n < INT_MIN)
14*05a0b428SJohn Marino 		return scalbn(x, INT_MIN);
15*05a0b428SJohn Marino 	else if (n > INT_MAX)
16*05a0b428SJohn Marino 		return scalbn(x, INT_MAX);
17*05a0b428SJohn Marino 	else
18*05a0b428SJohn Marino 		return scalbn(x, (int)n);
19*05a0b428SJohn Marino }
20*05a0b428SJohn Marino 
21*05a0b428SJohn Marino float
scalblnf(float x,long n)22*05a0b428SJohn Marino scalblnf(float x, long n)
23*05a0b428SJohn Marino {
24*05a0b428SJohn Marino 	if (n < INT_MIN)
25*05a0b428SJohn Marino 		return scalbnf(x, INT_MIN);
26*05a0b428SJohn Marino 	else if (n > INT_MAX)
27*05a0b428SJohn Marino 		return scalbnf(x, INT_MAX);
28*05a0b428SJohn Marino 	else
29*05a0b428SJohn Marino 		return scalbnf(x, (int)n);
30*05a0b428SJohn Marino }
31*05a0b428SJohn Marino 
32*05a0b428SJohn Marino long double
scalblnl(long double x,long n)33*05a0b428SJohn Marino scalblnl(long double x, long n)
34*05a0b428SJohn Marino {
35*05a0b428SJohn Marino 	if (n < INT_MIN)
36*05a0b428SJohn Marino 		return scalbnl(x, INT_MIN);
37*05a0b428SJohn Marino 	else if (n > INT_MAX)
38*05a0b428SJohn Marino 		return scalbnl(x, INT_MAX);
39*05a0b428SJohn Marino 	else
40*05a0b428SJohn Marino 		return scalbnl(x, (int)n);
41*05a0b428SJohn Marino }
42*05a0b428SJohn Marino 
43