void IntEncodingAlgorithm::encode(const int* values, size_t size, FI::NonEmptyOctetString &octets) { Tools::float_to_unsigned_int_to_bytes u; for(size_t i = 0; i < size; i++) { u.ui = FIX_INT(values[i]); octets.insert(octets.end(), u.ub, u.ub+4); } }
fix_t fix_sin(fix_t x) { fix_t abs_x; fix_t fract; fix_t sin_x; abs_x = (x >= 0) ? x : -x; abs_x &= FIX_ANGLE_MASK; fract = FIX_FRACT(abs_x); if ( FIX_INT(abs_x)&0x01 ) fract = 255 - fract; sin_x = SIN_TABLE[fract]; if ( FIX_INT(abs_x)&0x02 ) sin_x = -sin_x; if ( x < 0 ) sin_x = -sin_x; return sin_x; }