Home | History | Annotate | Download | only in using_double_on_avr
      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 
     27