Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 697 → Rev 698

/uspace/trunk/softfloat/generic/softfloat.c
49,7 → 49,7
return subFloat32(fa,fb).f;
}
return addFloat32(fa,fb).f;
};
}
 
float __subsf3(float a, float b)
{
61,7 → 61,7
return addFloat32(fa,fb).f;
}
return subFloat32(fa,fb).f;
};
}
 
float __mulsf3(float a, float b)
{
77,7 → 77,7
fa.f=a;
fb.f=b;
// return divFloat32(fa, fb).f;
};
}
 
float __negsf2(float a)
{
85,7 → 85,7
fa.f=a;
fa.parts.sign=!fa.parts.sign;
return fa.f;
};
}
 
double __negdf2(double a)
{
93,7 → 93,7
fa.d=a;
fa.parts.sign=!fa.parts.sign;
return fa.d;
};
}
 
/* Conversion functions */
 
102,7 → 102,7
float32 fa;
fa.f = a;
return convertFloat32ToFloat64(fa).d;
};
}
 
float __truncdfsf2(double a)
{
110,6 → 110,7
da.d = a;
return convertFloat64ToFloat32(da).f;
}
 
/* Comparison functions */
 
/* a<b .. -1
143,7 → 144,7
fa.f=a;
fb.f=b;
return ((isFloat32NaN(fa))||(isFloat32NaN(fb)));
};
}
 
/**
* @return zero, if neither argument is a NaN and are equal
158,13 → 159,13
return 1;
};
return isFloat32eq(fa,fb)-1;
};
}
 
/* strange behavior, but it was in gcc documentation */
int __nesf2(float a, float b)
{
return __eqsf2(a,b);
};
}
 
/* return value >= 0 if a>=b and neither is NaN */
int __gesf2(float a, float b)
244,3 → 245,18
 
/* Other functions */
 
float __powisf2(float a, int b)
{
//TODO:
}
 
float __mulsc3(float a, float b, float c, float d)
{
//TODO:
}
 
float __divsc3(float a, float b, float c, float d)
{
//TODO:
}
 
/uspace/trunk/softfloat/generic/conversion.c
59,6 → 59,8
mant <<= 1;
--result.parts.exp;
};
++result.parts.exp;
result.parts.mantisa = mant;
};
108,7 → 110,6
result.parts.exp = 0;
exp *= -1;
if (exp > FLOAT32_MANTISA_SIZE ) {
/* FIXME: underflow */
result.parts.mantisa = 0;
117,9 → 118,11
/* denormalized */
mant = result.parts.mantisa >> 1;
mant = a.parts.mantisa;
mant |= 0x10000000000000ll; /* denormalize and set hidden bit */
mant >>= (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE + 1);
while (exp > 0) {
--exp;
mant >>= 1;