@ -3,8 +3,6 @@
// General includes.
// General includes.
# include "cl_sysdep.h"
# include "cl_sysdep.h"
CL_PROVIDE ( cl_F_epsneg )
// Specification.
// Specification.
# include "cln/float.h"
# include "cln/float.h"
@ -19,24 +17,7 @@ CL_PROVIDE(cl_F_epsneg)
namespace cln {
namespace cln {
// Bei Floats mit d Bits (incl. Hiddem Bit, also d = ?F_mant_len+1)
// ist ?F_negative_epsilon = 2^(-d-1)*(1+2^(1-d)),
// d.h. Mantisse 10...01, Vorzeichen +.
static const cl_SF SF_negative_epsilon =
make_SF ( 0 , SF_exp_mid - SF_mant_len - 1 , bit ( SF_mant_len ) + 1 ) ;
static const cl_FF FF_negative_epsilon =
encode_FF ( 0 , - FF_mant_len - 1 , bit ( FF_mant_len ) + 1 ) ;
static const cl_DF DF_negative_epsilon =
# if (cl_word_size==64)
encode_DF ( 0 , - DF_mant_len - 1 , bit ( DF_mant_len ) + 1 ) ;
# else
encode_DF ( 0 , - DF_mant_len - 1 , bit ( DF_mant_len - 32 ) , 1 ) ;
# endif
inline const cl_LF LF_negative_epsilon ( uintC len )
static inline const cl_LF LF_negative_epsilon ( uintC len )
{
{
var Lfloat erg = allocate_lfloat ( len , LF_exp_mid - intDsize * len , 0 ) ;
var Lfloat erg = allocate_lfloat ( len , LF_exp_mid - intDsize * len , 0 ) ;
var uintD * ptr = & TheLfloat ( erg ) - > data [ 0 ] ;
var uintD * ptr = & TheLfloat ( erg ) - > data [ 0 ] ;
@ -54,6 +35,23 @@ inline const cl_LF LF_negative_epsilon (uintC len)
const cl_F float_negative_epsilon ( float_format_t f )
const cl_F float_negative_epsilon ( float_format_t f )
{
{
// Bei Floats mit d Bits (incl. Hiddem Bit, also d = ?F_mant_len+1)
// ist ?F_negative_epsilon = 2^(-d-1)*(1+2^(1-d)),
// d.h. Mantisse 10...01, Vorzeichen +.
static const cl_SF SF_negative_epsilon =
make_SF ( 0 , SF_exp_mid - SF_mant_len - 1 , bit ( SF_mant_len ) + 1 ) ;
static const cl_FF FF_negative_epsilon =
encode_FF ( 0 , - FF_mant_len - 1 , bit ( FF_mant_len ) + 1 ) ;
static const cl_DF DF_negative_epsilon =
# if (cl_word_size==64)
encode_DF ( 0 , - DF_mant_len - 1 , bit ( DF_mant_len ) + 1 ) ;
# else
encode_DF ( 0 , - DF_mant_len - 1 , bit ( DF_mant_len - 32 ) , 1 ) ;
# endif
floatformatcase ( ( uintC ) f
floatformatcase ( ( uintC ) f
, return SF_negative_epsilon ;
, return SF_negative_epsilon ;
, return FF_negative_epsilon ;
, return FF_negative_epsilon ;
@ -64,4 +62,3 @@ const cl_F float_negative_epsilon (float_format_t f)
} // namespace cln
} // namespace cln
CL_PROVIDE_END ( cl_F_epsneg )