18

I am using counters to save positive integers, something like that:

\setcounter{mycoutervalue}{59}

Is there any limit in the value I can save in a counter, in this case mycountervalue? And what is the exact limit?

Thanks! I do not want to get an unexpected overflow.

  • 1
    I would say 2^31-1 with e-TeX extensions – user31729 Oct 1 '15 at 13:04
  • Thaks for your quick answer! Well, I am not using e-TeX extensions... – loved.by.Jesus Oct 1 '15 at 13:08
  • 1
    @loved.by.Jesus are you sure? That would be quite strange nowadays. A modern LaTeX kernel assumes etex available, many packages do as well. – cgnieder Oct 1 '15 at 13:22
  • 1
    @loved.by.Jesus: I confused the e-TeX extensions with the register range. The register range hasn't change, but the numbers of registers have increased. – user31729 Oct 1 '15 at 13:28
  • @clemens: I had no idea what e-TeX was :-\, thanks for your explanation. – loved.by.Jesus Oct 1 '15 at 13:33
31

The maximum value is the 'usual' 2^31-1 long integer value, as well as the negative range from -2^31, so the full range is 2^32 integers possible.

2^31-1 is 2147483647, which is the largest possible integer usable for counters or \ifnum and \numexpr codes.

In the code below I stored this number to the counter \mycounter and print it several times after using \stepcounter. After the first \stepcounter the register overflows and the number is set to -2147483648, being the 'largest' negative number possible. A subsequent \stepcounter works normally then.

The e-TeX standard extended the limit of 256 registers (count, skip etc.) to 32568 possible registers (for each type)

\documentclass{article}

\newcounter{mycounter}

\begin{document}

\setcounter{mycounter}{2147483647}

\themycounter  % prints 2147483647 

\stepcounter{mycounter}  % Now the overflow will occur

\themycounter % prints -2147483648

\stepcounter{mycounter}

\themycounter % -2147483647
\end{document}

enter image description here

  • 1
    Hey that is a nice coded answer! You got it. – loved.by.Jesus Oct 1 '15 at 13:13
  • @loved.by.Jesus: You're welcome – user31729 Oct 1 '15 at 13:19
16

According to The TEXbook:

TEX has 256 registers called \count0 to \count255, each capable of containing integers between -2147483647 and +2147483647, inclusive; i.e., the magnitudes should be less than 231.

  • 4
    A very minor detail: The minimal possible value of a counter is -2147483648=-2^{31}, not -2147483647. (There are 2^{32} integers between -2147483648 and +2147483647...) – Mico Oct 10 '15 at 14:52

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.