Tarval:
[libfirm] / ir / tv / fltcalc.h
1 #ifndef _FLTCALC_H_
2 #define _FLTCALC_H_
3
4 #ifdef USE_LONG_DOUBLE
5 typedef long double LLDBL;
6 #else
7 typedef double LLDBL;
8 #endif
9
10 enum {
11   FC_ADD,
12   FC_SUB,
13   FC_MUL,
14   FC_DIV,
15   FC_NEG,
16 };
17
18 #define fc_add(a, b) fc_calc((a), (b), FC_ADD)
19 #define fc_sub(a, b) fc_calc((a), (b), FC_SUB)
20 #define fc_mul(a, b) fc_calc((a), (b), FC_MUL)
21 #define fc_div(a, b) fc_calc((a), (b), FC_DIV)
22 #define fc_neg(a) fc_calc((a), NULL, FC_NEG)
23
24 const void *fc_get_buffer(void);
25 const int fc_get_buffer_length(void);
26
27 void fc_val_from_str(const char *str, unsigned int len);
28 void fc_val_from_float(LLDBL l);
29 LLDBL fc_val_to_float(const void *val);
30
31 void fc_get_min(unsigned int num_bits);
32 void fc_get_max(unsigned int num_bits);
33 void fc_get_nan(void);
34 void fc_get_inf(void);
35
36 void fc_calc(const void *a, const void *b, int opcode);
37 char *fc_print_dec(const void *a, char *buf, int buflen);
38 int fc_comp(const void *a, const void *b);
39
40 unsigned char fc_sub_bits(const void *val, unsigned num_bit, unsigned byte_ofs);
41
42 #endif /* _FLTCALC_H_ */