We now give another useful algorithm for a function which we will dub the `p' function. It is used extensively in situations where you can perform an analysis to determine the range of the output of some operation using the method described in section 3.6.2, but do not know what the first digit of a resulting stream will be. It is used in a number of algorithms, including for example the division algorithm (section 4.4.4), and the algorithm used to compute the limits of Cauchy sequence described in chapter 5).
The `p' function re-expresses a stream starting with an unknown digit as a stream which, when appended to a specified digit, represents the same number as the original stream. In other words, the `p' function of the digit a and stream x works as follows:
The caveat associated with using the `p' function is that if it is impossible to re-express the stream starting with the specified digit, the result will be undefined. The `p' function removing the digit a from the stream x may be defined as follows:
The algorithm may be implemented simply by examining cases. Where the start digit of the stream is equal to the digit being removed, the result is simply the tail of the input stream. If the digit at the head of the stream differs by one from the digit to be removed, the functions to compute (x-1) and (x+1) defined in section 4.1.3 may be used. If the digits differ by two (ie. 1 and ), the resulting stream will be either minus one (-1) or one (1). Hence:
|p(1,0::x')||=||x' - 1|
|p(0,1::x')||=||x' - 1|
|p(1,0::x')||=||1 - x'|