6

1

I coined Integers Of Unusual Size to mean "bignum" using GMP, the underpinning of *Mathematica's* ability to craft very big numbers.

I have these functions from this question:

```
ascendingQ[x_] := 3 == Mod[x, 4]
uniqueQ[x_] := 0 != Mod[2 x - 1, 3]
uniqueRank[n_, m_] := Block[{a = If[1 != n && OddQ[n], n - 1, n]},
(n + IntegerExponent[a, 2]) 2^m - 1]
```

The first two need "bignum" inputs and the third needs "bignum" output

And I have this variation of `countOrbit`

which we will use for our research:

```
totalOrbit[x_] :=
Block[{h = x, t, c = 0, m, n, mt = 0, nt = 0},
While[1 != h,
h = (t = -1 + (3/2)^(m = IntegerExponent[h + 1, 2]) (h + 1))/
2^(n = IntegerExponent[t, 2]);
mt += m;
nt += n;
];
c = 2 mt + nt
]
```

This needs "bignum" everywhere. When we get a sufficiently frisky `totalOrbit`

I will recast `countOrbit`

.

After I execute the compiled `totalOrbit`

, I get error messages about exceeding machine precision,

```
cto = Compile[{x}, totalOrbit[x]]
```

so, I need a way to indicate that all numbers are "bignums."

3Unfortunately

`Compile`

supports only machine-size integers, ruling out bignums. – kirma – 2013-08-05T10:54:55.187