       Re: Next representable number

• To: mathgroup at smc.vnet.net
• Subject: [mg73627] Re: [mg73542] Next representable number
• From: Daniel Lichtblau <danl at wolfram.com>
• Date: Fri, 23 Feb 2007 04:38:41 -0500 (EST)
• References: <200702210653.BAA18712@smc.vnet.net>

```Andrew Moylan wrote:
> What's a neat way to determine the next (higher) representable number
> (at a given precision)? That is, I want f[x] to be the smallest
> representable number (at precision Precision[x]) that's larger than x.
>

I'm not sure this is quite correct but here goes.

(1) Convert to binary using RealDigits.

(2) Add one to the last "bit" in the mantissa. No matter if it
"overflows"; the reverse conversion won't mind. This feature caused
remarkable controversy in-house a few months ago.

(3) Convert from {mantissa,exponent} to a rational using FromDigits.

(4) Numericize to the original precision.

nextRepresentable[x_Real] := Module[
{mant, expon, prec=Precision[x]},
{mant,expon} = RealDigits[x];
N[FromDigits[{Append[Most[mant],Last[mant]+1],expon}], prec]
]

In:= ee = N[7/4,22]
Out= 1.750000000000000000000

In:= ff = nextRepresentable[ee]
Out= 1.750000000000000000001

In:= InputForm[ff-ee]
Out//InputForm= 1.`0.45593195564972433*^-21

Daniel Lichtblau
Wolfram Research

```

• Prev by Date: Re: NonLinearRegression Weights
• Next by Date: Fw: Maclaurin series for ArcCosh[x]
• Previous by thread: Next representable number
• Next by thread: Re: Next representable number