Abstract:
Methods are presented for calculating the wavelet filters and their inverses which rely on a new method of sampling (UA, TA, A) either digital or analog data. These methods combine and extend to give novel procedures for non-reversible multi-dimensional data compression. For selected applications, this procedure improves achievable compression factors by an estimated one to three orders of magnitude and is well-suited to picture build-up or other iterative refinement. Combining these wavelet filters and their inverse with previous theoretical work furthermore provides novel methods for calculating Fourier and other transforms. In a preferred embodiment used to calculate the Fourier transform ( 1 ) and its inverse ( 34 ) applied to digital input date, the method replaces the fast Fourier transform and its inverse and provides improvements in achievable accuracy. The new sampling method is inherently multiscale, and the invention thereby obviates the usual Nyquist constraint on the meaningful bandwidth in terms of the number of samples. Finally, the invention provides novel and efficient analog-to-digital and digital-to-analog interface.

Description:
CROSS-REFERENCE TO RELATED APPLICATION 
   The present invention is based on and claims priority to U.S. Provisional Patent Application Ser. No. 60/116,540 filed on Jan. 19, 1999 and is a national stage application of PCT International Application No. PCT/US99/30584 published on Jul. 27, 2000 as Publication No. WO 00/44104. 

   FIELD OF THE INVENTION 
   It is well-known that digital filtering of digitally represented samples of analog data can be simplified and improved by performing the required processing in some transformed domain. Using/both a transform and its inverse to simplify the digital or other manipulation of data, one first transforms the data from its initial form to an intermediate form, then applies a specified manipulation, and finally applies the inverse transform to recover the data in its initial form from its intermediate form. By way of example and not by way of limitation: the initial form of the data may be digital samples of analog data, and the intermediate form of the data may be the coefficients of the Fourier transform; the initial form of the data may be the coefficients of the Fourier transform, and the intermediate form of the data may be the coefficients in some wavelet or other expansion; the initial form of the data may be an analog signal, and the intermediate form of the data may be some digital representation of it; the initial form of the data may be digital samples of an analog signal, and the intermediate form of the data may be a quantization of the digital samples. For instance, transform coding methods for data compression in signal or data processing are realized in practice as transform of data/quantization, storage or transmission, de-quantization/reconstruction. Another class of examples consists of finite-impulse response digital filters where the input data is filtered using the indirect calculation of convolution given by Fourier transform/multiplication/inverse Fourier transform. For analog data, sampling and filtering together determine fidelity and speed of manipulation. 
   The invention disclosed here provides a new method for sampling analog or digital input data which may be used to calculate new wavelet transforms as well as their inverse reconstruction algorithms. This immediately provides novel and efficient methods for data compression based on this new method of non-linear transform coding. In combination with these wavelet filters, the invention also provides new methods for calculating various classical transforms including the Fourier transform and its inverse. This immediately provides novel and efficient methods for digital filtering. By way of example and not of limitation, practical applications of the methods include non-speech audio compression, speech compression, speech recognition, speech synthesis, voice printing, audio filtering for hearing aids, still two-dimensional image compression, moving video compression, video compression for purposes of telephony, precision Fourier analysis, precision trigonometry, denoising, interpolation, medical imaging, geological imaging for recovery of oil or other resources, and other emission/detection apparatus. In specific applications, it may be necessary to store streams of input data in a buffer for separate processing or manipulation while concurrently collecting further input data whether analog or digital. It may also be useful in practice in particular applications to calculate and archive or otherwise store specific coefficients or constants and recover them from memory at run time rather than computing them at run time. 
   DESCRIPTION OF PRIOR ART 
   In the landmark paper “Orthonormal bases of compactly supported wavelets,  Communications in Pure and Applied Mathematics  41, pp. 909–996 (1988), Daubechies presented a class of wavelets which have been effectively applied in numerous contexts; see, for instance. U.S. Pat. No. 5,453,945 by Tucker et al., U.S. Pat. No. 5,606,575 by Williams, as well as Daubechies&#39; monograph “Ten Lectures on Wavelets” SIAM (1992) and its references. In another landmark paper, “An algorithm for the machine calculation of complex Fourier series”,  Mathematics of Computation  19, pp. 297–301 (1965), J. W. Cooley and J. W. Tukey described a simplified algorithm for the calculation of Fourier series on the computer. The utility of this fast Fourier transform FFT is well known with thousands of important applications and implementations; see, for instance, U.S. Pat. No. 3,871,577 by Avellar et al., U.S. Pat. No. 3,881,100 by Works et al., U.S. Pat. No. 4,051,357 by Bonnerot, and “The DFT, an owner&#39;s manual for the discrete Fourier transform”, SIAM (1995) by W. Briggs and Van Emden Henson and its references. A requirement for both the FFT method and for the multiscale filtering of the Daubechies&#39; wavelets is that the sampling of input data must be equally spaced though further methods of adaptive refinement of grids have also been developed in each context. 
   Other examples of transforms whose efficient digital implementations are important and to which the invention is relevant include the transforms of Hilbert, Haar, Laplace, Bessel, Laguerre, Hermite, Chebyshev, Hotelling, Mersenne, and Fermat; see, for instance, U.S. Pat. No. 3,891,443 by Lynch et al. and U.S. Pat. No. 4,093,994 by Nussbaumer. 
   INVENTION SUMMARY 
   Three new families of wavelets, respectively called arithmetic wavelets, fan wavelets, and modular wavelets, are defined on the standard circle of radius one in the complex plane. Any complex-valued function defined on this circle may be written essentially uniquely as a complex linear combination of each family, and the approximation of specified input data as a finite linear combination for each family leads to a corresponding wavelet filter. Each filter depends upon a new quadrature on the circle, called the Farey quadrature, which relies on a novel method of non-equally-spaced sampling. The output of each wavelet filter plays the role in the invention of an intermediate representation between input data and any one of a number of useful output transformations of data which may be computed from the intermediate quantity. 
   With either analog or digital input data, it is convenient to think of the given input data as spatial data. The inverse wavelet transform or reconstruction algorithm requires calculating spatial data from wavelet data and admits an especially convenient implementation: the values of the spatial function at certain non-equally-spaced grids of arbitrarily fine spacing may be computed exactly using a specified finite set of wavelet coefficients. This reconstruction algorithm combines with the wavelet filter into a binary cascade giving an efficient procedure for data compression which is especially well-suited to discontinuous input data and to iterative refinement of output data. Furthermore, the methods extend directly to procedures for compression of multi-dimensional data. Computer coding for the reconstruction algorithm itself is sufficiently abbreviated and low-level that it might be transmitted together with compressed data, for instance, for down-loading from satellite to home computer. 
   For the calculation of classical transforms of spatial input data, it is convenient to think of the desired output data, for instance, the Fourier coefficients, as frequency data. The transform from spatial to frequency data is accomplished in two main steps, the first of which approximates the input data by wavelets using the wavelet filter. The second step is the calculation of Fourier coefficients or other frequency data in terms of wavelets and requires formulas derived in previous theoretical work. Similarly, the calculation of the inverse transform depends upon the reconstruction algorithm and known formulas which express frequency data in terms of the wavelets. The calculation of a transform or its inverse admits an elegant implementation as a binary cascade. 

   
     BRIEF DESCRIPTION OF FIGURES 
       FIG. 1   a  illustrates the standard circle C of radius one in the complex plane, where C bounds the standard disk D of radius one. The complex numbers +1 and −1 are also indicated, and the chord of C with these endpoints is labeled by the matrix 
     
       
         
           
             I 
             = 
             
               
                 ( 
                 
                   
                     
                       1 
                     
                     
                       0 
                     
                   
                   
                     
                       0 
                     
                     
                       1 
                     
                   
                 
                 ) 
               
               . 
             
           
         
       
     
       FIG. 1   b  illustrates a chord in the top semi-circle of C labeled by a matrix 
               A   =     (         a       b           c       d         )       ,         
together with two further “descendant” chords of C labeled by the matrix products UA and TA as indicated, where
 
             U   =     (         1       0           1       1         )           
and
 
             T   =       (         1       1           0       1         )     .           
The three chords determine a triangle inscribed in C, and the vertices of this triangle are indicated as complex numbers.
 
       FIG. 1   c  illustrates a chord in the bottom semi-circle of C labeled by a matrix 
               A   =     (         a       b           c       d         )       ,         
together with two further “descendant” chords of C labeled by the matrix products U −1 A and T −1 A as indicated, where
 
               U     -   1       =     (         1       0             -   1         1         )           
and
 
               T     -   1       =       (         1         -   1             0       1         )     .           
The three chords determine a triangle inscribed in C, and the vertices of this triangle are indicated as complex numbers.
 
       FIG. 2  depicts a classical figure in mathematics called “the Farey tesselation in Klein&#39;s model of hyperbolic geometry”. It is constructed beginning from the chord in  FIG. 1   a  by recursively taking descendants as in  FIG. 1   b  and  FIG. 1   c , respectively, on the top and bottom semi-circle of C. The figure itself is classical, but the sampling of input data on C at the endpoints of the chords of the Farey tesselation in increasing generation is a novel aspect of the invention disclosed here. 
       FIG. 3   a  illustrates the circle C, the chord labeled I and the two triangles in the Farey tesselation on either side of this chord. The vertices of these triangles are indicated inside the circle as complex numbers. Outside the circle are given four explicit combinations of cosine and sine functions, one such function next to each circular arc determined by the vertices, where θ is the usual angular coordinate on the circle. A function {tilde over (Θ)} I (θ) is uniquely determined by the figure, where on each such circular arc, {tilde over (Θ)} I (θ) takes the values of the nearby combination of cosine and sine functions. The other parts  FIGS. 3   b – 3   e  likewise determine analogous functions  A (θ) for other matrices 
             A   =       (         a       b           c       d         )     .           
These functions taken together form the system of wavelets on which the invention is based, and they are unique to this invention.
 
       FIG. 3   b  illustrates the chord in the top semi-circle of C labeled with the matrix A, where a&gt;c. As before, the figure determines a function on the circle denoted  A (θ) 
       FIG. 3   c  illustrates the chord in the top semi-circle of C labeled with the matrix A, where c&gt;=a. As before, the figure determines a function on the circle denoted {tilde over (Θ)} A (θ) 
       FIG. 3   d  illustrates the chord in the bottom semi-circle of C labeled with the matrix A, where a&gt;−c. As before, the figure determines a function on the circle denoted {tilde over (Θ)} A (θ). 
       FIG. 3   e  illustrates the chord in the bottom semi-circle of C labeled with the matrix A=, where −c&gt;=a. As before, the figure determines a function on the circle denoted {tilde over (Θ)} A (θ). 
       FIG. 4  illustrates the notation near the chord labeled by the matrix 
             A   =     (         a       b           c       d         )           
in the top semi-circle of C; this notation will be useful in several subsequent discussions.
 
       FIG. 5  provides a flow chart for the main driving routine in calculating the Fourier transform. 
       FIG. 6  provides a flow chart for the main recursive routine in calculating the Fourier transform. 
       FIG. 7  provides a flow chart for the procedure of updating coefficients in calculating the Fourier transform. 
       FIG. 8  provides a flow chart for the procedure of processing terminal arrows of the recursion in calculating the Fourier transform. 
       FIG. 9  provides a flow chart for the main driving routine in calculating the inverse Fourier transform. 
       FIG. 10  provides a flow chart for the main recursive routine in calculating the inverse Fourier transform. 
       FIG. 11  illustrates the region U consisting of all complex numbers with positive imaginary part. Map the disk D to U via the function             i(z+1)/(z−1); if two points in C are the endpoints of a chord in Klein&#39;s model of the Farey tesselation as in  FIG. 2 , then draw the semi-circle in U passing through the corresponding two points which is perpendicular to the real axis. This produces another classical figure in mathematics, called the “Farey tesselation in the upper half-space model of hyperbolic geometry”, which is indicated in  FIG. 11 .
   

   DESCRIPTION OF PREFERRED EMBODIMENTS 
   In order to disclose the methods, it is necessary to develop some notation and terminology. To this end, consider the standard disk D of radius one about the origin in the complex plane with its usual complex coordinate z=x+iy, where i=√{square root over (−1)} and x, y are real numbers, together with its boundary circle C as illustrated in  FIG. 1   a . An arrow is by definition an oriented chord of the circle C labeled by a two-by-two matrix 
             (         a       b           c       d         )     ,         
where the initial point of the chord is given by the complex number
 
                 b   +   ia       b   -   ia       ∈   C     ,         
and the final point of the chord is given by
 
               d   +   ic       d   -   ic       ∈     C   .           
A special arrow called the doe (short for “distinguished oriented edge”) is given by the diameter of C with endpoints −1,+1 labeled by the matrix
 
           I   =     (         1       0           0       1         )           
as in  FIG. 1   a . Also required subsequently are the matrices
 
           S   =     (         0         -   1             1       0         )           
and
 
               U   n     =     (         1       0           n       1         )       ,       T   n     =     (         1       n           0       1         )       ,         
for any integer n, which satisfy the identities S 2 =−I, SUS=−T −1 , STS=−U −1  of matrix products.
 
   Inductively define two separate binary cascades, one of top arithmetic arrows and another of bottom arithmetic arrows, as follows:
         Basis: The doe, which is illustrated in  FIG. 1   a , is both a top arithmetic arrow and a bottom arithmetic arrow.   Top Induction: As in  FIG. 1   b , given the top arithmetic arrow labeled by       

   
     
       
         
           
             A 
             = 
             
               ( 
               
                 
                   
                     a 
                   
                   
                     b 
                   
                 
                 
                   
                     c 
                   
                   
                     d 
                   
                 
               
               ) 
             
           
           , 
         
       
     
       
       
         
            there are also top arithmetic arrows labeled by 
         
       
     
  
   
     
       
         
           
             U 
             ⁢ 
             
                 
             
             ⁢ 
             A 
           
           = 
           
             ( 
             
               
                 
                   a 
                 
                 
                   b 
                 
               
               
                 
                   
                     a 
                     + 
                     c 
                   
                 
                 
                   
                     b 
                     + 
                     d 
                   
                 
               
             
             ) 
           
         
       
     
       
       
         
            and 
         
       
     
  
   
     
       
         
           
             T 
             ⁢ 
             
                 
             
             ⁢ 
             A 
           
           = 
           
             
               ( 
               
                 
                   
                     
                       a 
                       + 
                       c 
                     
                   
                   
                     
                       b 
                       + 
                       d 
                     
                   
                 
                 
                   
                     c 
                   
                   
                     d 
                   
                 
               
               ) 
             
             . 
           
         
       
     
       
       
         
           Bottom Induction: As in  FIG. 1   c , given the bottom arithmetic arrow labeled by 
         
       
     
  
   
     
       
         
           
             A 
             = 
             
               ( 
               
                 
                   
                     a 
                   
                   
                     b 
                   
                 
                 
                   
                     c 
                   
                   
                     d 
                   
                 
               
               ) 
             
           
           , 
         
       
     
       
       
         
            there are also bottom arithmetic arrows labeled by 
         
       
     
  
   
     
       
         
           
             
               U 
               
                 - 
                 1 
               
             
             ⁢ 
             A 
           
           = 
           
             ( 
             
               
                 
                   a 
                 
                 
                   b 
                 
               
               
                 
                   
                     c 
                     - 
                     a 
                   
                 
                 
                   
                     d 
                     - 
                     b 
                   
                 
               
             
             ) 
           
         
       
     
       
       
         
            and 
         
       
     
  
   
     
       
         
           
             
               T 
               
                 - 
                 1 
               
             
             ⁢ 
             A 
           
           = 
           
             
               ( 
               
                 
                   
                     
                       a 
                       - 
                       c 
                     
                   
                   
                     
                       b 
                       - 
                       d 
                     
                   
                 
                 
                   
                     c 
                   
                   
                     d 
                   
                 
               
               ) 
             
             . 
           
         
       
     
   
   It is a classical theorem in mathematics that the chords underlying any two arithmetic arrows meet only at their endpoints, if at all, and that the family of all such chords decomposes the disk D into an infinite collection of triangles with vertices in the circle C as is illustrated in  FIG. 2 ; this figure is called “the Farey tesselation in Klein&#39;s model of hyperbolic geometry”. There is no suitable reference for this procedure in the literature, and it is for completeness that the explicit recursive definition of arithmetic arrows has been given here. An arithmetic arrow is said to be of generation g if it arises from g applications of the inductive clause starting from the doe in case of either top or bottom arrows; the doe has generation zero by convention. 
   Consider the infinite set Q  ⊂  C consisting of the endpoints of chords underlying all arithmetic arrows, and say a point of Q is of generation g if it is the endpoint of the chord underlying an arrow of generation g and no less; −1 and +1 are of generation zero by convention. There is a canonical enumeration of the generation g points of Q clockwise in C starting from −1 and the associated enumeration of Q itself by increasing generation. For example, the ordering begins with: 
   
     
       
         
           
             - 
             1 
           
           , 
           
             + 
             1 
           
           , 
           
             + 
             i 
           
           , 
           
             - 
             i 
           
           , 
           
             
               
                 - 
                 1 
               
               - 
               
                 2 
                 ⁢ 
                 i 
               
             
             
               
                 - 
                 1 
               
               + 
               
                 2 
                 ⁢ 
                 i 
               
             
           
           , 
           
             
               
                 - 
                 2 
               
               - 
               i 
             
             
               
                 - 
                 2 
               
               + 
               i 
             
           
           , 
           
             
               2 
               - 
               i 
             
             
               2 
               + 
               i 
             
           
           , 
           
             
               1 
               - 
               
                 2 
                 ⁢ 
                 i 
               
             
             
               1 
               + 
               
                 2 
                 ⁢ 
                 i 
               
             
           
           , 
           
             
               
                 - 
                 1 
               
               - 
               
                 3 
                 ⁢ 
                 i 
               
             
             
               
                 - 
                 1 
               
               + 
               
                 3 
                 ⁢ 
                 i 
               
             
           
           , 
           
             … 
             ⁢ 
             
                 
             
             . 
           
         
       
     
   
   Given input data on the circle C, the sampling of it at the points Q  ⊂  C in this order of increasing generation will be referred to as the Farey quadrature. In practice, one might interpolate given data as required at the sampling points of the Farey quadrature or restrict the Farey quadrature to a circular arc in C. (In the subsequent discussion of mathematical basis, the sample points of the Farey quadrature will be seen to correspond to the rational points in the real line enumerated in increasing order, where the generation is the length of a corresponding continued fraction expansion.) 
   Notice that the doe separates the triangle with vertices −1,+1, −i from the triangle with vertices −1,+1,+i. In the same way, an arbitrary arithmetic arrow separates two triangles complementary to all the arithmetic arrows in D. The endpoints of chords of these triangles in various cases are illustrated in  FIGS. 3   a – 3   e  as functions of the matrix 
           A   =     (         a       b           c       d         )           
labeling the arithmetic arrow.  FIG. 3   a  depicts the doe itself with A =I,  FIGS. 3   b  and  3   c  depict top arrows with a&gt;c and c≧a, respectively, and  FIGS. 3   d  and  3   e  depict bottom arrows with a&gt;−c and −c≧a, respectively. The notation inside the circles indicates the endpoints of the chords as complex numbers, and the notation outside the circles in each case of  FIGS. 3   a – 3   e  is yet to be explained.
 
   To this end, define a trigonometric function to be a real-valued function
 
 f (θ)=α cos θ+β sin θ+γ,
 
where θ is the usual angular coordinate on the unit circle C and α, β, γ are real numbers. Next, define a piecewise trigonometric function on the circle to be a function f(θ) so that there is a finite collection of circular arcs I j    ⊂  C, for j=1, . . . J, any two of which meet at common endpoints in C, if at all, together with a collection of trigonometric functions t j  (θ) for j=1, . . . ,J, so that f(θ)=t j (θ) if θ ε I j . In other words, C is decomposed into a finite number of non-overlapping circular arcs, and on each such arc, f takes the values of a trigonometric function.
 
   There is a particular family of piecewise trigonometric functions, one such arithmetic wavelet {tilde over (Θ)} A (θ) for each matrix A labeling an arithmetic arrow. These functions are defined in  FIGS. 3   a – 3   e , where the endpoints of the circular arcs are as described before, and each trigonometric function is written outside the circle next to its corresponding circular arc. There are thus five cases in the definition of arithmetic wavelet corresponding to the five cases in  FIGS. 3   a – 3   e  already discussed, and in each case, the arithmetic wavelet itself is a piecewise trigonometric function defined using exactly four circular arcs. Arithmetic wavelets are a fundamental new ingredient of this invention and no doubt seem entirely ad hoc and unmotivated at this juncture of the discussion. The mathematical basis for them will be given later, but it is worth pointing out now that each arithmetic wavelet {tilde over (Θ)} A (θ) is a once-continuously differentiable function taking value zero at the points −1,+1, −i of the circle C, that is, for θ=0, −π/2, −π, except for {tilde over (Θ)} U     −1    (θ) and {tilde over (Θ)} T     −1    (θ) which take the value zero only at the points ±1. 
   In order to explicate the definition of arithmetic wavelets, notice that any two-by-two matrix 
           A   =     (         a       b           c       d         )           
determines a self-mapping M A : C→C of the circle C as follows:
 
                 M   A     ⁡     (       t   -   i       t   +   i       )       =         (     ta   +   b     )     -     i   ⁡     (     tc   +   d     )             (     ta   +   b     )     +     i   ⁡     (     tc   +   d     )             ,         
and in fact, the image of the endpoints, −1 and +1, of the doe under M A  are the endpoints of the arithmetic arrow with label A. Construct from the function {tilde over (Θ)} I (θ) defined on C in  FIG. 3   a  the corresponding vector field on C given by
 
                   ϑ   ~     I     ⁡     (   θ   )       ⁢     ∂     ∂   θ         ,         
where
 
           ∂     ∂   θ           
is the usual unit tangent vector field to C.
 
   There is an explicit formula to be given presently for the transformation of suitable vector fields under the change of coordinates on C given by M A . Namely, the vector field 
               t   ⁡     (   θ   )       ⁢     ∂     ∂   θ         =       [       α   ⁢           ⁢   cos   ⁢           ⁢   θ     +     β   ⁢           ⁢   sin   ⁢           ⁢   θ     +   γ     ]     ⁢     ∂     ∂   θ               
transforms under M A  to the vector field
 
                 t   A     ⁡     (   θ   )       ⁢     ∂     ∂   θ         ,         
where
 
   
     
       
         
           
             
               t 
               A 
             
             ⁡ 
             
               ( 
               θ 
               ) 
             
           
           = 
           
             
               { 
               
                 
                   
                     
                       
                         1 
                         2 
                       
                       [ 
                       
                         
                           2 
                           ⁢ 
                           
                             ( 
                             
                               
                                 c 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 d 
                               
                               - 
                               ab 
                             
                             ) 
                           
                           ⁢ 
                           β 
                         
                         + 
                         
                           
                             ( 
                             
                               
                                 d 
                                 2 
                               
                               - 
                               
                                 b 
                                 2 
                               
                             
                             ) 
                           
                           ⁢ 
                           
                             ( 
                             
                               α 
                               + 
                               γ 
                             
                             ) 
                           
                         
                         + 
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           
                             
                               ( 
                               
                                 
                                   a 
                                   2 
                                 
                                 - 
                                 
                                   c 
                                   2 
                                 
                               
                               ) 
                             
                             ⁢ 
                             
                               ( 
                               
                                 α 
                                 - 
                                 γ 
                               
                               ) 
                             
                           
                           ] 
                         
                         ⁢ 
                         cos 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         θ 
                       
                       + 
                       
                         [ 
                         
                           
                             
                               ( 
                               
                                 ad 
                                 + 
                                 bc 
                               
                               ) 
                             
                             ⁢ 
                             β 
                           
                           + 
                           
                             bd 
                             ⁡ 
                             
                               ( 
                               
                                 α 
                                 + 
                                 γ 
                               
                               ) 
                             
                           
                           - 
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           
                             ac 
                             ⁡ 
                             
                               ( 
                               
                                 α 
                                 - 
                                 γ 
                               
                               ) 
                             
                           
                           ] 
                         
                         ⁢ 
                         sin 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         θ 
                       
                       + 
                       
                         
                           1 
                           2 
                         
                         [ 
                         
                           
                             2 
                             ⁢ 
                             
                               ( 
                               
                                 
                                   c 
                                   ⁢ 
                                   
                                       
                                   
                                   ⁢ 
                                   d 
                                 
                                 + 
                                 ab 
                               
                               ) 
                             
                             ⁢ 
                             β 
                           
                           + 
                           
                             
                               ( 
                               
                                 
                                   d 
                                   2 
                                 
                                 + 
                                 
                                   b 
                                   2 
                                 
                               
                               ) 
                             
                             ⁢ 
                             
                               ( 
                               
                                 α 
                                 + 
                                 γ 
                               
                               ) 
                             
                           
                           - 
                         
                       
                     
                   
                 
                 
                   
                     
                       
                         
                           ( 
                           
                             
                               a 
                               2 
                             
                             + 
                             
                               c 
                               2 
                             
                           
                           ) 
                         
                         ⁢ 
                         
                           ( 
                           
                             α 
                             - 
                             γ 
                           
                           ) 
                         
                       
                       ] 
                     
                   
                 
               
               } 
             
             . 
           
         
       
     
   
   More generally, given a piecewise trigonometric function f(θ) taking the values of the trigonometric function t j (θ) on the circular arc I j  as before, the corresponding vector field 
             f   ⁡     (   θ   )       ⁢     ∂     ∂   θ             
transform under M A  to the vector field which on the circular arc M A (I j ) is given by
 
   
     
       
         
           
             
               t 
               j 
               A 
             
             ⁡ 
             
               ( 
               θ 
               ) 
             
           
           ⁢ 
           
             
               ∂ 
               
                 ∂ 
                 θ 
               
             
             . 
           
         
       
     
   
   Changing coordinates on C by M A  using this formula transforms the vector field 
                 ϑ   ~     I     ⁡     (   θ   )       ⁢     ∂     ∂   θ             
to another vector field
 
                 ϑ   A     ⁡     (   θ   )       ⁢     ∂     ∂   θ         ,         
thereby defining the function {tilde over (Θ)} A (θ) on C. Finally except for A=U −1  and A =T −1 , the corresponding arithmetic wavelet is given by
 {tilde over (Θ)} A (θ)={tilde over (Θ)} A (θ)−[αcos θ+β sin θ+γ], 
where α,β, γ are chosen so that {tilde over (Θ)}(π)={tilde over (Θ)}(0)={tilde over (Θ)}(−π/2)=0; the two special cases are
 {tilde over (Θ)} U     −1   (θ)={tilde over (Θ)} U     −1    (θ)+2 sin θ and {tilde over (Θ)} T     −1    (θ)={tilde over (Θ)} T     −1   (θ)−2 sin θ 
(which are defined in this manner to guarantee a symmetry of the upper and lower semi-circles of C). This is the abstract definition of arithmetic wavelets which is made explicit in  FIG. 3 .
 
   It is furthermore convenient to define 
                 ϑ   _     A     ⁡     (   θ   )       =     {                 ϑ   ~     A     ⁡     (   θ   )       ;               if   ⁢           ⁢   A     ≠     U     -   1         ,     T     -   1       ,                   ϑ     U     -   1         ⁡     (   θ   )       ;               if   ⁢           ⁢   A     =     U     -   1         ,                   ϑ     T     -   1         ⁡     (   θ   )       ;               if   ⁢           ⁢   A     =     T     -   1         ,                   
so that for every label A on an arithmetic arrow, {tilde over (Θ)} A (π)={tilde over (Θ)} A (0)={tilde over (Θ)} A (−π/2)=0.
 
   The arithmetic wavelets enjoy an important renormalization property, namely, 
 
{tilde over (Θ)} BA (M A (θ))=M′ A (θ) {tilde over (Θ)} B (θ),
 
where the prime denotes the usual derivative and where it is required that either both matrices B and A are matrix products of U +1 , T +1  or both matrices B and A are matrix products of U −1 , T −1 .
 
   Just as a function f=f (θ) may be expressed in its representation as a Fourier series f˜Σ n c n e inθ , so too it may be expressed as a series f≈Σe A {tilde over (Θ)} A (θ) of arithmetic wavelets, which together form a linearly independent set. The sum is over all arithmetic arrows, and the coefficients e A  are called the arithmetic wavelet coefficients. The calculation of arithmetic wavelet coefficients from the input data f is called the arithmetic wavelet filter. The arithmetic wavelet coefficients are not quite uniquely determined by f as will be explained. 
   The reconstruction algorithm or inverse wavelet transform provides a method for calculating function values at points of the circle from arithmetic wavelet coefficients. To determine the value of the sum Σe A {tilde over (Θ)} A  at a specified point q ε Q  ⊂ C, draw a line segment from q to the origin in D; this segment is contained in a finite collection of triangles complementary to all arithmetic arrows, whose boundary edges taken together form a finite set of chords; the corresponding finite set of arithmetic arrows A enumerates the only coefficients e A  which affect the value of Σ AεS e A {tilde over (Θ)} A  at q. This is an important finiteness property of arithmetic wavelets which is crucial to the efficiency of the reconstruction algorithm. 
   This completes the general discussion of arithmetic wavelets, the first family of new wavelets disclosed here, and the two further families of new wavelets are next defined. 
   For each label A on an arithmetic arrow, there are two fan wavelets 
                       ϕ   A     ⁡     (   θ   )       =       ∑     n   ⁢     &gt;   _     ⁢   0       ⁢           ⁢         ϑ   _         U   n     ⁢   A       ⁡     (   θ   )           ,                     ϕ   SA     ⁡     (   θ   )       =       ∑     n   ⁢     &gt;   _     ⁢   0       ⁢           ⁢         ϑ   _         T     -   n       ⁢   A       ⁡     (   θ   )           ,               
as well as two modular wavelets
 
   
     
       
         
           
             
               
                 
                   
                     
                       ψ 
                       A 
                     
                     ⁡ 
                     
                       ( 
                       θ 
                       ) 
                     
                   
                   = 
                   
                     
                       ∑ 
                       
                         n 
                         ⁢ 
                         
                           &gt; 
                           _ 
                         
                         ⁢ 
                         0 
                       
                     
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       n 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         
                           
                             ϑ 
                             _ 
                           
                           
                             
                               U 
                               n 
                             
                             ⁢ 
                             A 
                           
                         
                         ⁡ 
                         
                           ( 
                           θ 
                           ) 
                         
                       
                     
                   
                 
                 , 
               
             
           
           
             
               
                 
                   
                     ψ 
                     SA 
                   
                   ⁡ 
                   
                     ( 
                     θ 
                     ) 
                   
                 
                 = 
                 
                   
                     ∑ 
                     
                       n 
                       ⁢ 
                       
                         &gt; 
                         _ 
                       
                       ⁢ 
                       0 
                     
                   
                   ⁢ 
                   
                     n 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       
                         
                           
                             ϑ 
                             _ 
                           
                           
                             
                               T 
                               
                                 - 
                                 n 
                               
                             
                             ⁢ 
                             A 
                           
                         
                         ⁡ 
                         
                           ( 
                           θ 
                           ) 
                         
                       
                       . 
                     
                   
                 
               
             
           
         
       
     
   
   It follows immediately from the definitions that there are the following relations among the wavelets for any label A on an arithmetic arrow. 
   
     
       
         
           
             
               
                 
                   
                     
                       ϕ 
                       A 
                     
                     ⁡ 
                     
                       ( 
                       θ 
                       ) 
                     
                   
                   = 
                   
                     
                       
                         ψ 
                         
                           
                             U 
                             
                               - 
                               1 
                             
                           
                           ⁢ 
                           A 
                         
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                     - 
                     
                       
                         ψ 
                         A 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                   
                 
                 , 
                 
                   
                     
                       ϕ 
                       SA 
                     
                     ⁡ 
                     
                       ( 
                       θ 
                       ) 
                     
                   
                   = 
                   
                     
                       
                         ψ 
                         
                           
                             U 
                             
                               - 
                               1 
                             
                           
                           ⁢ 
                           SA 
                         
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                     - 
                     
                       
                         ψ 
                         SA 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                   
                 
                 , 
               
             
           
           
             
               
                 
                   
                     
                       ϑ 
                       _ 
                     
                     A 
                   
                   ⁡ 
                   
                     ( 
                     θ 
                     ) 
                   
                 
                 = 
                 
                   
                     
                       
                         ϕ 
                         A 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                     - 
                     
                       
                         ϕ 
                         UA 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                   
                   = 
                   
                     
                       
                         ϕ 
                         SA 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                     - 
                     
                       
                         ϕ 
                         USA 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                   
                 
               
             
           
           
             
               
                 = 
                 
                   
                     
                       
                         ψ 
                         
                           
                             U 
                             
                               - 
                               1 
                             
                           
                           ⁢ 
                           A 
                         
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                     - 
                     
                       2 
                       ⁢ 
                       
                         
                           ψ 
                           A 
                         
                         ⁡ 
                         
                           ( 
                           θ 
                           ) 
                         
                       
                     
                     + 
                     
                       
                         ψ 
                         UA 
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                   
                   = 
                   
                     
                       
                         ψ 
                         
                           
                             U 
                             
                               - 
                               1 
                             
                           
                           ⁢ 
                           SA 
                         
                       
                       ⁡ 
                       
                         ( 
                         θ 
                         ) 
                       
                     
                     - 
                     
                       2 
                       ⁢ 
                       
                         
                           ψ 
                           SA 
                         
                         ⁡ 
                         
                           ( 
                           θ 
                           ) 
                         
                       
                     
                     + 
                     
                       
                         
                           ψ 
                           USA 
                         
                         ⁡ 
                         
                           ( 
                           θ 
                           ) 
                         
                       
                       . 
                     
                   
                 
               
             
           
         
       
     
   
   On the other hand as is not at all obvious from the definitions, φ I  and ψ I  are given by the following explicit formulas as piecewise trigonometric functions 
             ϕ   I     =     {                   ⁢       2   ⁢           ⁢   sin   ⁢           ⁢   θ     ;                             if   ⁢           ⁢   0     ⁢     &lt;   _     ⁢   θ   ⁢     &lt;   _     ⁢   π     ,                 -   2     ⁢           ⁢   cos   ⁢           ⁢   θ                 -   2     ⁢           ⁢   sin   ⁢           ⁢   θ     -   2     ;               if   ⁢           ⁢   π     ⁢     &lt;   _     ⁢   θ   ⁢     &lt;   _     ⁢     3   ⁢   π   ⁢     /     ⁢   2       ,                 -   2     ⁢           ⁢   cos   ⁢           ⁢   θ                 +   2     ⁢           ⁢   sin   ⁢           ⁢   θ     +   2     ;               if   ⁢           ⁢   3   ⁢     π   /   2       ⁢     &lt;   _     ⁢   θ   ⁢     &lt;   _     ⁢     2   ⁢   π       ,                   
and
 
   
     
       
         
           
             
               ψ 
               I 
             
             ⁡ 
             
               ( 
               θ 
               ) 
             
           
           -= 
           
             { 
             
               
                 
                   
                     
                       2 
                       - 
                       
                         2 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         cos 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         θ 
                       
                     
                     ; 
                   
                 
                 
                   
                     
                       
                         if 
                         ⁢ 
                         
                             
                         
                         ⁢ 
                         0 
                       
                       ≤ 
                       θ 
                       ≤ 
                       π 
                     
                     , 
                   
                 
               
               
                 
                   
                     0 
                     ; 
                   
                 
                 
                   
                     
                       if 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       π 
                     
                     ≤ 
                     θ 
                     ≤ 
                     
                       2 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       
                         π 
                         . 
                       
                     
                   
                 
               
             
           
         
       
     
   
   In fact, modular wavelets arise from ψ I  in exactly the same manner that arithmetic wavelets arise from {tilde over (Θ)} I , namely, 
               ψ   I     ⁡     (   θ   )       ⁢     ∂     ∂   θ             
transforms under M A  to the vector field
 
                 ψ   A   *     ⁡     (   θ   )       ⁢     ∂     ∂   θ         ,         
and φ A (θ)=ψ A *(θ)−[α cos θ+β sin θ+γ], where α, β, γ are chosen to guarantee that ψ A (0)=ψ A (π)=ψ A (−π/2)=0; transforming
 
               ψ   I     ⁡     (   θ   )       ⁢     ∂     ∂   θ             
using the change of coordinates given by M SA  likewise gives rise to ψ SA (θ). The fan wavelets also arise from φ I  in the analogous manner.
 
   In contrast to arithmetic wavelets, neither the fan nor modular wavelets are linearly independent, and in each case, there is one linear relation for each arithmetic arrow, namely,
 
φ A −φ UA =φ SA −φ USA ,
 
ψ U     −1     A −2ψ A +ψ UA =ψ U     −1     SA −2ψ SA +ψ USA .
 
   On the other hand, the following collection of modular wavelets forms a basis
 
{φ A : A labels a top arithmetic arrow and c≧a}
 
U {ψ SA : A labels a top arithemtic arrow and a&gt;c}
 
U {ψ A : A labels a bottom arithemtic arrow and −c≧a}
 
U {ψ SA : A labels a bottom arithemtic arrow and a&gt;−c};
 
there is an analogous basis for the fan wavelets.
 
   Both fan and modular wavelets enjoy precisely the same finiteness property as arithmetic wavelets. Furthermore, both fan and modular wavelets enjoy renormalization properties, namely,
 
φ BA ( M   A (θ))= M′   A (θ) φ B (θ),
 
ψ BA ( M   A (θ))= M′   A (θ) ψ B (θ),
 
where the requirements on A, B are as before.
 
   This completes the necessary abstract definitions. The methods will first be presented using arithmetic wavelets for real-valued input functions with extensions to modular and fan wavelets and complex-valued or multi-dimensional input/output data to be described later. As a point of notation throughout these discussions, there will be the tacit assumption that the entries in the matrix denoted A are given by 
   
     
       
         
           
             ( 
             
               
                 
                   a 
                 
                 
                   b 
                 
               
               
                 
                   c 
                 
                 
                   d 
                 
               
             
             ) 
           
           . 
         
       
     
   
   The Fourier Transform 
   Included in the section entitled “Source Codes” is an implementation in the computer language C of a preferred embodiment of the method described in this section employing arithmetic wavelets. 
   Suppose that f(θ) is some specified real-valued input function defined on the circle. The calculation of the Fourier transform of f proceeds by two main steps: 
   
       
       
         
           Step 1: Choose a finite set S of arithmetic arrows and approximate f≈Σ AεS e A {tilde over (Θ)} A  calculating the coefficients e A  in a manner to be described in terms of the values of f at specified points using the Farey quadrature. 
           Step 2: Substitute into the expression in Step 1 the known Fourier expansions {tilde over (Θ)} A (θ) ˜Σ n  c n   A  e inθ  in order to derive the approximation 
         
       
     
  
   
     
       
         
           
             c 
             n 
           
           = 
           
             
               Σ 
               
                 A 
                 ∈ 
                 S 
               
             
             ⁢ 
             
               ⅇ 
               A 
             
             ⁢ 
             
               
                 c 
                 n 
                 A 
               
               . 
             
           
         
       
     
   
   The coefficients require in Step 2 are known theoretically and given for n≠0, ±1 by 
   
     
       
         
           
             π 
             ⁢ 
             
                 
             
             ⁢ 
             
               i 
               ⁡ 
               
                 ( 
                 
                   
                     n 
                     3 
                   
                   - 
                   n 
                 
                 ) 
               
             
             ⁢ 
             
               c 
               n 
               A 
             
           
           = 
           
             
               - 
               
                 
                   
                     [ 
                     
                       
                         
                           ( 
                           
                             c 
                             - 
                             a 
                           
                           ) 
                         
                         2 
                       
                       + 
                       
                         
                           ( 
                           
                             b 
                             - 
                             d 
                           
                           ) 
                         
                         2 
                       
                     
                     ] 
                   
                   ⁡ 
                   
                     [ 
                     
                       
                         
                           ( 
                           
                             b 
                             - 
                             d 
                           
                           ) 
                         
                         - 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               - 
                               c 
                             
                             ) 
                           
                         
                       
                       
                         
                           ( 
                           
                             b 
                             - 
                             d 
                           
                           ) 
                         
                         + 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               - 
                               c 
                             
                             ) 
                           
                         
                       
                     
                     ] 
                   
                 
                 n 
               
             
             + 
             
               2 
               ⁢ 
               
                 
                   
                     ( 
                     
                       
                         c 
                         2 
                       
                       + 
                       
                         d 
                         2 
                       
                     
                     ) 
                   
                   ⁡ 
                   
                     [ 
                     
                       
                         d 
                         - 
                         ic 
                       
                       
                         d 
                         + 
                         ic 
                       
                     
                     ] 
                   
                 
                 n 
               
             
             + 
             
               2 
               ⁢ 
               
                 
                   
                     ( 
                     
                       
                         a 
                         2 
                       
                       + 
                       
                         b 
                         2 
                       
                     
                     ) 
                   
                   ⁡ 
                   
                     [ 
                     
                       
                         b 
                         - 
                         ia 
                       
                       
                         b 
                         + 
                         ia 
                       
                     
                     ] 
                   
                 
                 n 
               
             
             - 
             
               
                 
                   
                     [ 
                     
                       
                         
                           ( 
                           
                             c 
                             + 
                             a 
                           
                           ) 
                         
                         2 
                       
                       + 
                       
                         
                           ( 
                           
                             b 
                             + 
                             d 
                           
                           ) 
                         
                         2 
                       
                     
                     ] 
                   
                   ⁡ 
                   
                     [ 
                     
                       
                         
                           ( 
                           
                             b 
                             + 
                             d 
                           
                           ) 
                         
                         - 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               + 
                               c 
                             
                             ) 
                           
                         
                       
                       
                         
                           ( 
                           
                             b 
                             + 
                             d 
                           
                           ) 
                         
                         + 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               + 
                               c 
                             
                             ) 
                           
                         
                       
                     
                     ] 
                   
                 
                 n 
               
               . 
             
           
         
       
     
   
   Furthermore, the coefficients c 0   A , c 1   A , c −1   A , are given by
 
π c   ±1   A =θ h ( c   2   −d   2 ±2 icd )+θ r [( b−d ) 2 −( a−c ) 2 ∓2 i ( b−d )( a−c )]/2+θ t ( a   2   −b   2 ±2 iab )+θ l [( b+d ) 2 −( a+c ) 2 ∓2 i ( b+d )( a+c )]/2,
 
π c   0   A =2θ h ( c   2   +d   2 )−θ r [( b−d ) 2 +( a−c )/ 2 ]+2θ t ( a   2   +b   2 )−θ l [( b+d ) 2 +( a+c ) 2 ],
 
where the angles are
 
   
     
       
         
           
             
               
                 
                   
                     θ 
                     h 
                   
                   = 
                   
                     
                       tan 
                       
                         - 
                         1 
                       
                     
                     ⁢ 
                     
                       ( 
                       
                         
                           2 
                           ⁢ 
                           cb 
                         
                         
                           
                             d 
                             2 
                           
                           - 
                           
                             c 
                             2 
                           
                         
                       
                       ) 
                     
                   
                 
                 , 
               
             
             
               
                 
                   
                     θ 
                     l 
                   
                   = 
                   
                     
                       tan 
                       
                         - 
                         1 
                       
                     
                     ⁢ 
                     
                       ( 
                       
                         
                           2 
                           ⁢ 
                           
                             ( 
                             
                               b 
                               + 
                               d 
                             
                             ) 
                           
                           ⁢ 
                           
                             ( 
                             
                               a 
                               + 
                               c 
                             
                             ) 
                           
                         
                         
                           
                             
                               ( 
                               
                                 b 
                                 + 
                                 d 
                               
                               ) 
                             
                             2 
                           
                           - 
                           
                             
                               ( 
                               
                                 a 
                                 + 
                                 c 
                               
                               ) 
                             
                             2 
                           
                         
                       
                       ) 
                     
                   
                 
                 , 
               
             
           
           
             
               
                 
                   
                     θ 
                     t 
                   
                   = 
                   
                     
                       tan 
                       
                         - 
                         1 
                       
                     
                     ⁢ 
                     
                       ( 
                       
                         
                           2 
                           ⁢ 
                           ab 
                         
                         
                           
                             b 
                             2 
                           
                           - 
                           
                             a 
                             2 
                           
                         
                       
                       ) 
                     
                   
                 
                 , 
               
             
             
               
                 
                   θ 
                   T 
                 
                 = 
                 
                   
                     
                       tan 
                       
                         - 
                         1 
                       
                     
                     ⁡ 
                     
                       ( 
                       
                         
                           2 
                           ⁢ 
                           
                             ( 
                             
                               b 
                               - 
                               d 
                             
                             ) 
                           
                           ⁢ 
                           
                             ( 
                             
                               a 
                               - 
                               c 
                             
                             ) 
                           
                         
                         
                           
                             
                               ( 
                               
                                 b 
                                 - 
                                 d 
                               
                               ) 
                             
                             2 
                           
                           - 
                           
                             
                               ( 
                               
                                 a 
                                 - 
                                 c 
                               
                               ) 
                             
                             2 
                           
                         
                       
                       ) 
                     
                   
                   . 
                 
               
             
           
         
       
     
   
   It may be useful in practice in particular applications to calculate and archive or otherwise store the constants required in the previous expressions for c n   A  and recover them from memory at run time rather than computing them at run time. 
   The Fourier coefficients c 0 , c ±1  of f thus require special treatment which does not present additional challenges. For simplicity, suppose that the input function f (θ) has these three coefficients fixed by the condition that f(θ)=0 for θ=0, −π/2, −π. More precisely, if f (θ) is any real-valued function on the circle, then let  f (θ) denote its normalization defined by  f (θ)=f(θ)+α cos θ+β sin θ+γ, where α, β, γ are chosen so that  f  takes value zero at 0, −π/2, −π. The specified simplifying assumption on f thus amounts to the condition that f=  f . 
   The procedure for calculating wavelet coefficients is slightly different depending upon whether the corresponding arithmetic arrow is a top or bottom arrow. However, the antipodal map θ            π+θ transforms the bottom of the circle C to the top in such a way that it suffices to discuss only the case of top arrows. More precisely, the algorithm for bottom arrows arises from that for top arrows by:
       replacing the input data value f (θ) with the input data value f (θ+π),   replacing the matrix A in the described manipulations for top arrows by the conjugate matrix SAS for bottom arrows, and   replacing the trigonometric function αcos θ+βsin θ+γ for top arrows by the trigonometric function −αcos θ−βsin θ+γ for bottom arrows.       

   The algorithm and computer coding for bottom arrows is therefore derived without difficulty from that for top arrows, and the subsequent discussion is specialized without loss of generality to top arrows. 
   In addition to the function f (θ) defined on the circle, suppose that there is also specified a bandwidth of interest N (i.e. the method should calculate the Fourier coefficients C n , only in the range |n|≦N) and a tolerance EPS (where contributions to the specified Fourier coefficients are regarded as negligible if they are of magnitude less than EPS). There are numerous variants of the method which depend upon other parameters which may be tailored to a given application, and some these variants will be discussed further. 
   Steps 1 and 2 are merged into a single binary cascade which keeps track of an ongoing approximation to the Fourier coefficients as follows. A cascade element is called an arrow-structure and is defined to consist of the specification of
         an arithmetic arrow A of generation g,   the wavelet coefficient e A  on {tilde over (Θ)} A  in the approximation of f,   the coefficients α, β, γ of a trigonometric function defined as follows. The endpoints of the chord corresponding to A decompose C into two circular arcs, exactly one of which contains none of the points −1,+1, −i. The sum Σ B≠A  e B {tilde over (Θ)} B  over all arithmetic arrows B of generation at most g except for A itself is given on this interval by the particular trigonometric function α cos θ+β sin θ+γ.       

   The coefficients α, β, γ in an arrow-structure keep a lagged/updated running tally of the overall effect of what has come before it in the cascade; as a result of this technique, the method requires essentially no memory other than the storage of the running approximation to Fourier coefficients and the stack required for the recursive computation in the cascade of arrow-structures. 
   The next technical point involves a regularization in the calculation of arithmetic wavelet coefficients; this regularization is required because the approximation to f as a linear combination Σ AδS e A {tilde over (Θ)} A  is not uniquely determined. Given an arrow-structure in the specified notation and referring to  FIG. 4 , when sampling the input data at the point 
               (     b   +   d     )     +     i   ⁡     (     a   +   c     )             (     b   +   d     )     -     i   ⁡     (     a   +   c     )               
in the Farey enumeration with corresponding angular coordinate θ 0 , the one real input datum f(θ 0 ) must determine the two coefficients e UA  and e TA . According to the formulas presented in  FIGS. 3   a – 3   e , these new coefficients are constrained by
 
               f   ⁡     (     θ   0     )       =       α   ⁡     [           (     b   +   d     )     2     -       (     a   +   c     )     2             (     b   +   d     )     2     +       (     a   +   c     )     2         ]       +     β   ⁡     [       2   ⁢     (     a   +   c     )     ⁢     (     b   +   d     )             (     b   +   d     )     2     +       (     a   +   c     )     2         ]       +   γ   +       4   ⁢     (       ⅇ   UA     -     e   TA       )             (     b   +   d     )     2     +       (     a   +   c     )     2         +       8   ⁢           ⁢     ⅇ   A     ⁢     sgn   ⁡     (     a   -   c     )               (     b   +   d     )     2     +       (     a   +   c     )     2             ,         
where sgn (a−c) is a sign defined to be +1 if a&gt;c and −1 otherwise. There remains, however, one real degree of freedom in the specification of e UA , e TA , and it is eliminated by demanding the best least-squares fit to the values of f at the next generation of points
 
                 (       2   ⁢   b     +   d     )     +     i   ⁡     (       2   ⁢   a     +   c     )             (       2   ⁢   b     +   d     )     -     i   ⁡     (       2   ⁢   a     +   c     )           ,         (     b   +     2   ⁢   d       )     +     i   ⁡     (     a   +     2   ⁢   c       )             (     b   +     2   ⁢   d       )     -     i   ⁡     (     a   +     2   ⁢   c       )                 
with respective angular coordinates θ 1  and θ 2  as illustrated in  FIG. 4 . Updating the lagged trigonometric coefficients in accordance with the formulas presented in  FIGS. 3   a – 3   e  produces trigonometric functions V 1 (θ) and V 2 (θ) which give the values of the ongoing approximations at θ 1  and θ 2 , respectively, and whose coefficients are explicit inhomogeneous linear functions of e UA , e TA , namely,
   V   i (θ i )=vic +viu e UA +vit e TA , for i= 1 ,  2 . 
   The coefficients are explicitly described most concisely in pseudo-code, where e=e A , alp=α, bet =β, gam=γ, bpd=b+d and apc=a+c:
         if(a&gt;c){
           ax1=alp+(d*d−c*c+2*(a*c−b*d)+a*a−b*b)*2*e,   ay1=2*(b*b−a*a);   bx1=bet+(c*d−a*d−b*c−a*b)*4*e;   by1=4*a*b;   cx1=gam+(2*(a*c+b*d)−c*c−d*d+a*a+b*b)*2*e;   cy1=−2*(a*a+b*b);   ax2=alp+4*(d*d−c*c)*e;   ay2=2*(c*c−d*d);   bx2=bet+8*e*c*d;   by2=−4*c*d;   cx2=gam−4*e*(c*c+d*d);   cy2=2*(c*c+d*d);   }.   
           else{
           ax1=alp+4*e*(a*a−b*b);   ay1=2*(b*b−a*a);   bx1=bet−8*e*a*b;   by1=4*a*b;   cx1=gam+4*e*(a*a+b*b);   cy1=−2*(a*a+b*b);   ax2=alp+(a*a−b*b+2*(b*d−a*c)−c*c+d*d)*2*e;   ay2=2*(c*c−d*d);   bx2=bet+(a*d−a*b+b*c+c*d)*4*e;   by2=−4*c*d;   cx2=gam+(a*a+b*b- 2 *(a*c+b*d)−c*c−d*d)*2*e;   cy2=2*(c*c+d*d);   }
 
 v 1 c=cx 1+((( b+bpd )*( b+bpd )−( a+apc )*( a+apc ))* ax 1+2*( b+bpd )*( a+apc )* bx 1)/(( b+bpd )*( b+bpd )+( a+apc )*( a+apc ));
 
 v 1 t=cy 1+((( b+bpd )*( b+bpd )−( a+apc )*( a+apc ))* ay 1+2 *by 1*( b+bpd )*( a+apc ))/(( b+bpd )*( b+bpd )+( a+apc )*( a+apc ));
 
 v 1 u= 8./(( b+bpd )*( b+bpd )+( a+apc )*( a+apc ));
 
 v 2 c=cx 2+((( d+bpd )*( d+bpd )−( c+apc )*( c+apc ))* ax 2+2*( d+bpd )*( c+apc )* bx 2)/(( d+bpd )*( d+bpd )+( c+apc )*( c+apc ));
 
 v 2 u=cy 2+((( d+bpd )*( d+bpd )−( c+apc )*( c+apc ))* ay 2+2*( d+bpd )*( c+apc )* by 2)/(( d+bpd )*( d+bpd )+( c+apc )*( c+apc ));
 
 v 2 t=− 8./(( d+bpd )*( d+bpd )+( c+apc )*( c+apc ));
   
               

   It is easy to minimize [f(θ 1 )−V 1 (θ 1 )] 2 +[(f(θ 2 )−V 2 (θ 2 )] 2  as a function of e UA , e TA  subject to the given constraint, and this procedure provides a suitable regularization. 
   Weighted least-squares fits or other statistical treatments using input data values at further generations allow alternative regularizations. 
   Two other simple regularizations which have also been useful are: to require that e UA =0 if c≧a and e TA =0 if a&gt;c, or, to require that e UA /e TA =−[a(a+c)+b(b+d)]/[c(a+c)+d(b+d)]; the latter regularization is related to imposing differentiability of the approximation at θ 0 . 
   The final technical point involves the stopping criteria and terminal processing for the cascade of arrow-structures. The basic stopping parameter is NVAN, where a branch of the cascade terminates whenever there have been NVAN consecutive generations of offspring whose contributions to all coefficients c n  in the bandwidth N have been of magnitude at most EPS. There are further parameters governing stopping criteria which may be introduced depending upon the scale and resolution of features in the input data, including a minimum or maximum number of generations, the size of the angle subtended by the chord of a terminal arrow-structure, and so on. 
   Another useful stopping criterion is to require that |e A | ||{tilde over (Θ)} A || be negligible for several generations, where ||{tilde over (Θ)} A || denotes the L 2 -norm of {tilde over (Θ)} A  for which there is the a priori estimate ||{tilde over (Θ)} A ||≦10|ac+bd| −5/4 ; that is, one terminates the cascade when NVAN consecutive generations of coefficients e A  have satisfied the condition that 
   
     
       
         
           
              
             
               ⅇ 
               A 
             
              
           
           &lt; 
           
             
               1 
               10 
             
             ⁢ 
             EPS 
             ⁢ 
             
               
                 
                    
                   
                     ac 
                     + 
                     bd 
                   
                    
                 
                 
                   5 
                   ⁢ 
                   
                     / 
                   
                   ⁢ 
                   4 
                 
               
               . 
             
           
         
       
     
   
   When NVAN generations of offspring contribute negligibly to the specified bandwidth, the cascade is terminated with those offspring of greatest generation. Suppose that A labels the arrow of such a terminal offspring, adopt the notation in  FIG. 4 , and let J  ⊂ C denote the circular arc with endpoints 
               b   +   ia       b   -   ia       ,       d   +   ic       d   -   ic             
which contains none of the points −1, −i,+1 εC. The final update τ i =alpi cos θ+beti sin θ+gami, for i=1, 2, of the running trigonometric function on J in accordance with  FIGS. 3   a – 3   e  is prescribed in pseudo-code with notation as before as follows:
         if(a&gt;c){
           alp1=alp+e*2*(a*(a+c)+d*(d−b)−b*(b+d)−c*(c−a));   bet1=bet+e*4*(c*(d−b)−a*(d+b));   gam1=gam+e*2*(a*(a+c)+c*(a−c)+b*(b+d)−d*(d−b));   alp2=alp+e*4*(d−c)*(d+c);   bet2=bet+e*8*c*d;   gam2=gam−e*4*(c*c+d*d);   
           else{
           alp1=alp+e*4*(a−b)*(a+b);   bet1=bet−e*8*a*b;   gam1=gam+e*4*(a*a+b*b);   alp2=alp+e*2*(a*(a−c)+b*(d−b)−c*(c+a)+d*(b+d));   bet2=bet+e*4*(a*(d−b)+c*(b+d));   gam2=gam+e*2*(a*(a−c)−c*(a+c)−b*(d−b)−d*(b+d));   }   
               
   Now serially letting τ denote the trigonometric functions τ 1  and τ 2 , again adopt the notation of  FIG. 4 , where A labels the arrow corresponding to τ. The updated τ is compared with another trigonometric function σ defined by extrapolation which is uniquely determined by demanding that it agree with f at the three angles comprising the next two generations, θ=θ 0 , θ 1 , θ 2  in the notation of  FIG. 4 . The Fourier coefficients of the piecewise trigonometric function which takes values σ(θ)−τ(θ) on the circular arc J and value zero otherwise are easily computed using standard formulas and added to those of the ongoing approximation. 
   Other algebraic or statistical samplings of higher generation offspring allow alternative final processings. 
   For instance, one might save computational expense and simply terminate the cascade with no final processing at all. 
   Furthermore, the terminal arrow-structures could be stored for restart or iterative refinement capabilities. 
   One might alternatively record in an arrow-structure different transforms of the trigonometric function defined by α, β, γ. For instance, it is useful to take advantage of the renormalization property of wavelets and change these coefficients by transforming the vector field 
             [       α   ⁢           ⁢   cos   ⁢           ⁢   θ     +     β   ⁢           ⁢   sin     +   γ     ]     ⁢     ∂     ∂   θ             
by the change of coordinates M A   −1  This technique avoids the necessity of calculating certain large integers attendant to the calculation of wavelet coefficients as will be illustrated later.
 
   One favorable aspect of the method is its advantageous mix of floating-point and integer operation types. Moreover, except for the coefficients c 0 , c ±1 , the implementation of the algorithm is purely algebraic, that is, requires only addition and multiplication. Furthermore, by its very nature as a cascade, the algorithm is amenable to parallelization and efficient hardware implementation. 
   This completes the description of the implementation of the method of calculating Fourier coefficients using arithmetic wavelets. 
   Several points will next be addressed which are special to the implementation of the methods using modular wavelets. Again there is a basic Step 1, the calculation of the modular wavelet transform where the input function is approximated as f(θ)≈Σ A g A ψ A (θ), and a basic Step 2, substitution of known expressions for the Fourier coefficients of the modular wavelets; these two steps are again conveniently merged into a binary cascade of arrow-structures in practice. 
   To elucidate Step 1 for modular wavelets, refer again to  FIG. 4  for the notation near the arithmetic arrow labeled by the matrix A. The single value of the input function f (θ 0 ) together with the ongoing calculation of the updated trigonometric function α cos θ+β sin θ+γ in the arrow-structure this time uniquely determines the modular wavelet coefficient 
             g   A     =         f   ⁡     (     θ   0     )       -     (       α   ⁢           ⁢   cos   ⁢           ⁢     θ   0       +     β   ⁢           ⁢   sin   ⁢           ⁢     θ   0       +   γ     )           ψ   A     ⁡     (     θ   0     )               
since ψ B (θ 0 )=0 for every labeling matrix B of generation greater than A; there is thus no need for regularization with modular wavelets.
 
   As to Step 2, recall that a basis of modular wavelets was given before by a collection ψ B (θ) of wavelets where A is the label on an arithmetic arrow and either B=A or B=SA. In each case, one can calculate that ψ B (θ) has Fourier expansion 
                 ψ   B     ⁡     (   θ   )       ~     d   0   B       +       d   1   B     ⁢     ⅇ   iθ       +       d     -   1     B     ⁢     ⅇ     -   iθ         +       i     2   ⁢   π       ⁢     Σ          n        &gt;   1       ⁢         ⅇ     in   ⁢           ⁢   θ           n   3     -   n       ⁡     [       x   n   B     +     n   ⁢           ⁢     y   n   B       +       n   2     ⁢           ⁢     z   n   B         ]       ⁢              
where
 
                   x   n   B     =       ⁢     {               2   ⁢       (       c   2     +     d   2       )     ⁡     [         (       d   -   ic       d   +   ic       )     n     -       (       b   -   ia       b   +   ia       )     n       ]         ;           ⁢       if   ⁢           ⁢   B     =   A       ,                   2   ⁢       (       a   2     +     b   2       )     ⁡     [         (       b   -   ia       b   +   ia       )     n     -       (       d   -   ic       d   +   ic       )     n       ]         ;           ⁢       if   ⁢           ⁢   B     =   SA       ,                           y   n   B     =       ⁢     {                 -   4     ⁢   i   ⁢       (     ac   +   bd     )         a   2     +     b   2         ⁢       (       b   -   ia       b   +   ia       )     n       ;           ⁢       if   ⁢           ⁢   B     =   A       ,                   4   ⁢   i   ⁢       (     ac   +   bd     )         c   2     +     d   2         ⁢       (       d   -   ic       d   +   ic       )     n       ;           ⁢       if   ⁢           ⁢   B     =   SA       ,                           y   n   B     =       ⁢     {                 4       a   2     +     b   2         ⁢       (       b   -   ia       b   +   ia       )     n       ;           ⁢       if   ⁢           ⁢   B     =   A       ,                     4       c   2     +     d   2         ⁢       (       d   -   ic       d   +   ic       )     n       ;           ⁢       if   ⁢           ⁢   B     =   SA       ,                         
and
 
   
     
       
         
           
             2 
             ⁢ 
             
               πd 
               0 
               B 
             
           
           = 
           
             { 
             
               
                 
                   
                     
                       
                         
                           
                             
                               4 
                               ⁢ 
                               
                                 
                                   ac 
                                   + 
                                   bd 
                                 
                                 
                                   
                                     a 
                                     2 
                                   
                                   + 
                                   
                                     b 
                                     2 
                                   
                                 
                               
                             
                             + 
                             
                               2 
                               ⁢ 
                               
                                 
                                   ( 
                                   
                                     
                                       c 
                                       2 
                                     
                                     + 
                                     
                                       d 
                                       2 
                                     
                                   
                                   ) 
                                 
                                 ⁡ 
                                 
                                   [ 
                                   
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ab 
                                         
                                         
                                           
                                             b 
                                             2 
                                           
                                           - 
                                           
                                             a 
                                             2 
                                           
                                         
                                       
                                     
                                     - 
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ⁢ 
                                           cd 
                                         
                                         
                                           
                                             d 
                                             2 
                                           
                                           - 
                                           
                                             c 
                                             2 
                                           
                                         
                                       
                                     
                                   
                                   ] 
                                 
                               
                             
                           
                           ; 
                           
                               
                           
                           ⁢ 
                           
                             
                               if 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               B 
                             
                             = 
                             A 
                           
                         
                         , 
                       
                     
                   
                   
                     
                       
                         
                           
                             
                               
                                 - 
                                 4 
                               
                               ⁢ 
                               
                                 
                                   ac 
                                   + 
                                   bd 
                                 
                                 
                                   
                                     c 
                                     2 
                                   
                                   + 
                                   
                                     d 
                                     2 
                                   
                                 
                               
                             
                             - 
                             
                               2 
                               ⁢ 
                               
                                 
                                   ( 
                                   
                                     
                                       a 
                                       2 
                                     
                                     + 
                                     
                                       b 
                                       2 
                                     
                                   
                                   ) 
                                 
                                 ⁡ 
                                 
                                   [ 
                                   
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ab 
                                         
                                         
                                           
                                             b 
                                             2 
                                           
                                           - 
                                           
                                             a 
                                             2 
                                           
                                         
                                       
                                     
                                     - 
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ⁢ 
                                           cd 
                                         
                                         
                                           
                                             d 
                                             2 
                                           
                                           - 
                                           
                                             c 
                                             2 
                                           
                                         
                                       
                                     
                                   
                                   ] 
                                 
                               
                             
                           
                           ; 
                           
                               
                           
                           ⁢ 
                           
                             
                               if 
                               ⁢ 
                               
                                   
                               
                               ⁢ 
                               B 
                             
                             = 
                             SA 
                           
                         
                         , 
                       
                     
                   
                 
                 ⁢ 
                 
                   
 
                 
                 ⁢ 
                 2 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 π 
                 ⁢ 
                 
                     
                 
                 ⁢ 
                 
                   d 
                   
                     - 
                     1 
                   
                   
                     - 
                     B 
                   
                 
               
               = 
               
                 
                   2 
                   ⁢ 
                   
                     πd 
                     0 
                     B 
                   
                 
                 = 
                 
                   { 
                   
                     
                       
                         
                           
                             
                               
                                 
                                   - 
                                   2 
                                 
                                 ⁢ 
                                 
                                   
                                     ac 
                                     + 
                                     bd 
                                     + 
                                     
                                       2 
                                       ⁢ 
                                       i 
                                     
                                   
                                   
                                     
                                       ( 
                                       
                                         b 
                                         + 
                                         ia 
                                       
                                       ) 
                                     
                                     2 
                                   
                                 
                               
                               + 
                               
                                 
                                   
                                     ( 
                                     
                                       c 
                                       + 
                                       id 
                                     
                                     ) 
                                   
                                   2 
                                 
                                 ⁡ 
                                 
                                   [ 
                                   
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ab 
                                         
                                         
                                           
                                             b 
                                             2 
                                           
                                           - 
                                           
                                             a 
                                             2 
                                           
                                         
                                       
                                     
                                     - 
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ⁢ 
                                           cd 
                                         
                                         
                                           
                                             d 
                                             2 
                                           
                                           - 
                                           
                                             c 
                                             2 
                                           
                                         
                                       
                                     
                                   
                                   ] 
                                 
                               
                             
                             ; 
                             
                                 
                             
                             ⁢ 
                             
                               
                                 if 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 B 
                               
                               = 
                               A 
                             
                           
                           , 
                         
                       
                     
                     
                       
                         
                           
                             
                               
                                 2 
                                 ⁢ 
                                 
                                   
                                     ac 
                                     + 
                                     bd 
                                     - 
                                     
                                       2 
                                       ⁢ 
                                       i 
                                     
                                   
                                   
                                     
                                       ( 
                                       
                                         d 
                                         + 
                                         ia 
                                       
                                       ) 
                                     
                                     2 
                                   
                                 
                               
                               + 
                               
                                 
                                   
                                     ( 
                                     
                                       a 
                                       + 
                                       ib 
                                     
                                     ) 
                                   
                                   2 
                                 
                                 ⁡ 
                                 
                                   [ 
                                   
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ab 
                                         
                                         
                                           
                                             b 
                                             2 
                                           
                                           - 
                                           
                                             a 
                                             2 
                                           
                                         
                                       
                                     
                                     - 
                                     
                                       
                                         tan 
                                         
                                           - 
                                           1 
                                         
                                       
                                       ⁢ 
                                       
                                         
                                           2 
                                           ⁢ 
                                           cd 
                                         
                                         
                                           
                                             d 
                                             2 
                                           
                                           - 
                                           
                                             c 
                                             2 
                                           
                                         
                                       
                                     
                                   
                                   ] 
                                 
                               
                             
                             ; 
                             
                                 
                             
                             ⁢ 
                             
                               
                                 if 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 B 
                               
                               = 
                               SA 
                             
                           
                           , 
                         
                       
                     
                   
                   ⁢ 
                   
                     
 
                   
                 
               
             
           
         
       
     
   
   Thus, the method of calculating Fourier transforms using modular wavelets is easily derived from the method using arithmetic wavelets. In fact, it is a simple matter to incorporate the two minor modifications just described and alter the included source code employing arithmetic wavelets to produce source code employing modular wavelets. 
   In the same way for fan wavelets, there is again a Step 1 and Step 2, which are merged into a binary cascade of arrow-structures. As for arithmetic wavelets, Step 1 for fan wavelets again requires a regularization scheme. As to Step 2, the formulas for Fourier coefficients of fan wavelets can be derived from those given before for modular wavelets using the identity φ A (θ)=ψ A (θ)−ψ UA (θ) mentioned before. Again, the included source code is easily modified to employ fan wavelets. 
   Flow Charts for the Fourier Transform 
   Flow charts for various procedures used in the calculation of Fourier transforms are presented in  FIGS. 5–8 . For definiteness, the flow charts and source code refer to arithmetic wavelets without renormalization, but the renormalizing source code will also be included for completeness. For purposes of brevity in these flow charts, the arrow-structures defined before are referred to in these figures simply as “arrows”. 
   In  FIG. 5  is presented a flow chart for the main driving routine. The input data is normalized as indicated in program segment  1 . There are separate recursions established in program segments  2  and  3  for the top and bottom of the circle respectively. 
   Each recursion is established with a call to the subroutine gener, which then calls itself in turn. The Fourier coefficients are stored internally with an overall suppressed factor of π, and output data normalization of multiplying by π is accomplished in program segment  4 . Output Fourier coefficients are finally displayed before exiting in program segment  5 . Program segments  2  and  3  are entirely independent and could be performed in parallel; more generally, each of program segments  2  and  3  could be decomposed further into multiple parallel procedures. 
   A flow chart for the main recursive routine gener is given in  FIG. 6 . The procedure starts with a test in program segment  6  to determine if:
         the argument envy &gt;=NVAN, in which case there have been NVAN consecutive generations of negligible contributions, and   the argument generation &gt;=MING, in which case there have been a required minimum number of iterations in the recursion.       

   If both of these inequalities hold, then the procedure passes to program segment  15 , where the cascade is terminated and the output data corrected with a call to the subroutine prune. 
   In the contrary case that the recursion should continue, the procedure passes to program segment  7 , where the descendant arrows in the cascade are determined using the least-squares fit to the next generation of data as described before to compute the regularized wavelet coefficients of the descendants. These are combined with integer calculations to update the lagged trigonometric functions. The procedure then passes to program segment  8 , where the ongoing approximations to Fourier coefficients are updated to include contributions from the two descendant arrows with a call of the subroutine charles for each descendant. The procedure continues with a test in program segment  9 . If the contribution calculated in the subroutine charles for either descendant to any Fourier coefficient in the bandwidth was non-negligible, then the recursive argument envy is set to zero in program segment  10 . In the contrary case that both contributions to all Fourier coefficients in the bandwidth were negligible, the control parameter envy is increased by one in program segment  13 . 
   In any case, the procedure passes to program segment  11 , where there is a test on the number of generations. In case too many iterations of the recursion have occurred, it is terminated in program segment  12 , and suitable warning of non-convergence of the method is written to the output. In the contrary case that the maximum number of generations has not been reached, program segment  14  establishes the recursion by calling gener once for each of the descendant arrows with the updated control parameter envy and an incremented generation. 
   In  FIG. 7  is presented a flow chart for the subroutine charles. Calling the subroutine charles has the effect of updating the ongoing approximations to the Fourier coefficients for a single argument arrow and returning a flag which keeps track of whether any such contribution has been non-negligible. The flag is cleared in program segment  16 , and several preliminary calculations are accomplished in program segment  17 . The procedure passes to program segment  18 , where it is determined whether to calculate the 0,+1, −1 Fourier coefficients. If these are to be calculated, then the procedure passes to program segment  19 , which calls a subroutine to update these three Fourier coefficients. Program segments  20  and  21  set the flag as required depending upon whether these three contributions are non-negligible. 
   In any case, the procedure passes to program segment  22 . If the loop over the bandwidth is complete, then all Fourier coefficients have been updated, so the subroutine charles returns the flag in program segment  23 . In the contrary case, the current Fourier coefficient is updated in program segment  24 . The flag is set as required depending on whether the current contribution was non-negligible in program segments  25  and  26 . The iteration over bandwidth is established by the update in program segment  27  and the return to program segment  22 . 
   In  FIG. 8  is presented a flow chart for the subroutine prune, which modifies the array of Fourier coefficients when terminating the cascade. The final update of lagged trigonometric functions to produce τ 1 , τ 2  is performed in program segment  28 . There is one such function for each possible descendant of the argument arrow. The procedure passes to program segment  29 , where further input data is sampled in order to compute two trigonometric extrapolations σ 1 , σ 2 , one such extrapolation for each possible descendant of the argument arrow. Each function σ i −τ i , for i=1, 2, is truncated as described before, and the Fourier coefficients of the truncated functions are added to the ongoing approximations of Fourier coefficients in program segment  30 . Program segments  31  and  32  implement the calculation of 0,+1,−1 Fourier coefficients if desired, and the subroutine prune is terminated with the return in program segment  33 . 
   The Inverse Fourier Transform 
   Included in the section entitled “Source Codes” is an implementation in the computer language C of a preferred embodiment of the method described in this section employing arithmetic wavelets. 
   Since the method for calculating the inverse Fourier transform is similar in spirit and execution to that for the Fourier transform described in detail before, it need only be briefly discussed. The input data includes the specification of a collection of Fourier coefficients c n  in a given bandwidth N. 
   There are again two main steps in the calculation:
         Step 1: Calculate arithmetic wavelet coefficients e A  from the given Fourier coefficients c n .   Step 2: Use the wavelet coefficients from Step 1 and the reconstruction algorithm to output values of the function Σ A e A {tilde over (Θ)} A (θ) at the Farey quadrature points on the circle.       

   For Step 1, there is again an explicit formula from previous theoretical work. Deep mathematical results prove that for n≠0,±1, 
                   ⅇ   inθ     =       cos   ⁢           ⁢   nθ     +     i   ⁢           ⁢   sin   ⁢           ⁢   nθ                     =       -     [       c   o   n     +       c   1   n     ⁢     ⅇ   iθ       +       c     -   1     n     ⁢     ⅇ     -   iθ           ]       +       i   4     ⁢     Σ   A     ⁢     {       n   ⁡     (       ξ   n     +     η   n       )       +         η   +   ξ       η   -   ξ       ⁢     (       ξ   n     -     η   n       )         }     ⁢         ϑ   _     A     ⁡     (   θ   )             ,               
where the sum is over all arithmetic arrows, the underlying chord of which has endpoints ξ, η ε C, and
 
   
     
       
         
           
             c 
             0 
             n 
           
           = 
           
             { 
             
               
                 
                   
                     
                       
                         
                           - 
                           1 
                         
                         , 
                       
                     
                     
                       
                         
                           n 
                           ≡ 
                           
                             0 
                             ⁢ 
                             
                               ( 
                               4 
                               ) 
                             
                           
                         
                         ; 
                       
                     
                   
                   
                     
                       
                         0 
                         , 
                       
                     
                     
                       
                         
                           n 
                           ≡ 
                           
                             1 
                             ⁢ 
                             
                               ( 
                               4 
                               ) 
                             
                           
                         
                         ; 
                       
                     
                   
                   
                     
                       
                         
                           - 
                           1 
                         
                         , 
                       
                     
                     
                       
                         
                           n 
                           ≡ 
                           
                             2 
                             ⁢ 
                             
                               ( 
                               4 
                               ) 
                             
                           
                         
                         ; 
                       
                     
                   
                   
                     
                       
                         0 
                         , 
                       
                     
                     
                       
                         
                           n 
                           ≡ 
                           
                             3 
                             ⁢ 
                             
                               ( 
                               4 
                               ) 
                             
                           
                         
                         ; 
                       
                     
                   
                 
                 ⁢ 
                 
                   c 
                   1 
                   n 
                 
               
               = 
               
                 { 
                 
                   
                     
                       
                         
                           
                             0 
                             , 
                           
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 0 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                       
                         
                           
                             
                               - 
                               1 
                             
                             , 
                           
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 1 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                       
                         
                           
                             i 
                             , 
                           
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 2 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                       
                         
                           0 
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 3 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                     
                     ⁢ 
                     
                       c 
                       
                         - 
                         1 
                       
                       n 
                     
                   
                   = 
                   
                     { 
                     
                       
                         
                           
                             0 
                             , 
                           
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 0 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                       
                         
                           
                             0 
                             , 
                           
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 1 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                       
                         
                           
                             i 
                             , 
                           
                         
                         
                           
                             
                               n 
                               ≡ 
                               
                                 2 
                                 ⁢ 
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                               
                             
                             ; 
                           
                         
                       
                       
                         
                           
                             
                               - 
                               1 
                             
                             , 
                           
                         
                         
                           
                             n 
                             ≡ 
                             
                               3 
                               ⁢ 
                               
                                 
                                   ( 
                                   4 
                                   ) 
                                 
                                 . 
                               
                             
                           
                         
                       
                     
                   
                 
               
             
           
         
       
     
   
   Substituting this expression for e in θ  into the given Fourier expansion f(θ)˜Σ n c n e inθ  gives 
               f   ⁡     (   θ   )       ≈       c   0   ′     +       c   1   ′     ⁢     ⅇ     ⅈ   ⁢           ⁢   θ         +       c     -   1     ′     ⁢     ⅇ       -   ⅈ     ⁢           ⁢   θ         +       ∑   A     ⁢           ⁢       e   A     ⁢         ϑ   _     A     ⁡     (   θ   )               ,         
where
 
               e   A     =       i   4     ⁢       ∑       n   ≠   0     ,     ±   1         ⁢           ⁢       c   n     ⁢     {       n   ⁡     (       ξ   n     +     η   n       )       +         η   +   ξ       η   -   ξ       ⁢     (       ξ   n     -     η   n       )         }             ,         
and
 
   
     
       
         
           
             
               c 
               l 
               ′ 
             
             = 
             
               
                 c 
                 l 
               
               - 
               
                 
                   ∑ 
                   
                     
                       n 
                       ≠ 
                       0 
                     
                     , 
                     
                       ± 
                       1 
                     
                   
                 
                 ⁢ 
                 
                   
                     c 
                     n 
                   
                   ⁢ 
                   
                     c 
                     l 
                     n 
                   
                 
               
             
           
           , 
           
             
               for 
               ⁢ 
               
                 
                     
                 
                 ⁢ 
                 
                     
                 
               
               ⁢ 
               l 
             
             = 
             0 
           
           , 
           
             ± 
             1. 
           
         
       
     
   
   This expression f(θ)≈C′ 0 +c′ 1 e iθ +c′ −1 e −iθ +Σ A e A {tilde over (Θ)} A (θ) of f(θ) constitutes Step 1 in the calculation of inverse Fourier transform. 
   In fact, the calculation of wavelet coefficients e A  in Step 1 can be implemented using mostly integer operations to improve run-time dramatically. To see this, notice that the formulas 
             ξ   =       b   +   ia       b   -   ia         ,     η   =       ⅆ     +   ic         ⅆ     -   ic                 
for the endpoints of the chord underlying the arrow labeled by the matrix
 
           A   =     (         a       b           c       d         )           
may be substituted into the expression for e A  to yield
 
               e   A     =       i   4     ⁢       ∑       n   ≠   0     ,     ±   1         ⁢           ⁢       c   n     ⁢     e   A   n             ,         
where
 
   
     
       
         
           
             
               
                 
                   e 
                   A 
                   n 
                 
                 = 
                   
                 ⁢ 
                 
                   
                     
                       
                         [ 
                         
                           
                             ( 
                             
                               bd 
                               - 
                               
                                 a 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 c 
                               
                             
                             ) 
                           
                           + 
                           
                             i 
                             ⁡ 
                             
                               ( 
                               
                                 ad 
                                 + 
                                 
                                   d 
                                   ⁢ 
                                   
                                       
                                   
                                   ⁢ 
                                   c 
                                 
                               
                               ) 
                             
                           
                         
                         ] 
                       
                       n 
                     
                     
                       
                         
                           ( 
                           
                             
                               a 
                               2 
                             
                             + 
                             
                               b 
                               2 
                             
                           
                           ) 
                         
                         n 
                       
                       ⁢ 
                       
                         
                           ( 
                           
                             
                               c 
                               2 
                             
                             + 
                             
                               d 
                               2 
                             
                           
                           ) 
                         
                         n 
                       
                     
                   
                   ⨯ 
                 
               
             
           
           
             
               
                   
                 ⁢ 
                 
                   [ 
                   
                     
                       n 
                       ⁢ 
                       
                         { 
                         
                           
                             
                               ( 
                               
                                 bd 
                                 + 
                                 
                                   a 
                                   ⁢ 
                                   
                                       
                                   
                                   ⁢ 
                                   c 
                                 
                                 + 
                                 i 
                               
                               ) 
                             
                             n 
                           
                           + 
                           
                             
                               ( 
                               
                                 bd 
                                 + 
                                 
                                   a 
                                   ⁢ 
                                   
                                       
                                   
                                   ⁢ 
                                   c 
                                 
                                 - 
                                 i 
                               
                               ) 
                             
                             n 
                           
                         
                         } 
                       
                     
                     + 
                   
                 
               
             
           
           
             
               
                 
                     
                   ⁢ 
                   
                     i 
                     ⁢ 
                     
                       ( 
                       
                         bd 
                         + 
                         
                           a 
                           ⁢ 
                           
                               
                           
                           ⁢ 
                           c 
                         
                       
                       ) 
                     
                     ⁢ 
                     
                       { 
                       
                         
                           
                             ( 
                             
                               bd 
                               + 
                               
                                 a 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 c 
                               
                               + 
                               i 
                             
                             ) 
                           
                           n 
                         
                         - 
                         
                           
                             ( 
                             
                               bd 
                               + 
                               
                                 a 
                                 ⁢ 
                                 
                                     
                                 
                                 ⁢ 
                                 c 
                               
                               - 
                               i 
                             
                             ) 
                           
                           n 
                         
                       
                       } 
                     
                   
                   ] 
                 
                 . 
               
             
           
         
       
     
   
   In the obvious implementation of this formula to calculate e A   n  using integer operations, the intermediary integer expressions grow too large to be practical for n large if the arrow corresponding to A is of large generation. 
   This difficulty is overcome by wavelet renormalization, where these attendant large integer calculations are obviated entirely as is illustrated in the included source code. 
   Step 2 in the method for calculating inverse Fourier transforms depends upon the reconstruction algorithm to output function values on the circle taken by the linear combination f(θ)≈c′ 0 +c′ 1 e iθ +c′ −1 e −iθ +σ A e A {tilde over (Θ)} A (θ). The finiteness property of the reconstruction algorithm allows the exact calculation of these function values at the sample points Q  ⊂ C in their ordering determined by the Farey quadrature. The two steps are again conveniently merged into a single binary cascade as follows. 
   There is only one control parameter, which is called SCALE, where the method is required to determine at least one output value in each circular arc subtending an angle SCALE. Thus, as SCALE is decreased the grid of output values on the circle is refined. A binary cascade is established using arrow-structures which is similar to that for the Fourier transform before. However, the wavelet coefficients are given in this case in closed form by the formula for e A  (so no least-squares fit is required). Because of the finiteness property of the reconstruction algorithm, exact output values are determined at each stage of the recursion. The cascade is terminated with an arrow whenever the chords underlying both descendant arrows subtend angles less than SCALE. Output data can be written to an array either when calculated to store data in the ordering of the Farey quadrature or when terminating the cascade to store data in the standard ordering on the circle. Furthermore, the terminal arrow-structures could be stored for restart or iterative refinement capabilities. 
   This completes the description of the implementation of the method of calculating the inverse Fourier transform using arithmetic wavelets. 
   Several points will next be addressed which allow the extension of the methods to modular and fan wavelets. Again there is a basic Step 1, the calculation of wavelet coefficients from Fourier coefficients, and a Step 2, the reconstruction algorithm; in each case of fan or modular wavelets, these two steps are again conveniently merged into a binary cascade of arrow-structures in practice. The finiteness condition on fan or modular wavelets mentioned before renders Step 2 entirely analogous to that for arithmetic wavelets. As to Step 1, simply substitute the identities {tilde over (Θ)} A =φ A −φ UA =ψ UA −2ψ A +ψ U     −1     A  described before into the expression above for e in θ in terms of arithmetic wavelets to immediately derive corresponding expressions in terms of fan and modular wavelets. 
   Thus, the method of calculating inverse Fourier transforms using fan or modular wavelets is easily derived from the method using arithmetic wavelets. In fact, it is a simple matter to incorporate the minor modifications just described and alter the included source code employing arithmetic wavelets to produce source code employing fan or modular wavelets. 
   Flow Charts for the Inverse Fourier Transform 
   Flow charts for various procedures used in the calculation of inverse Fourier transforms are presented in  FIGS. 9–10 . For definiteness, the flow charts and source code refer to arithmetic wavelets without renormalization, but the re-normalizing source code will also be included for completeness. For purposes of brevity in these flow charts, the arrow-structures defined before are referred to in these figures simply as “arrows”. 
   In  FIG. 9  is given a flow chart for the main driving routine. Modified Fourier coefficients c′ 0 , c′ 1 , c′ −1  are computed in program segment  34 . The formula given in Step 1 for the inverse Fourier transform is applied in program segment  35  to calculate the arithmetic wavelet coefficients in terms of Fourier coefficients for a particular family of nine arrows. These nine arithmetic wavelet coefficients are required to initialize the trigonometric functions for recursions established in program segment  36  with calls to the recursive subroutine gener. Recursions with initial conditions corresponding to A=U,T,T −2 , U −1 ,T −1 ,T −1 U −1 , U −2  are undertaken in program segment  36 . These recursions, as well as further possible subrecursions derived from them, are independent and may be undertaken in parallel. This elaborate driving routine is convenient because e inθ  is expressed in Step 1 of the inverse Fourier transform method in terms of the normalized arithmetic wavelets {tilde over (Θ)} A  which differ from the arithmetic wavelets {tilde over (Θ)} A  themselves only for A=U −1 , T −1 . 
   The procedure passes to program segment  37  to perform an overall correction of the function values using the modified Fourier coefficients c′ 0 , c′ 1 , c′ −1 . Output data is displayed and the procedure terminated in program segment  38 . 
   In  FIG. 10  is given a flow chart for the main recursive routine gener. In the cascade, the two descendant arrows of the argument arrow are generated in program segment  39  employing Step 1 of the inverse Fourier transform method to calculate the wavelet coefficients of the descendants. These expressions are then used to update the lagged trigonometric functions in program segment  39 . A test is performed in program segment  40  to determine if the chord underlying each descendant arrow subtends a sufficiently small angle, as estimated by the comparison of an integer quantity with SCAT; the relation with the control parameter SCALE discussed before is given by SCAT=[exp sinh −1 (1/SCALE)] 2 . In case one of the chords subtends too large an angle, the procedure passes to program segment  41 . The recursion is established in program segment  41  with two calls to gener, where the arguments are given by the two current descendant arrows. In the contrary case, the procedure performs the final update of the lagged trigonometric functions in program segment  42 , then stuffs the output array with the new function values in program segment  43 , and finally returns in program segment  44 . 
   Data Compression 
   As with any method for data compression based on transform coding, five basic manipulation are required, namely: 
   wavelet filtering, 
   quantization, 
   storage and retrieval or transmission 
   de-quantization, and 
   reconstruction. 
   The wavelet filter has already been fully disclosed as Step 1 for the calculation of the Fourier transform, and the wavelet inverse filter or reconstruction algorithm has likewise already been described as Step 2 for the calculation of the inverse Fourier transform. Application-specific quantization is done according to psychovisual or psychoacoustic thresholds. Quantization and storage are furthermore merged with wavelet filtering into a single binary cascade as before, and retrieval or transmission are likewise merged with reconstruction into another single binary cascade. The reconstruction algorithm is exact. Furthermore, source code for it may be transmitted along with compressed data since the coding is sufficiently abbreviated and low-level. 
   As is well-known, useful compression by transform coding requires an efficient specification of the basis elements. This is especially advantageous for the new wavelets: a top arrow of generation g labeled by the two-by-two integral matrix A is specified by g bits, namely, by writing A uniquely as the matrix product of factors U or T. For example, the matrix 
           A   =     (         13       9           10       7         )           
factors as
 
               (         13       9           10       7         )     =       (         1       1           0       1         )     ⁢     (         1       0           3       1         )     ⁢     (         1       2           0       1         )     ⁢     (         1       0           1       1         )         ,         
so the coefficient for the wavelet {tilde over (Θ)} A  is coded by the binary sequence TUUUTTU.
 
   The method is also especially well-suited to progressive picture build-up or other iterative refinement as follows. The Farey quadrature determines a linear ordering on the set Q of quadrature points in the circle C as before. The ordered subset Q\{−i, ±1}  ⊂ Q  ⊂ C is put into bijective correspondence with the collection of all arithmetic arrows (where \ 0  denotes the set-theoretic relative complement); as illustrated in  FIGS. 1   a – 1   c , the arithmetic arrow labeled by 
           A   =     (         a       b           c       d         )           
corresponds to the complex number
 
   
     
       
         
           { 
           
               
           
           ⁢ 
           
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             b 
                             + 
                             d 
                           
                           ) 
                         
                         + 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               + 
                               c 
                             
                             ) 
                           
                         
                       
                       
                         
                           ( 
                           
                             b 
                             + 
                             d 
                           
                           ) 
                         
                         - 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               + 
                               c 
                             
                             ) 
                           
                         
                       
                     
                     ⁢ 
                     ε 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     C 
                   
                   , 
                   
                       
                   
                   ⁢ 
                   
                     
                       for 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       a 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       top 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       arrow 
                     
                     ; 
                   
                 
               
             
             
               
                 
                   
                     
                       
                         
                           ( 
                           
                             b 
                             - 
                             d 
                           
                           ) 
                         
                         + 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               - 
                               c 
                             
                             ) 
                           
                         
                       
                       
                         
                           ( 
                           
                             b 
                             - 
                             d 
                           
                           ) 
                         
                         - 
                         
                           i 
                           ⁡ 
                           
                             ( 
                             
                               a 
                               - 
                               c 
                             
                             ) 
                           
                         
                       
                     
                     ⁢ 
                     ε 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     C 
                   
                   , 
                   
                       
                   
                   ⁢ 
                   
                     
                       for 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       a 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       bottom 
                       ⁢ 
                       
                           
                       
                       ⁢ 
                       arrow 
                     
                     ; 
                   
                 
               
             
             
               
                 
                   
                     i 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     ε 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     C 
                   
                   , 
                   
                       
                   
                   ⁢ 
                   
                     for 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     the 
                     ⁢ 
                     
                         
                     
                     ⁢ 
                     
                       doe 
                       . 
                     
                   
                 
               
             
           
           ⁢ 
           
               
           
             
         
       
     
   
   Thus, the ordering from the Farey quadrature on Q\{−i, ±1} determines a corresponding ordering on the set of all arithmetic wavelets. Storage, retrieval, transmission, and reconstruction of wavelet coefficients is accomplished at a specified input or output data resolution in this canonical ordering since energy compacts to the lesser wavelet coefficients. In the case of real-time compression and transmission or other manipulation not requiring retrieval, the method can be further improved by the manipulation of previously computed wavelet coefficients in parallel with the calculation of subsequent ones. 
   Complex and Multi-Dimensional Data 
   There is nothing remarkable about the extension of the invention to complex-valued input data f (θ)=u(θ)+i v(θ), where u and v are real-valued functions on the circle C. Concentrating for definiteness on arithmetic wavelets, one simple approach is to separately and independently transform u and v,
 
u(θ) ≈Σe A {tilde over (Θ)} A (θ) and v(θ)≈Σf A {tilde over (Θ)} A (θ),
 
using the techniques already described in order to calculate
 
f(θ)≈Σ(e A +if A ) {tilde over (Θ)} A (θ).
 
   Another direct approach is to allow complex values for the input function f and solve for complex wavelet coefficients using the same algebraic formulas as before. 
   Turning now to multi-dimensional input/output data, suppose that there are R≧1 input functions each of which has M≧1 independent variables, and define the torus C M  to be the M-fold Cartesian product 
   
     
       
         
           
             C 
             M 
           
           = 
           
             
               
                 C 
                 × 
                 ⋯ 
                 × 
                 C 
               
               
                 ︸ 
                 
                   M 
                   ⁢ 
                   
                       
                   
                   ⁢ 
                   times 
                 
               
             
             . 
           
         
       
     
   
   Coordinates on C M  are given by M-tuples {right arrow over (θ)}=(θ 1 , θ 2 , . . . , θ M ) of angles, and the input data is specified by an R-tuple of multivariable real- or complex-valued functions
 
 F ({right arrow over (θ)})=( f   1  ({right arrow over (θ)}), f   2 ({right arrow over (θ)}), . . . , f   R ({right arrow over (θ)})),
 
Using the bijection described in the previous section on data compression, each quadrature point Z ε Q\{−i, ±1} uniquely determines a corresponding arithmetic wavelet {tilde over (Θ)} Z (θ); by convention, one also defines {tilde over (Θ)} −i (θ)={tilde over (Θ)} ±1 (θ)=1. Concentrating on arithmetic wavelets for definiteness, define the corresponding multiwavelet
 
{tilde over (Θ)} Z ({right arrow over (θ)})={tilde over (Θ)} Z     1   (θ 1 ){tilde over (Θ)} Z     2   (θ 2 ) . . . {tilde over (Θ)} Z     M   (θ M )
 
   As before, the input function F must be normalized. To this end, define a trigonometric monomial to be a product of the form X 1 (θ 1 )X 2 (θ 2 ) . . . X M (θ M ), where each X i (θ) is given by one of X i (θ)=cos  0 , X 1 (θ)=sin  0 , or X 1 (θ)= 1 . The values of F at the points in {−i±1}M uniquely determine coefficients in a linear combination v(θ) of trigonometric monomials so that v({right arrow over (θ)})=F({right arrow over (θ)}) for each point of {−i,  1 }M. Just as in the one-dimensional wavelet filter already discussed, now one must consider the normalization F(θ)=F({right arrow over (θ)})−v({right arrow over (θ)}), so  F  is zero at each point of +I+}M 
   Adopting the Farey quadrature in each factor circle C of the torus C M , there is an induced lexicographic ordering on the set Q M \{−i,±1} M  {tilde over (Θ)}C M  of potential sample points {right arrow over (Z)} ε C M . One separately approximates each coordinate function
 
 f   i ({right arrow over (θ)})≈Σe {right arrow over (Z)}   i {tilde over (Θ)} {right arrow over (Z)} ({right arrow over (θ)}), for i=1, 2, . . . , R,
 
of  F ({right arrow over (θ)}) as a finite linear combination of multiwavelets with application-specific zonal sampling for optimum energy compaction; this calculation may employ least-squares or other regularization in each factor as well as renormalization as for the one-dimensional wavelet filter. The methods are again elegantly implemented in practice as M nested binary cascades. The final processing for the cascades of arrow-structures in the calculation of multi-dimensional Fourier transforms may involve adding suitable linear combinations of trigonometric monomials based on further sampling, or one may simply truncate with no final processing at all, as in the one-dimensional case.
 
   These same remarks apply verbatim to fan and modular wavelets. 
   Mathematical Basis 
   “The decorated Teichmüller space of punctured surfaces”, Communications in Mathematical Physics 13, pp. 299–339 (1987), written by the author of this patent application, began the study of certain abstract geometric coordinates called lambda lengths in the context of hypetbolic geometry on Riemann surfaces. The ideas developed in this and other related papers have found applications in high energy physics. A more recent publication in this series of about 20 papers is entitled “Universal constructions in Teichmüller Theory”, Advances in Mathematics 98, pp. 143–215 (1993). Here it was shown how to generalize lambda lengths to provide coordinates on a certain space of homeomorphisms (i.e. continuous bijections whose inverses are also continuous) of the circle, where there is one generalized lambda length for each arithmetic arrow. In further recent work described in “The Lie algebra of homeomorphisms of the circle”,  Advances in Mathematics  140, pp. 282–322 (1998), written jointly with Feodor Malikov, there is described a representation of the coordinate deformations of these generalized lambda lengths as explicit vector fields on the circle. These vector fields are called “normalized elementary vector fields”, and their study led to other vector fields on the circle called “fans” and “hyperfans”. These three families of vector fields correspond, respectively, to the arithmetic, fan, and modular wavelets described here via the identification of the vector field 
             f   ⁡     (   θ   )       ⁢     ∂     ∂   θ             
with the function f(θ); there was, however, no discussion of wavelets, sampling of data, approximation of functions, or any algorithms in the published literature.
 
   Each arithmetic wavelet is once-continuously differentiable on the circle, compactly supported, and localized in space. Arithmetic wavelets are not compactly supported in frequency, but instead, the frequency profile of an arithmetic wavelet is given algebraically by the formula for c n   A  used in Step 2 in the calculation of Fourier transforms; a non-compactly supported localization in frequency follows directly from this. The asserted formula for c n   A  can be derived without much difficulty but in several cases directly from  FIGS. 3   a – 3   e  integrating twice by parts the usual expression for Fourier coefficients using the fact {tilde over (Θ)} A  is once-continuously differentiable. More difficult to derive is the formula given for the exponential functions e in θ  in terms of arithmetic wavelets which was used in Step 1 of the calculation of inverse Fourier transforms; this subtle computation with lambda lengths is given in “The Lie algebra of homeomorphisms of the circle”. 
   Similar remarks apply to fan and modular wavelets, but fan wavelets are only continuous (they are not differentiable), and modular wavelets are not even continuous. 
   In order to explain the failure of orthonormality of arithmetic wavelets and illuminate the regularization used in the arithmetic wavelet filter, fix some matrix A labeling an arithmetic arrow whose underlying chord has initial point q in the circle C. The sequence U n A of matrices label the arithmetic arrows whose underlying chords also have q as initial point, where n denotes an arbitrary integer. There is one infinite linear dependence 
           0   =       ∑   n     ⁢           ⁢         ϑ   _         U   n     ⁢   A       .             
for each q E Q, and this explains the additive degree of freedom in the calculation of e UA  and e TA  in the wavelet filter which is handled by regularization as was discussed before. This additive degree of freedom is also manifest in the initial specification e I =0 of wavelet coefficient on the doe in the wavelet filter.
 
   In order to better understand the Farey quadrature, it is convenient to transform the disk D to the upper half-plane U={u+iv:v&gt;0} by means of the transform 
   
     
       
         
           K 
           : 
           
             D 
             → 
             U 
           
         
       
     
     
       
         
           z 
           ↦ 
           
             i 
             ⁢ 
             
               
                 
                   z 
                   + 
                   1 
                 
                 
                   z 
                   - 
                   1 
                 
               
               . 
             
           
         
       
     
   
   This function K is a homeomorphism on the interior of D which maps the unit circle C bijectively to the real-axis {u+iv:v=0} together with an additional point ∞ at infinity, where K(−1)=0, K(−i)=1, and K(+ 1 )=∞. Furthermore, as q ε Q varies over all quadrature points, the real number K(q) varies over all rational numbers, where the rational number 
           p   q         
corresponds to the quadrature point
 
               p   -   iq       p   +   iq       ⁢   ε   ⁢           ⁢     Q   .           
In order to illustrate the Farey tesselation itself in U, whenever q 1 , q 2  ε Q are the endpoints of the chord underlying an arithmetic arrow in D, draw the semi-circle in U with real endpoints q 1 , q 2 ; in the degenerate case that one of the quadrature points is infinite, say the point q 2 =00, then draw the vertical ray in U with endpoint q 1 . Applying this procedure to each arithmetic arrow produces the classical model of the Farey tesselation in U that is indicated in  FIG. 11 . This figure illustrates the relationship between the Farey tesselation and the indicated circle packing, where the circle in the figure that is tangent to the real-axis at the rational point p/q has diameter q −2 . For further information on number-theoretic aspects of this classical figure, see, for instance, Ford&#39;s book “Automorphic Functions”, Chelsea (1972).
 
   Source Codes 
   In order to adequately disclose the methods, it is the purpose of this paragraph to include source codes for their implementations in the computer language C. Source code is presented for each of the following two implementations.
         awft is the implementation of a preferred embodiment of the method for computing the Fourier transform of real-valued input data defined on the circle. The algorithm depends upon a bandwidth N, tolerance EPS, generation cut-off NVAN, and minimum generation MING as described before. A further flag SMODE=1 determines that the output data will include the 0,+1,−1 Fourier coefficients, and SMODE=0 otherwise. (The only configuration in either code which requires any library routines is SMODE=1, which requires math.h.)   awift is the implementation of a preferred embodiment of the method for computing the inverse Fourier transform of specified complex-valued Fourier coefficients defined in a specified bandwidth N. The output data is controlled by a single parameter SCAT, which is related to the parameter SCALE discussed before by SCAT=[exp sinh ^(−1)(1/SCALE)] ^2. (SCAT varies inversely with SCALE and may be compared with conveniently derived approximate quantities.)       

   The comparison of the subroutines tgener in awft and in awift illustrates the easy transition between source codes for real and for complex data. The corresponding complex-awft and real-awift are therefore easily derived from the included source codes. 
   Furthermore, the method for compression of one-dimensional input data amounts to the first step of awft, then quantization/de-quantization, then the second step of awift. The included source codes together thus also implement the method for compression of one-dimensional data since source code for it may be extracted from the included source codes. Finally, it is straight-forward to write the further driving routine required for multi-dimensional data compression, so the source codes included with this patent application are sufficient to readily implement the method for multi-dimensional data compression as well. 
   The included implementations have not been optimized. (For instance, straight-forward optimization has improved run-time by as much as 70% over the included awft code; on the other hand, optimization destroys intelligibility of the coding in relation to the underlying algorithm, and this explains the inclusion of unoptimized source code.) Another substantial improvement in run-time over the included source codes can be achieved by factoring so as to replace various manipulations of complex numbers with manipulations of integers as discussed before. 
   Moreover, for clarity, the included source codes do not take advantage of renormalization, but for completeness, to each of awft and awift is appended source code to replace the subroutines tgener and bgener by corresponding subroutines which do employ renormalization.