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)