forked from len0rd/rockbox
Minor additions to floating point math functions.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@22086 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
2fb73842a9
commit
f95dc688cf
1 changed files with 19 additions and 30 deletions
|
@ -333,11 +333,19 @@ long rb_atol(const char* str)
|
||||||
|
|
||||||
float rb_sin(float rad)
|
float rb_sin(float rad)
|
||||||
{
|
{
|
||||||
|
int cycles;
|
||||||
|
|
||||||
/* Trim input value to -PI..PI interval. */
|
/* Trim input value to -PI..PI interval. */
|
||||||
if(rad < -3.14159265)
|
if(rad > 3.14159265)
|
||||||
rad += 6.28318531;
|
{
|
||||||
else if(rad > 3.14159265)
|
cycles = rad / 6.28318531;
|
||||||
rad -= 6.28318531;
|
rad -= (6.28318531 * (float) cycles);
|
||||||
|
}
|
||||||
|
else if(rad < -3.14159265)
|
||||||
|
{
|
||||||
|
cycles = rad / -6.28318531;
|
||||||
|
rad += (6.28318531 * (float) cycles);
|
||||||
|
}
|
||||||
|
|
||||||
if(rad < 0)
|
if(rad < 0)
|
||||||
return (1.27323954 * rad + 0.405284735 * rad * rad);
|
return (1.27323954 * rad + 0.405284735 * rad * rad);
|
||||||
|
@ -348,11 +356,7 @@ float rb_sin(float rad)
|
||||||
float rb_cos(float rad)
|
float rb_cos(float rad)
|
||||||
{
|
{
|
||||||
/* Compute cosine: sin(x + PI/2) = cos(x) */
|
/* Compute cosine: sin(x + PI/2) = cos(x) */
|
||||||
rad += 1.57079632;
|
return rb_sin(rad + 1.57079632);
|
||||||
if(rad > 3.14159265)
|
|
||||||
rad -= 6.28318531;
|
|
||||||
|
|
||||||
return rb_sin(rad);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -2108,54 +2112,39 @@ union ieee754_double
|
||||||
/* This is the IEEE 754 double-precision format. */
|
/* This is the IEEE 754 double-precision format. */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
#if defined(ROCKBOX_BIG_ENDIAN)
|
#ifdef ROCKBOX_BIG_ENDIAN
|
||||||
unsigned int negative:1;
|
unsigned int negative:1;
|
||||||
unsigned int exponent:11;
|
unsigned int exponent:11;
|
||||||
/* Together these comprise the mantissa. */
|
/* Together these comprise the mantissa. */
|
||||||
unsigned int mantissa0:20;
|
unsigned int mantissa0:20;
|
||||||
unsigned int mantissa1:32;
|
unsigned int mantissa1:32;
|
||||||
#else
|
#else /* ROCKBOX_LITTLE_ENDIAN */
|
||||||
# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
|
|
||||||
unsigned int mantissa0:20;
|
|
||||||
unsigned int exponent:11;
|
|
||||||
unsigned int negative:1;
|
|
||||||
unsigned int mantissa1:32;
|
|
||||||
# else
|
|
||||||
/* Together these comprise the mantissa. */
|
/* Together these comprise the mantissa. */
|
||||||
unsigned int mantissa1:32;
|
unsigned int mantissa1:32;
|
||||||
unsigned int mantissa0:20;
|
unsigned int mantissa0:20;
|
||||||
unsigned int exponent:11;
|
unsigned int exponent:11;
|
||||||
unsigned int negative:1;
|
unsigned int negative:1;
|
||||||
# endif
|
#endif /* ROCKBOX_LITTLE_ENDIAN */
|
||||||
#endif /* Little endian. */
|
|
||||||
} ieee;
|
} ieee;
|
||||||
|
|
||||||
/* This format makes it easier to see if a NaN is a signalling NaN. */
|
/* This format makes it easier to see if a NaN is a signalling NaN. */
|
||||||
struct
|
struct
|
||||||
{
|
{
|
||||||
#if defined(ROCKBOX_BIG_ENDIAN)
|
#ifdef ROCKBOX_BIG_ENDIAN
|
||||||
unsigned int negative:1;
|
unsigned int negative:1;
|
||||||
unsigned int exponent:11;
|
unsigned int exponent:11;
|
||||||
unsigned int quiet_nan:1;
|
unsigned int quiet_nan:1;
|
||||||
/* Together these comprise the mantissa. */
|
/* Together these comprise the mantissa. */
|
||||||
unsigned int mantissa0:19;
|
unsigned int mantissa0:19;
|
||||||
unsigned int mantissa1:32;
|
unsigned int mantissa1:32;
|
||||||
#else
|
#else /* ROCKBOX_LITTLE_ENDIAN */
|
||||||
# if __FLOAT_WORD_ORDER == __BIG_ENDIAN
|
|
||||||
unsigned int mantissa0:19;
|
|
||||||
unsigned int quiet_nan:1;
|
|
||||||
unsigned int exponent:11;
|
|
||||||
unsigned int negative:1;
|
|
||||||
unsigned int mantissa1:32;
|
|
||||||
# else
|
|
||||||
/* Together these comprise the mantissa. */
|
/* Together these comprise the mantissa. */
|
||||||
unsigned int mantissa1:32;
|
unsigned int mantissa1:32;
|
||||||
unsigned int mantissa0:19;
|
unsigned int mantissa0:19;
|
||||||
unsigned int quiet_nan:1;
|
unsigned int quiet_nan:1;
|
||||||
unsigned int exponent:11;
|
unsigned int exponent:11;
|
||||||
unsigned int negative:1;
|
unsigned int negative:1;
|
||||||
# endif
|
#endif /* ROCKBOX_LITTLE_ENDIAN */
|
||||||
#endif
|
|
||||||
} ieee_nan;
|
} ieee_nan;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue