8#ifndef libcss_fpmath_h_
9#define libcss_fpmath_h_
20#define CSS_RADIX_POINT 10
29 int32_t res = ux + uy;
32 ux = (ux >> 31) + INT_MAX;
35 if ((int32_t) ((ux ^ uy) | ~(uy ^ res)) >= 0) {
46 int32_t res = ux - uy;
48 ux = (ux >> 31) + INT_MAX;
51 if ((int32_t)((ux ^ uy) & (ux ^ res)) < 0) {
85css_int_to_fixed(
const int a) {
98css_float_to_fixed(
const float a) {
106 if (xx >= (
float)INT_MAX)
113#define FADD(a, b) (css_add_fixed((a), (b)))
115#define FSUB(a, b) (css_subtract_fixed((a), (b)))
117#define FMUL(a, b) (css_multiply_fixed((a), (b)))
119#define FDIV(a, b) (css_divide_fixed((a), (b)))
122#define FLTTOFIX(a) ((css_fixed) ((a) * (float) (1 << CSS_RADIX_POINT)))
124#define FIXTOFLT(a) ((float) (a) / (float) (1 << CSS_RADIX_POINT))
127#define INTTOFIX(a) (css_int_to_fixed(a))
129#define FIXTOINT(a) ((a) >> CSS_RADIX_POINT)
132#define TRUNCATEFIX(a) (a & ~((1 << CSS_RADIX_POINT)- 1 ))
134#define FIXFRAC(a) (a & ((1 << CSS_RADIX_POINT)- 1 ))
137#define F_PI_2 0x00000648
138#define F_PI 0x00000c91
139#define F_3PI_2 0x000012d9
140#define F_2PI 0x00001922
142#define F_90 0x00016800
143#define F_180 0x0002d000
144#define F_270 0x00043800
145#define F_360 0x0005a000
147#define F_0_5 0x00000200
148#define F_1 0x00000400
149#define F_10 0x00002800
150#define F_72 0x00012000
151#define F_96 0x00018000
152#define F_100 0x00019000
153#define F_200 0x00032000
154#define F_255 0x0003FC00
155#define F_300 0x0004b000
156#define F_400 0x00064000
159#define FPCT_OF_INT_TOINT(p, i) (FIXTOINT(FDIV((p * i), F_100)))
#define CSS_RADIX_POINT
Definition fpmath.h:20
int32_t css_fixed
Definition fpmath.h:23