4 #include "base/cl_sysdep.h"
12 #include "float/sfloat/cl_SF.h"
13 #include "float/ffloat/cl_FF.h"
14 #include "float/dfloat/cl_DF.h"
15 #include "float/lfloat/cl_LF.h"
16 #include "float/lfloat/cl_LF_impl.h"
17 #include "integer/cl_I.h"
18 #include "float/cl_F.h"
22 static inline const decoded_float decode_float_inline (const cl_SF& x)
28 SF_decode(x, { return decoded_float(SF_0, 0, SF_1); },
32 encode_SF(0,0,mant), // (-1)^0 * 2^0 * m erzeugen
33 L_to_FN(exp), // e als Fixnum
34 encode_SF(sign,1,bit(SF_mant_len)) // (-1)^s erzeugen
38 static inline const decoded_float decode_float_inline (const cl_FF& x)
44 FF_decode(x, { return decoded_float(cl_FF_0, 0, cl_FF_1); },
48 encode_FF(0,0,mant), // (-1)^0 * 2^0 * m erzeugen
49 L_to_FN(exp), // e als Fixnum
50 encode_FF(sign,1,bit(FF_mant_len)) // (-1)^s erzeugen
54 static inline const decoded_float decode_float_inline (const cl_DF& x)
59 #if (cl_word_size==64)
61 DF_decode(x, { return decoded_float(cl_DF_0, 0, cl_DF_1); },
65 encode_DF(0,0,mant), // (-1)^0 * 2^0 * m erzeugen
66 L_to_FN(exp), // e als Fixnum
67 encode_DF(sign,1,bit(DF_mant_len)) // (-1)^s erzeugen
72 DF_decode2(x, { return decoded_float(cl_DF_0, 0, cl_DF_1); },
73 sign=,exp=,manthi=,mantlo=
76 encode_DF(0,0,manthi,mantlo), // (-1)^0 * 2^0 * m erzeugen
77 L_to_FN(exp), // e als Fixnum
78 encode_DF(sign,1,bit(DF_mant_len-32),0) // (-1)^s erzeugen
83 static inline const decoded_float decode_float_inline (const cl_LF& x)
89 var const uintD* mantMSDptr;
90 LF_decode(x, { return decoded_float(x, 0, encode_LF1(mantlen)); },
91 sign=,exp=,mantMSDptr=,mantlen=,);
93 encode_LFu(0,0+LF_exp_mid,mantMSDptr,mantlen), // (-1)^0 * 2^0 * m erzeugen
94 E_to_I(exp), // e als Fixnum
95 encode_LF1s(sign,mantlen) // (-1)^s erzeugen
99 const decoded_float decode_float (const cl_F& x)
102 , return decode_float_inline(x);
103 , return decode_float_inline(x);
104 , return decode_float_inline(x);
105 , return decode_float_inline(x);