Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 652 → Rev 653

/uspace/trunk/softfloat/include/comparison.h
32,5 → 32,11
inline int isFloat32NaN(float32 f);
inline int isFloat32SigNaN(float32 f);
 
inline int isFloat32Infinity(float32 f)
 
inline int isFloat32eq(float32 a, float32 b);
inline int isFloat32lt(float32 a, float32 b);
inline int isFloat32gt(float32 a, float32 b);
 
#endif
 
/uspace/trunk/softfloat/generic/softfloat.c
136,5 → 136,82
{
return __eqsf2(a,b);
};
 
/* return value >= 0 if a>=b and neither is NaN */
int __gesf2(float a, float b)
{
float32 fa,fb;
fa.f=a;
fb.f=b;
if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) {
/* TODO: sigNaNs*/
return 1;
};
if (isFloat32eq(fa,fb)) {
return 0;
};
if (isFloat32gt(fa,fb)) {
return 1;
};
return -1;
}
 
/** Return negative value, if a<b and neither is NaN*/
int __ltsf2(float a, float b)
{
float32 fa,fb;
fa.f=a;
fb.f=b;
if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) {
/* TODO: sigNaNs*/
return 1;
};
if (isFloat32lt(fa, fb)) {
return -1;
};
return 0;
}
 
/* return value <= 0 if a<=b and neither is NaN */
int __lesf2(float a, float b)
{
float32 fa,fb;
fa.f=a;
fb.f=b;
if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) {
/* TODO: sigNaNs*/
return 1;
};
if (isFloat32eq(fa,fb)) {
return 0;
};
if (isFloat32lt(fa,fb)) {
return -1;
};
return 1;
}
 
/** Return positive value, if a>b and neither is NaN*/
int __ltsf2(float a, float b)
{
float32 fa,fb;
fa.f=a;
fb.f=b;
if ((isFloat32NaN(fa))||(isFloat32NaN(fb))) {
/* TODO: sigNaNs*/
return 1;
};
if (isFloat32gt(fa, fb)) {
return 1;
};
return 0;
}
 
/* Other functions */
 
/uspace/trunk/softfloat/generic/comparison.c
53,7 → 53,7
}
 
/**
* @return 1, if a>b - but NaNs are not recognized
* @return 1, if a<b - but NaNs are not recognized
*/
inline int isFloat32lt(float32 a, float32 b)
{
66,4 → 66,18
}
 
/**
* @return 1, if a>b - but NaNs are not recognized
*/
inline int isFloat32gt(float32 a, float32 b)
{
if (((a.binary| b.binary)&0x7FFFFFFF)==0) {
return 0;
};
a.parts.sign^=a.parts.sign;
b.parts.sign^=b.parts.sign;
return (a.binary>b.binary);
}