Remove the --time option, as it was poor man's profiling.
Move the arithmetic functions as static inline in the header.

This actually reduces the size of the binary, as a function call takes more
instructions than just multiplying by two.
Use pow() rather than a multiplication, the compiler will do the right thing.
Make sure to use uint8_t for storing the pixel components.

This avoids integer casting issues.
Calculate degrees to radians of the deskew range and step in main.

This avoids re-calculating the same values over and over for the same
deskew operation. This is still not perfect, as it's still going to be
executed once per page, but it should make things slightly faster.
Make sure each file imports its header file.
Move a variable down the scopes.
Avoid converting from radians to degrees within the rotation functions.

The same formulae works within radians, as long as all the values are
expressed so. Calculate the deskewScanDeviation in radiant before calling
detectRotation() and then keep all the values in radians.
rotate: use float to specify the radians.
Store the results of the rotation detection as float.

This is still bitexact, and slightly less code.