X-Git-Url: https://ginac.de/CLN/cln.git//cln.git?a=blobdiff_plain;f=src%2Ffloat%2Fconv%2Fcl_FF_to_DF.cc;fp=src%2Ffloat%2Fconv%2Fcl_FF_to_DF.cc;h=7c717b92673034d15863eb0ab73d09a3b67bb256;hb=dd9e0f894eec7e2a8cf85078330ddc0a6639090b;hp=0000000000000000000000000000000000000000;hpb=d57000b193438122b366aa0d450674be9402d06c;p=cln.git diff --git a/src/float/conv/cl_FF_to_DF.cc b/src/float/conv/cl_FF_to_DF.cc new file mode 100644 index 0000000..7c717b9 --- /dev/null +++ b/src/float/conv/cl_FF_to_DF.cc @@ -0,0 +1,28 @@ +// cl_FF_to_DF(). + +// General includes. +#include "cl_sysdep.h" + +// Specification. +#include "cl_F.h" + + +// Implementation. + +#include "cl_FF.h" +#include "cl_DF.h" + +const cl_DF cl_FF_to_DF (const cl_FF& x) +{ + // x entpacken: + var cl_signean sign; + var sintL exp; + var uint32 mant; + FF_decode(x, { return cl_DF_0; }, sign=,exp=,mant=); + // Mantisse um 52-23=29 Nullbits erweitern: + #if (cl_word_size==64) + return encode_DF(sign,exp,(uint64)mant<<(DF_mant_len-FF_mant_len)); + #else + return encode_DF(sign,exp,mant>>(32-(DF_mant_len-FF_mant_len)),mant<<(DF_mant_len-FF_mant_len)); + #endif +}