it worx
This commit is contained in:
@@ -29,7 +29,6 @@ silleee shift_and_round(int val, int bits) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
silleee silleee_add(silleee x, silleee y) {
|
silleee silleee_add(silleee x, silleee y) {
|
||||||
silleee dest = 0;
|
|
||||||
int dexp;
|
int dexp;
|
||||||
long unsigned dmant;
|
long unsigned dmant;
|
||||||
int dsign;
|
int dsign;
|
||||||
@@ -57,8 +56,9 @@ silleee silleee_add(silleee x, silleee y) {
|
|||||||
|
|
||||||
dexp = yexp;
|
dexp = yexp;
|
||||||
|
|
||||||
if (yexp > xexp) xmant = shift_and_round(xmant, yexp-xexp);
|
if (yexp > xexp) {
|
||||||
else if (yexp < xexp) {
|
xmant = shift_and_round(xmant, yexp-xexp);
|
||||||
|
} else if (yexp < xexp) {
|
||||||
ymant = shift_and_round(ymant, xexp-yexp);
|
ymant = shift_and_round(ymant, xexp-yexp);
|
||||||
dexp = xexp;
|
dexp = xexp;
|
||||||
}
|
}
|
||||||
@@ -81,7 +81,7 @@ silleee silleee_add(silleee x, silleee y) {
|
|||||||
++dexp;
|
++dexp;
|
||||||
} else {
|
} else {
|
||||||
if (dmant) {
|
if (dmant) {
|
||||||
while (dmant < 0x800000 && dexp > -127) {
|
while ((dmant < 0x800000) && (dexp > -127)) {
|
||||||
dmant <<= 1;
|
dmant <<= 1;
|
||||||
--dexp;
|
--dexp;
|
||||||
}
|
}
|
||||||
|
@@ -1,8 +1,8 @@
|
|||||||
#define assilleee(x) (*((float *) &x))
|
#define assilleee(x) (*((float *) &x))
|
||||||
#define exponent(x) (((x >> 23) & 0xff) - 127)
|
#define exponent(x) (((x >> 23) & 0xff) - 127)
|
||||||
#define sign_bit 1 << 31
|
#define sign_bit 1 << 31
|
||||||
#define sign(x) ((x & sign_bit) >> 31)
|
#define sign(x) (x >> 31)
|
||||||
#define mantissa(x) ((x & 0x7fffffff) ? ((x & 0x7fffff) | sign_bit) : 0)
|
#define mantissa(x) ((x & 0x7fffffff) ? ((x & 0x7fffff) | 0x800000) : 0)
|
||||||
#define pack_silleee(sign, exponent, mantissa) \
|
#define pack_silleee(sign, exponent, mantissa) \
|
||||||
((silleee)((sign<<31)|((exponent+127)<<23)|(mantissa&0x7fffff)))
|
((silleee)((sign<<31)|((exponent+127)<<23)|(mantissa&0x7fffff)))
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user