#include #include #include "softfloat.h" #include "softfloat_types.h" int float_rounding_mode = 0; union dp { unsigned short x[4]; double y; } X; int main() { uint8_t rounding_mode; uint8_t exceptions; uint64_t n, d, result; float64_t d_n, d_d, d_result; n = 0x3feffffffefffff6; d = 0xffeffffffffffffe; //n = 0x00000000400001ff; //d = 0x3ffffdfffffffbfe; d_n.v = n; d_d.v = d; softfloat_roundingMode = rounding_mode; softfloat_exceptionFlags = 0; softfloat_detectTininess = softfloat_tininess_beforeRounding; d_result = f64_div(d_n, d_d); //result = d_result.v; //exceptions = softfloat_exceptionFlags & 0x1f; X.x[3] = (d_result.v & 0xffff000000000000) >> 48; X.x[2] = (d_result.v & 0x0000ffff00000000) >> 32; X.x[1] = (d_result.v & 0x00000000ffff0000) >> 16; X.x[0] = (d_result.v & 0x000000000000ffff); printf("Number = %.4x\n", X.x[3]); printf("Number = %.4x\n", X.x[2]); printf("Number = %.4x\n", X.x[1]); printf("Number = %.4x\n", X.x[0]); printf("Number = %1.25lg\n", X.y); return 0; }