77 #include "jasper/jas_config.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)
115 static inline jpc_fix_t jpc_inttofix(
int x)
117 return JAS_INTTOFIX(jpc_fix_t, JPC_FIX_FRACBITS, x);
121 static inline int jpc_fixtoint(jpc_fix_t x)
123 return JAS_FIXTOINT(jpc_fix_t, JPC_FIX_FRACBITS, x);
127 static inline double jpc_fixtodbl(jpc_fix_t x)
129 return JAS_FIXTODBL(jpc_fix_t, JPC_FIX_FRACBITS, x);
133 static inline jpc_fix_t jpc_dbltofix(
double x)
135 return JAS_DBLTOFIX(jpc_fix_t, JPC_FIX_FRACBITS, x);
139 static inline jpc_fix_t jpc_fix_add(jpc_fix_t x, jpc_fix_t y)
141 return JAS_FIX_ADD(jpc_fix_t, JPC_FIX_FRACBITS, x, y);
145 static inline jpc_fix_t jpc_fix_sub(jpc_fix_t x, jpc_fix_t y)
147 return JAS_FIX_SUB(jpc_fix_t, JPC_FIX_FRACBITS, x, y);
151 static inline jpc_fix_t jpc_fix_mul(jpc_fix_big_t x, jpc_fix_big_t y)
153 return JAS_FIX_MUL(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y);
157 static inline jpc_fix_big_t jpc_fix_mulbyint(jpc_fix_big_t x,
int y)
159 return JAS_FIX_MUL(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y);
163 static inline jpc_fix_t jpc_fix_div(jpc_fix_big_t x, jpc_fix_t y)
165 return JAS_FIX_DIV(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y);
169 static inline jpc_fix_t jpc_fix_neg(jpc_fix_t x)
171 return JAS_FIX_NEG(jpc_fix_t, JPC_FIX_FRACBITS, x);
177 #ifdef JAS_ENABLE_32BIT
178 #define jpc_fix_asl jas_least32_asl
179 #define jpc_fix_asr jas_least32_asr
181 #define jpc_fix_asl jas_fast32_asl
182 #define jpc_fix_asr jas_fast32_asr
185 #define jpc_fix_pluseq(x, y) JAS_FIX_PLUSEQ(jpc_fix_t, JPC_FIX_FRACBITS, x, y)
186 #define jpc_fix_minuseq(x, y) JAS_FIX_MINUSEQ(jpc_fix_t, JPC_FIX_FRACBITS, x, y)
187 #define jpc_fix_muleq(x, y) \
188 JAS_FIX_MULEQ(jpc_fix_t, JPC_FIX_FRACBITS, jpc_fix_big_t, x, y)
191 static inline jpc_fix_t jpc_fix_abs(jpc_fix_t x)
193 return JAS_FIX_ABS(jpc_fix_t, JPC_FIX_FRACBITS, x);
197 static inline bool jpc_fix_isint(jpc_fix_t x)
199 return JAS_FIX_ISINT(jpc_fix_t, JPC_FIX_FRACBITS, x);
203 static inline int jpc_fix_sgn(jpc_fix_t x)
205 return JAS_FIX_SGN(jpc_fix_t, JPC_FIX_FRACBITS, x);
209 static inline jpc_fix_t jpc_fix_round(jpc_fix_t x)
211 return JAS_FIX_ROUND(jpc_fix_t, JPC_FIX_FRACBITS, x);
215 static inline jpc_fix_t jpc_fix_floor(jpc_fix_t x)
217 return JAS_FIX_FLOOR(jpc_fix_t, JPC_FIX_FRACBITS, x);
226 static inline jpc_fix_t jpc_fix_add3(jpc_fix_t x, jpc_fix_t y, jpc_fix_t z)
228 return jpc_fix_add(jpc_fix_add(x, y), z);