2019-09-13 14:12:17 +03:00
|
|
|
/*
|
|
|
|
* Common Float Helpers
|
|
|
|
*
|
|
|
|
* Copyright (c) 2019 Linaro
|
|
|
|
*
|
|
|
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
|
|
|
*/
|
|
|
|
|
|
|
|
#include <inttypes.h>
|
|
|
|
|
2020-08-25 23:12:53 +03:00
|
|
|
/* Some hosts do not have support for all of these; not required by ISO C. */
|
|
|
|
#ifndef FE_OVERFLOW
|
|
|
|
#define FE_OVERFLOW 0
|
|
|
|
#endif
|
|
|
|
#ifndef FE_UNDERFLOW
|
|
|
|
#define FE_UNDERFLOW 0
|
|
|
|
#endif
|
|
|
|
#ifndef FE_DIVBYZERO
|
|
|
|
#define FE_DIVBYZERO 0
|
|
|
|
#endif
|
|
|
|
#ifndef FE_INEXACT
|
|
|
|
#define FE_INEXACT 0
|
|
|
|
#endif
|
|
|
|
#ifndef FE_INVALID
|
|
|
|
#define FE_INVALID 0
|
|
|
|
#endif
|
|
|
|
|
2019-09-13 14:12:17 +03:00
|
|
|
/* Number of constants in each table */
|
|
|
|
int get_num_f16(void);
|
|
|
|
int get_num_f32(void);
|
|
|
|
int get_num_f64(void);
|
|
|
|
|
|
|
|
/* Accessor helpers, overflows will automatically wrap */
|
|
|
|
uint16_t get_f16(int i); /* use _Float16 when we can */
|
|
|
|
float get_f32(int i);
|
|
|
|
double get_f64(int i);
|
|
|
|
|
|
|
|
/* Return format strings, free after use */
|
|
|
|
char * fmt_f16(uint16_t);
|
|
|
|
char * fmt_f32(float);
|
|
|
|
char * fmt_f64(double);
|
|
|
|
/* exception flags */
|
|
|
|
char * fmt_flags(void);
|