function x_q = fp_quantize(x, N_int, N_frac)

% x_q = fp_quantize(x, N_int, N_frac)
%
% DESC:
% quantize a number using N_int bits for the integer part and N_frac bits
% for the fractional part and one bit for the sign.
%
% AUTHOR
% Marco Zuliani - zuliani@ece.ucsb.edu
%
% VERSION:
% 1.0.0
%
% INPUT:
% x             = input number
% N_int         = number of bits for the integer part
% N_frac        = number of bits for the fractional part
%
% OUTPUT:
% x_q          = quantized number

% HISTORY
% 1.0.0        ??/??/06 - Initial version

x_i = fix(x);
x_f = abs(x - x_i);

n = prod(size(x));

x_q = zeros(n, 1);

for h = 1:n
    if (x_i(h) > 2^N_int-1)
        xq_i = 2^N_int-1;
    else
        xq_i = bitand(x_i(h), 2^N_int-1);
    end

    xq_f = floor(x_f(h) * 2^N_frac)/2^N_frac;

    x_q(h) = sign(x(h)) * (xq_i + xq_f);
end;

x_q = reshape(x_q, size(x));

return;