FWCore
Utilities
interface
math_private.h
Go to the documentation of this file.
1
// abridged from GNU libc 2.6.1 - in detail from
2
// math/math_private.h
3
// sysdeps/ieee754/ldbl-96/math_ldbl.h
4
5
// part of ths file:
6
/*
7
* ====================================================
8
* Copyright (C) 1993 by Sun Microsystems, Inc. All rights reserved.
9
*
10
* Developed at SunPro, a Sun Microsystems, Inc. business.
11
* Permission to use, copy, modify, and distribute this
12
* software is freely granted, provided that this notice
13
* is preserved.
14
* ====================================================
15
*/
16
17
#ifndef math_private_h
18
#define math_private_h
19
20
#include <sys/types.h>
21
22
namespace
edm
{
23
namespace
math_private {
24
25
// A union which permits us to convert between a float and a 32 bit int.
26
typedef
union
27
{
28
float
value
;
29
u_int32_t
word
;
30
}
ieee_float_shape_type
;
31
32
// A union which permits us to convert between a double and two 32 bit ints.
33
typedef
union
34
{
35
double
value
;
36
struct
37
{
38
u_int32_t
lsw
;
39
u_int32_t
msw
;
40
}
parts
;
41
} ieee_double_shape_type;
42
43
// A union which permits us to convert between a long double and three 32 bit ints.
44
typedef
union
45
{
46
long
double
value
;
47
struct
48
{
49
u_int32_t
lsw
;
50
u_int32_t
msw
;
51
int
sign_exponent
:16;
52
unsigned
int
empty
:16;
53
// unsigned int empty1:32; // maybe needed for 128-bit long double ? (x86-64 and/or -m128bit-long-double)
54
}
parts
;
55
} ieee_long_double_shape_type;
56
57
/* Get a 32 bit int from a float. */
58
#define GET_FLOAT_WORD(i,d) \
59
do { \
60
edm::math_private::ieee_float_shape_type gf_u; \
61
gf_u.value = (d); \
62
(i) = gf_u.word; \
63
} while (0)
64
65
/* Get two 32 bit ints from a double. */
66
#define EXTRACT_WORDS(ix0,ix1,d) \
67
do { \
68
edm::math_private::ieee_double_shape_type ew_u; \
69
ew_u.value = (d); \
70
(ix0) = ew_u.parts.msw; \
71
(ix1) = ew_u.parts.lsw; \
72
} while (0)
73
74
/* Get three 32 bit ints from a long double. */
75
#define GET_LDOUBLE_WORDS(exp,ix0,ix1,d) \
76
do { \
77
edm::math_private::ieee_long_double_shape_type ew_u; \
78
ew_u.value = (d); \
79
(exp) = ew_u.parts.sign_exponent; \
80
(ix0) = ew_u.parts.msw; \
81
(ix1) = ew_u.parts.lsw; \
82
} while (0)
83
84
}
// namespace math_private
85
}
// namespace edm
86
87
#endif // math_private_h
edm::math_private::ieee_double_shape_type::msw
u_int32_t msw
Definition:
math_private.h:39
edm::math_private::ieee_long_double_shape_type::lsw
u_int32_t lsw
Definition:
math_private.h:49
edm::math_private::ieee_long_double_shape_type::msw
u_int32_t msw
Definition:
math_private.h:50
edm
HLT enums.
Definition:
AlignableModifier.h:19
edm::math_private::ieee_double_shape_type::lsw
u_int32_t lsw
Definition:
math_private.h:38
edm::math_private::ieee_float_shape_type
Definition:
math_private.h:26
edm::math_private::ieee_float_shape_type::value
float value
Definition:
math_private.h:28
contentValuesFiles.parts
parts
Definition:
contentValuesFiles.py:58
edm::math_private::ieee_float_shape_type::word
u_int32_t word
Definition:
math_private.h:29
edm::math_private::ieee_long_double_shape_type::value
long double value
Definition:
math_private.h:46
edm::math_private::ieee_long_double_shape_type::sign_exponent
int sign_exponent
Definition:
math_private.h:51
edm::math_private::ieee_double_shape_type::value
double value
Definition:
math_private.h:35
edm::math_private::ieee_long_double_shape_type::empty
unsigned int empty
Definition:
math_private.h:52
Generated for CMSSW Reference Manual by
1.8.16