Subversion Repositories HelenOS-historic

Compare Revisions

Ignore whitespace Rev 698 → Rev 697

/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,7 → 110,6
da.d = a;
return convertFloat64ToFloat32(da).f;
}
 
/* Comparison functions */
 
/* a<b .. -1
144,7 → 143,7
fa.f=a;
fb.f=b;
return ((isFloat32NaN(fa))||(isFloat32NaN(fb)));
}
};
 
/**
* @return zero, if neither argument is a NaN and are equal
159,13 → 158,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)
245,18 → 244,3
 
/* 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,8 → 59,6
mant <<= 1;
--result.parts.exp;
};
++result.parts.exp;
result.parts.mantisa = mant;
};
110,6 → 108,7
result.parts.exp = 0;
exp *= -1;
if (exp > FLOAT32_MANTISA_SIZE ) {
/* FIXME: underflow */
result.parts.mantisa = 0;
118,11 → 117,9
/* denormalized */
mant = a.parts.mantisa;
mant = result.parts.mantisa >> 1;
mant |= 0x10000000000000ll; /* denormalize and set hidden bit */
mant >>= (FLOAT64_MANTISA_SIZE - FLOAT32_MANTISA_SIZE + 1);
while (exp > 0) {
--exp;
mant >>= 1;