37 lines
1.0 KiB
C
37 lines
1.0 KiB
C
#ifndef FIXED_H
|
|
#define FIXED_H
|
|
|
|
#include "common.h"
|
|
|
|
typedef i32 fixed_t;
|
|
|
|
#define FIXED_ONE 0x00010000L /* 1.0 in Q16.16 */
|
|
#define FIXED_ZERO 0x00000000L /* 0.0 in Q16.16 */
|
|
#define FIXED_HALF 0x00008000L /* 0.5 in Q16.16 */
|
|
#define FIXED_PI 0x0003243FL /* 3.14159 */
|
|
#define FIXED_E 0x0002B7E1L /* 2.71828 */
|
|
#define FIXED_MAX 0x7FFFFFFFL /* Maximum positive value */
|
|
#define FIXED_MIN 0x80000000L /* Minimum negative value */
|
|
|
|
fixed_t int_to_fixed(i32 i);
|
|
i32 fixed_to_int(fixed_t f);
|
|
fixed_t float_to_fixed(f32 f);
|
|
f32 fixed_to_float(fixed_t f);
|
|
|
|
fixed_t fixed_add(fixed_t a, fixed_t b);
|
|
fixed_t fixed_sub(fixed_t a, fixed_t b);
|
|
fixed_t fixed_mul(fixed_t a, fixed_t b);
|
|
fixed_t fixed_div(fixed_t a, fixed_t b);
|
|
|
|
i32 fixed_eq(fixed_t a, fixed_t b);
|
|
i32 fixed_ne(fixed_t a, fixed_t b);
|
|
i32 fixed_lt(fixed_t a, fixed_t b);
|
|
i32 fixed_le(fixed_t a, fixed_t b);
|
|
i32 fixed_gt(fixed_t a, fixed_t b);
|
|
i32 fixed_ge(fixed_t a, fixed_t b);
|
|
|
|
fixed_t fixed_neg(fixed_t f);
|
|
fixed_t fixed_abs(fixed_t f);
|
|
|
|
#endif
|