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