Symmetric level-index arithmetic

From Wikipedia, the free encyclopedia
Jump to navigation Jump to search

Template:Short description Template:Use dmy dates The level-index (LI) representation of numbers, and its algorithms for arithmetic operations, were introduced by Charles Clenshaw and Frank Olver in 1984.[1]

The symmetric form of the LI system and its arithmetic operations were presented by Clenshaw and Peter Turner in 1987.[2]

Michael Anuta, Daniel Lozier, Nicolas Schabanel and Turner developed the algorithm for symmetric level-index (SLI) arithmetic, and a parallel implementation of it. There has been extensive work on developing the SLI arithmetic algorithms and extending them to complex and vector arithmetic operations.

Definition

The idea of the level-index system is to represent a non-negative real number Template:Mvar as

X=eeeef,

where 0f<1, and the process of exponentiation is performed Template:Mvar times, with 0. Template:Mvar and Template:Mvar are the level and index of Template:Mvar respectively. x = + fScript error: No such module "Check for unknown parameters". is the LI image of Template:Mvar. For example,

X=1234567=eee0.9711308,

so its LI image is

x=+f=3+0.9711308=3.9711308.

The symmetric form is used to allow negative exponents, if the magnitude of Template:Mvar is less than 1. One takes sgn(log(X))Script error: No such module "Check for unknown parameters". or sgn(Template:Abs − Template:Abs−1)Script error: No such module "Check for unknown parameters". and stores it (after substituting +1 for 0 for the reciprocal sign; since for X = 1 = e0Script error: No such module "Check for unknown parameters". the LI image is x = 1.0Script error: No such module "Check for unknown parameters". and uniquely defines X = 1Script error: No such module "Check for unknown parameters"., we can do away without a third state and use only one bit for the two states −1 and +1Script error: No such module "Unsubst".) as the reciprocal sign Template:Mvar. Mathematically, this is equivalent to taking the reciprocal (multiplicative inverse) of a small-magnitude number, and then finding the SLI image for the reciprocal. Using one bit for the reciprocal sign enables the representation of extremely small numbers.

A sign bit may also be used to allow negative numbers. One takes sgn(X) and stores it (after substituting +1 for 0 for the sign; since for X = 0Script error: No such module "Check for unknown parameters". the LI image is x = 0.0Script error: No such module "Check for unknown parameters". and uniquely defines X = 0Script error: No such module "Check for unknown parameters"., we can do away without a third state and use only one bit for the two states −1 and +1Script error: No such module "Unsubst".) as the sign Template:Mvar. Mathematically, this is equivalent to taking the inverse (additive inverse) of a negative number, and then finding the SLI image for the inverse. Using one bit for the sign enables the representation of negative numbers.

The mapping function is called the generalized logarithm function. It is defined as

ψ(X)={Xif 0X<1,1+ψ(lnX)if X1,

and it maps [0,) onto itself monotonically, thus being invertible on this interval. The inverse, the generalized exponential function, is defined by

φ(x)={xif 0x<1,eφ(x1)if x1.

The density of values Template:Mvar represented by Template:Mvar has no discontinuities as we go from level Template:Mvar to  + 1Script error: No such module "Check for unknown parameters". (a very desirable property) since

dφ(x)dx|x=1=dφ(ex)dx|x=0.

The generalized logarithm function is closely related to the iterated logarithm used in computer science analysis of algorithms.

Formally, we can define the SLI representation for an arbitrary real Template:Mvar (not 0 or 1) as

X=sXφ(x)rX,

where Template:Mvar is the sign (additive inversion or not) of Template:Mvar, and Template:Mvar is the reciprocal sign (multiplicative inversion or not) as in the following equations:

sX=sgn(X),rX=sgn(|X||X|1),x=ψ(max(|X|,|X|1))=ψ(|X|rX),

whereas for Template:Mvar = 0 or 1, we have

s0=+1,r0=+1,x=0.0,
s1=+1,r1=+1,x=1.0.

For example,

X=11234567=eee0.9711308,

and its SLI representation is

x=φ(3.9711308)1.

See also

References

<templatestyles src="Reflist/styles.css" />

  1. Script error: No such module "Citation/CS1".
  2. Script error: No such module "Citation/CS1".

Script error: No such module "Check for unknown parameters".

Further reading

  • Script error: No such module "Citation/CS1".
  • Script error: No such module "Citation/CS1".
  • Script error: No such module "citation/CS1". [1]
  • Script error: No such module "Citation/CS1". [2]. Also reprinted in: Script error: No such module "citation/CS1".

External links