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 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 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 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