# Difference between revisions of "Odd"

Deutsch (de) English (en) polski (pl)

The standard function odd returns true if and only if the passed integer parameter is odd, that means it is not divisible by 2. Odd(x) is by definition equivalent to the expression

abs(x) mod 2 = 1


The abs serves the purpose of any potential for confusion regarding the sign of the mod operator in conjunction with a negative operand. It is unnecessary in a fully-ISO‑compliant compiler (for FPC this means {$modeSwitch ISOMod+}). ## application Beside using odd directly, in combination with ord it can be useful to simplify calculations. The following program calculates $\displaystyle{ 1 \cdot 3^1 + 2 \cdot 3^0 + 3 \cdot 3^1 + 4 \cdot 3^0 }$ (= $\displaystyle{ 3 + 2 + 9 + 4 }$) without the need of branches: {$mode extendedPascal}
program oddDemo(output);
var
i, sum: integer value 0;
begin
for i := 1 to 4 do
begin
{ alternating scale factor 3^0, 3^1 based on Boolean }
sum := sum + i * 3 pow ord(odd(i));
end;
writeLn(sum);
end.


NB: Despite {\$mode extendedPascal} the shown integer power operator pow and initial-value specification are not yet supported by FPC as of version 3.2.0.