Add 'CAN-binder/libs/nanopb/' from commit '278ffb890e3d8722e4c7d824baaf221a1e375fc4'
[apps/agl-service-can-low-level.git] / CAN-binder / libs / nanopb / examples / using_double_on_avr / double_conversion.h
1 /* AVR-GCC does not have real double datatype. Instead its double
2  * is equal to float, i.e. 32 bit value. If you need to communicate
3  * with other systems that use double in their .proto files, you
4  * need to do some conversion.
5  *
6  * These functions use bitwise operations to mangle floats into doubles
7  * and then store them in uint64_t datatype.
8  */
9
10 #ifndef DOUBLE_CONVERSION
11 #define DOUBLE_CONVERSION
12
13 #include <stdint.h>
14
15 /* Convert native 4-byte float into a 8-byte double. */
16 extern uint64_t float_to_double(float value);
17
18 /* Convert 8-byte double into native 4-byte float.
19  * Values are rounded to nearest, 0.5 away from zero.
20  * Overflowing values are converted to Inf or -Inf.
21  */
22 extern float double_to_float(uint64_t value);
23
24
25 #endif
26