4 #include "base/cl_sysdep.h"
7 #include "cln/dfloat.h"
12 #include "float/dfloat/cl_DF.h"
13 #include "float/cl_F.h"
17 const cl_DF scale_float (const cl_DF& x, sintC delta)
20 // x=0.0 -> x als Ergebnis
21 // delta muß betragsmäßig <= DF_exp_high-DF_exp_low sein.
22 // Neues DF mit um delta vergrößertem Exponenten bilden.
26 #if (cl_word_size==64)
28 DF_decode(x, { return x; }, sign=,exp=,mant=);
32 DF_decode2(x, { return x; }, sign=,exp=,manthi=,mantlo=);
36 { var uintC udelta = delta;
37 if (udelta <= (uintL)(DF_exp_high-DF_exp_low))
39 #if (cl_word_size==64)
40 return encode_DF(sign,exp,mant);
42 return encode_DF(sign,exp,manthi,mantlo);
46 { throw floating_point_overflow_exception(); }
50 { var uintC udelta = -delta;
51 if (udelta <= (uintL)(DF_exp_high-DF_exp_low))
53 #if (cl_word_size==64)
54 return encode_DF(sign,exp,mant);
56 return encode_DF(sign,exp,manthi,mantlo);
60 if (underflow_allowed())
61 { throw floating_point_underflow_exception(); }