/* | |
* Common Float Helpers | |
* | |
* Copyright (c) 2019, 2024 Linaro | |
* | |
* SPDX-License-Identifier: GPL-2.0-or-later | |
*/ | |
#include <inttypes.h> | |
/* 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 | |
/* 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); |