77 #include "jasper/jas_config.h"
78 #include "jasper/jas_types.h"
79 #include "jasper/jas_fix.h"
80 #include "jasper/jas_math.h"
89 #ifdef JAS_ENABLE_32BIT
90 typedef int_least32_t jpc_fix_t;
92 typedef int_fast32_t jpc_fix_t;
98 typedef int_fast64_t jpc_fix_big_t;
101 #define JPC_FIX_FRACBITS 13
110 #define JPC_FIX_ZERO JAS_FIX_ZERO(jpc_fix_t, JPC_FIX_FRACBITS)
111 #define JPC_FIX_ONE JAS_FIX_ONE(jpc_fix_t, JPC_FIX_FRACBITS)
112 #define JPC_FIX_HALF JAS_FIX_HALF(jpc_fix_t, JPC_FIX_FRACBITS)
114 #define jpc_inttofix(x) JAS_INTTOFIX(jpc_fix_t, JPC_FIX_FRACBITS, x)
115 #define jpc_fixtoint(x) JAS_FIXTOINT(jpc_fix_t, JPC_FIX_FRACBITS, x)
116 #define jpc_fixtodbl(x) JAS_FIXTODBL(jpc_fix_t, JPC_FIX_FRACBITS, x)
117 #define jpc_dbltofix(x) JAS_DBLTOFIX(jpc_fix_t, JPC_FIX_FRACBITS, x)
120 static inline jpc_fix_t jpc_fix_add(jpc_fix_t x, jpc_fix_t y)
122 return JAS_FIX_ADD(jpc_fix_t, JPC_FIX_FRACBITS, x, y);
126 static inline jpc_fix_t jpc_fix_sub(jpc_fix_t x, jpc_fix_t y)
128 return JAS_FIX_SUB(jpc_fix_t, JPC_FIX_FRACBITS, x, y);
132 static inline jpc_fix_t jpc_fix_mul(jpc_fix_big_t x, jpc_fix_big_t y)
134 return JAS_FIX_MUL(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y);
137 #define jpc_fix_mulbyint(x, y) \
138 JAS_FIX_MULBYINT(jpc_fix_t, JPC_FIX_FRACBITS, x, y)
141 static inline jpc_fix_t jpc_fix_div(jpc_fix_big_t x, jpc_fix_t y)
143 return JAS_FIX_DIV(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y);
147 static inline jpc_fix_t jpc_fix_neg(jpc_fix_big_t x)
149 return JAS_FIX_NEG(jpc_fix_t, JPC_FIX_FRACBITS, x);
154 #define jpc_fix_asl jas_fast32_asl
155 #define jpc_fix_asr jas_fast32_asr
157 #define jpc_fix_pluseq(x, y) JAS_FIX_PLUSEQ(jpc_fix_t, JPC_FIX_FRACBITS, x, y)
158 #define jpc_fix_minuseq(x, y) JAS_FIX_MINUSEQ(jpc_fix_t, JPC_FIX_FRACBITS, x, y)
159 #define jpc_fix_muleq(x, y) \
160 JAS_FIX_MULEQ(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y)
162 #define jpc_fix_abs(x) JAS_FIX_ABS(jpc_fix_t, JPC_FIX_FRACBITS, x)
163 #define jpc_fix_isint(x) JAS_FIX_ISINT(jpc_fix_t, JPC_FIX_FRACBITS, x)
164 #define jpc_fix_sgn(x) JAS_FIX_SGN(jpc_fix_t, JPC_FIX_FRACBITS, x)
165 #define jpc_fix_round(x) JAS_FIX_ROUND(jpc_fix_t, JPC_FIX_FRACBITS, x)
166 #define jpc_fix_floor(x) JAS_FIX_FLOOR(jpc_fix_t, JPC_FIX_FRACBITS, x)
167 #define jpc_fix_trunc(x) JAS_FIX_TRUNC(jpc_fix_t, JPC_FIX_FRACBITS, x)
174 #define jpc_fix_add3(x, y, z) jpc_fix_add(jpc_fix_add(x, y), z)