function out = isEven(in)
%ISEVEN checks whether a number is even
%
% SYNOPSIS out = isEven(in)
%
% INPUT in : input (array) of numbers to be tested.
% OUTPUT out: array of size(in) with
% 1 for even integers and zero
% 0 for odd integers
% NaN for non-integers
% out is a logical array as long as the input is all integers.
%
% c: jonas 5/05
% Last modified 11/24/2009 - Jonas Dorn
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
out = mod(in+1, 2);
% Set NaN for non-integer data, because they are neither odd or even
out((out ~= 0) & (out ~= 1)) = NaN;
% since doubles cannot be used for logical indexing, we should convert to
% logicals if possible.
if all(isfinite(out(:)))
out = logical(out);
end