forked from KolibriOS/kolibrios
newlib-2.1.0
git-svn-id: svn://kolibrios.org@4921 a494cfbc-eb01-0410-851d-a64ba20cac60
This commit is contained in:
30
contrib/sdk/sources/newlib/libc/stdlib/__exp10.c
Normal file
30
contrib/sdk/sources/newlib/libc/stdlib/__exp10.c
Normal file
@@ -0,0 +1,30 @@
|
||||
/*
|
||||
* compute 10**x by successive squaring.
|
||||
*/
|
||||
|
||||
#include <_ansi.h>
|
||||
#include "std.h"
|
||||
|
||||
double
|
||||
_DEFUN (__exp10, (x),
|
||||
unsigned x)
|
||||
{
|
||||
static _CONST double powtab[] =
|
||||
{1.0,
|
||||
10.0,
|
||||
100.0,
|
||||
1000.0,
|
||||
10000.0};
|
||||
|
||||
if (x < (sizeof (powtab) / sizeof (double)))
|
||||
return powtab[x];
|
||||
else if (x & 1)
|
||||
{
|
||||
return 10.0 * __exp10 (x - 1);
|
||||
}
|
||||
else
|
||||
{
|
||||
double n = __exp10 (x / 2);
|
||||
return n * n;
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user