File Exchange

image thumbnail

isodd: a pedestrian parity checker

version 1.7 (2.58 KB) by

ISODD returns TRUE for integers of any numeric MATLAB class that are not evenly divisible by 2

0 Downloads

Updated

View License

ISODD returns TRUE for members (N) of a numeric array, which
- are within the range of ±bitmax
- are integers such that N == fix(N)
- are integers not evenly divisible by 2

Unlike the typical computational approach using REM/MOD,
ISODD produces a not-valid flag for numbers, which are
1) not an integer
2) larger than the maximum possible double precision
integer representation (±bitmax)
and does never return their parity as being odd

REM/MOD, on the other hand, do not complain if an input
is not a valid candidate for being even or odd at all
and, therefore, are NOT reliable parity checkers

see
> help isodd
for usage and a brief example for this small utility

Comments and Ratings (4)

Ulf Carlberg

Another thing that confuses me:
>> [a,b]=isodd(1:5)
a =
1 0 1 0 1
b =
1 0 1 0 1
Shouldn't "b" be all ones in this case?

Ulf Carlberg

I found a bug:
>> x=int8(-128)
x =
-128
>> isodd(x)
ans =
1
because abs() will round the result to fit in int8, so abs(x)=127. Same for all "weird numbers" in two complement form intN(-2^(N-1)).

Ulf Carlberg

I uploaded a similar function, but with only one input and one output. An error is raised if input is wrong. It depends on the application what is most useful i guess. (My function also had a few bugs first, but I hope it is sorted out now. The updated version should appear soon.)

Loginatorist

Loginatorist (view profile)

Finally, a standard file which can be referenced for the perennial NG question! Well done. Thanks Urs.

Updates

1.7

change in the help section; version tag 14-Aug-2009 20:35:23

1.6

any integer input now is typecast to double before testing; version tag 13-Aug-2009 23:18:39

1.5

user request: ND arrays now return the results encapsulated in cells; version tag 29-May-2009 21:36:47

1.3

help/example section reorganized; version tag 29-May-2009 15:03:56

1.2

changed the output TFODD to mark valid odd integers only; thus, the syntax vec(tfodd&tferr) now is simply vec(tfodd) for odd and vec(~tfodd&tferr) for even integers; version tag 28-May-2009 22:43:42

1.1

an annoying typo was corrected

MATLAB Release
MATLAB 7.8 (R2009a)

Download apps, toolboxes, and other File Exchange content using Add-On Explorer in MATLAB.

» Watch video