Do some datalab
This commit is contained in:
parent
1dad907eed
commit
8360bdc1fe
|
@ -284,7 +284,7 @@ int isPositive(int x)
|
|||
*/
|
||||
int isLessOrEqual(int x, int y)
|
||||
{
|
||||
int val = ((x + ~y) >> 31)&1;
|
||||
int val = ((x + ~y) >> 31) & 1;
|
||||
x = x >> 31;
|
||||
y = y >> 31;
|
||||
return ((x & 1) | !y) & (((x & 1) & !y) | (val));
|
||||
|
@ -368,7 +368,63 @@ unsigned float_i2f(int x)
|
|||
* Max ops: 30
|
||||
* Rating: 4
|
||||
*/
|
||||
// unsigned float_twice(unsigned uf)
|
||||
// {
|
||||
// // INF and NaN judge
|
||||
// int expMask, exp, sign, signMask, frac, fracMask, uf_nosign;
|
||||
// expMask = 0x7f800000; // get exponent bits
|
||||
// exp = (uf & expMask);
|
||||
// if (exp == expMask)
|
||||
// {
|
||||
// return uf;
|
||||
// }
|
||||
// // Special numbers
|
||||
// signMask = 0x80000000; // get sign bit
|
||||
// sign = (uf & signMask) >> 31;
|
||||
// fracMask = 0x007fffff; // get fraction bits
|
||||
// frac = uf & fracMask;
|
||||
// if (sign == 0 && frac == 0) // Zero, just return 0
|
||||
// {
|
||||
// return 0;
|
||||
// }
|
||||
// // Denormalizd numbers
|
||||
// uf_nosign = uf & 0x7fffffff; // remove sign bit
|
||||
// if ((uf_nosign >> 23) == 0)
|
||||
// {
|
||||
// uf_nosign = uf_nosign << 1 | sign;
|
||||
// return uf_nosign;
|
||||
// }
|
||||
// // Normalized numbers
|
||||
// if (uf_nosign >> 23 == 0xff) //??
|
||||
// {
|
||||
// return uf;
|
||||
// }
|
||||
// if ((exp >> 23) + 1 == 0xff)
|
||||
// {
|
||||
// return sign | 0x7f800000;
|
||||
// }
|
||||
// return sign | ((exp >> 23) + 1) << 23 | frac << 1;
|
||||
// }
|
||||
|
||||
unsigned float_twice(unsigned uf)
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
int uf_nosign;
|
||||
int sign = uf & 0x80000000; // sign bit
|
||||
int exp = uf & 0x7f800000; // exponent bits
|
||||
int fraction = uf & 0x7fffff; // fraction bits
|
||||
uf_nosign = uf & 0x7fffffff; // remove sign
|
||||
if ((uf_nosign >> 23) == 0x0)
|
||||
{
|
||||
uf_nosign = uf_nosign << 1 | sign;
|
||||
return uf_nosign;
|
||||
}
|
||||
if ((uf_nosign >> 23) == 0xff)
|
||||
{
|
||||
return uf;
|
||||
}
|
||||
if ((exp >> 23) + 1 == 0xff)
|
||||
{
|
||||
return sign | 0x7f800000;
|
||||
}
|
||||
return sign | (((exp >> 23) + 1) << 23) | fraction;
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue