URL
https://opencores.org/ocsvn/or1k/or1k/trunk
Only display areas with differences |
Details |
Blame |
View Log
Rev 40 |
Rev 1765 |
/*
|
/*
|
* compute 10**x by successive squaring.
|
* compute 10**x by successive squaring.
|
*/
|
*/
|
|
|
#include <_ansi.h>
|
#include <_ansi.h>
|
|
|
double
|
double
|
_DEFUN (__exp10, (x),
|
_DEFUN (__exp10, (x),
|
unsigned x)
|
unsigned x)
|
{
|
{
|
static _CONST double powtab[] =
|
static _CONST double powtab[] =
|
{1.0,
|
{1.0,
|
10.0,
|
10.0,
|
100.0,
|
100.0,
|
1000.0,
|
1000.0,
|
10000.0};
|
10000.0};
|
|
|
if (x < (sizeof (powtab) / sizeof (double)))
|
if (x < (sizeof (powtab) / sizeof (double)))
|
return powtab[x];
|
return powtab[x];
|
else if (x & 1)
|
else if (x & 1)
|
{
|
{
|
return 10.0 * __exp10 (x - 1);
|
return 10.0 * __exp10 (x - 1);
|
}
|
}
|
else
|
else
|
{
|
{
|
double n = __exp10 (x / 2);
|
double n = __exp10 (x / 2);
|
return n * n;
|
return n * n;
|
}
|
}
|
}
|
}
|
|
|
© copyright 1999-2024
OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.