/***************************************************************************
  **************************************************************************
  
                Spherical Harmonic Transform Kit 2.7
  
  
   Contact: Peter Kostelec
            geelong@cs.dartmouth.edu
  
  
   Copyright 1997-2003  Sean Moore, Dennis Healy,
                        Dan Rockmore, Peter Kostelec
  
  
   Copyright 2004  Peter Kostelec, Dan Rockmore


     SpharmonicKit is free software; you can redistribute it and/or modify
     it under the terms of the GNU General Public License as published by
     the Free Software Foundation; either version 2 of the License, or
     (at your option) any later version.
  
     SpharmonicKit is distributed in the hope that it will be useful,
     but WITHOUT ANY WARRANTY; without even the implied warranty of
     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
     GNU General Public License for more details.
  
     You should have received a copy of the GNU General Public License
     along with this program; if not, write to the Free Software
     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  
  
   Commercial use is absolutely prohibited.
  
   See the accompanying LICENSE file for details.
  
  ************************************************************************
  ************************************************************************/

SpharmonicKit is a collection of C source code that implements
a discrete Legendre transform by a number of different algorithms.
Also provided is code which performs a full spherical harmonic
transform, and hybrid/semi-naive based convolution on the 2-sphere.

While FFT and DCT code is provided, the Kit is also designed to
use a slight variation of the more efficient FFT and DCT routines
found in FFTPACK. And without too much difficulty, the user should
also be able to substitute their own optimized FFT and DCT routines.
The modified version of FFTPACK that SpharmonicKit can use is
available at

 www.cs.dartmouth.edu/~geelong/sphere/modified_fftpack.html

Unless otherwise stated, the programs provided here work through
bandwidths bw = 1024.

Important accompanying documentation that should be read is

 BACKGROUND - background and general discussion of the algorithms
              found in SpharmonicKit; also some implementation
              concerns regarding memory requirements (important!)

 CHANGES - list and details of changes made

 INSTALL - exactly what is included in SpharmonicKit and how
           to compile it

 HOWTO_FFTPACK - where to obtain the original, unmodified version of
                 FFTPACK; how the original source was modified
                 to allow its use in SpharmonicKit; also explains
                 how the user can substitute their own optimized
                 FFT and DCT routines for the ones provided here

It is assumed that the user is familiar with the related work on
these algorithms done by Dennis Healy, Jim Driscoll, Sean Moore,
and Dan Rockmore, all affiliated with Dartmouth College to one extent
or another.  To obtain related papers, contact Peter Kostelec,
Dennis Healy or Dan Rockmore. In particular, we mention

       FFTs for the 2-Sphere - Improvements and Variations

       by D.M. Healy, Jr., D. Rockmore, P. Kostelec and Sean S.B. Moore
       This preprint is available at

       www.cs.dartmouth.edu/~geelong/sphere/

An updated and revised version of this preprint will appear in The
Journal of Fourier Analysis and Applications

This paper is the major reference for this code.

###############################################################
###############################################################
###############################################################

PLEASE NOTE that there is documentation within the source files
themselves, describing how things work. PLEASE LOOK AT IT, 
ESPECIALLY the code related to the HYBRID LEGENDRE TRANSFORM.
The algorithm (and code ?) is on the complicated side of things.
There are a number of settings that the user can change in order
to optimize the algorithm for their platform.


Caveat emptor - this is research code only and has not been hardened.
All the code works quite well on DEC Alpha workstations using OSF1
Versions 3.2 and 4.0. Some code has also been tested and successfully
run on Pentium-based GNU/Linux workstations, SGI workstations using
IRIX 5.3 and IRIX 6.4, Sun workstations using SunOS 4.1.2 1, an HP
Exemplar X-Class running SPP-UX 5.2.1, and even a NeXTstation Color
Turbo running NeXTStep 3.3!


All of the code here is based on code originally written by
Sean Moore, who currently works at Avaya, Inc.

	Dr. Sean Moore
	Chief Architect - Developer Platforms
	Avaya, Inc.
	smoore-at-avaya-dot-com

