Files
milsko/external/fdlibm/e_scalb.c
NishiOwO 7f523a3d76 add fdlibm
git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@557 b9cfdab3-6d41-4d17-bbe4-086880011989
2025-11-01 15:48:47 +00:00

43 lines
1019 B
C

/* @(#)e_scalb.c 1.3 95/01/18 */
/*
* ====================================================
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
*
* Developed at SunSoft, a Sun Microsystems, Inc. business.
* Permission to use, copy, modify, and distribute this
* software is freely granted, provided that this notice
* is preserved.
* ====================================================
*/
/*
* __fdlibm_scalb(x, fn) is provide for
* passing various standard test suite. One
* should use scalbn() instead.
*/
#include "math.h"
#ifdef _SCALB_INT
double __fdlibm_scalb(double x, int fn)
#else
double __fdlibm_scalb(double x, double fn)
#endif
{
#ifdef _SCALB_INT
return scalbn(x, fn);
#else
if(isnan(x) || isnan(fn)) return x * fn;
if(!finite(fn)) {
if(fn > 0.0) return x * fn;
else
return x / (-fn);
}
if(rint(fn) != fn) return (fn - fn) / (fn - fn);
if(fn > 65000.0) return scalbn(x, 65000);
if(-fn > 65000.0) return scalbn(x, -65000);
return scalbn(x, (int)fn);
#endif
}