**WARNING**: on Darwin the Makefile use the `Accelerate Framework` features which are a bit more effective than OpenBLAS.
* ANN (under test) :
get the code here: `http://www.cs.umd.edu/~mount/ANN`
ANN is a library written in C++ which supports data structures and algorithms for both exact and approximate nearest neighbor searching in arbitrarily high dimensions. It is distributed under the terms of the GNU Lesser Public License. The code require an ANSII C++ and is tested under different platforms. I have build it using g++ compilor on Mac OS X which was not mentionned by the author. ANN is used to perform to find the closest pixel index given the (theta, phi) position of a point.
# Compilation
> edit Makefile and adapat to local platform :
...
...
@@ -51,10 +45,15 @@ ANN is a library written in C++ which supports data structures and algorithms fo
> make MACH=Linux BLAS=1 : on Linux with BLAS ON
> make : (default) on Darwin and use Accelerate Framework
```
The result of "make" is binanry file under ./Objs directory as well as `lagsht.a` library
> make check
runs a computation of the Nodes & Weights for N=1024
and compare to the xxx.txt.TEST files to produce a
Numerical Error estimate.
> make fullcheck
runs a series of `lagsht_testsuite` which activates different parts of the code and shows how-to call this test program.
# Plateform tested
Mac OS X 10.9.5 + gcc 4.8.4
Linux SLC 6.6 + gcc 4.9.1 20140922
...
...
@@ -70,22 +69,28 @@ ANN is a library written in C++ which supports data structures and algorithms fo
0: basic test for numerical application
1: to get the nodes & weights of the generalized Gauss-laguerre function quadrature.
2: to test 1D- Laguerre Transform (Synthesis & Analysis)
3: to test the full 3D Spherical Harmonic Laguerre trabsform (Synthesis & Analysis)
3: to test 2D- pixelization schemes from libsharp
4: to test the full 3D Spherical Harmonic Laguerre trabsform (Synthesis & Analysis)
> <geometry>
Gauss : use the Gauss quadrature by default Ntheta = Lmax and Nphi = 2Lmax - 1
Fejer1: use the Fejer's sum rule n°1 by default Ntheta = 2Lmax-1 and Nphi = 2Lmax-1
Healpix: use the Healpix map with Ntheta giving the Nside parameter.
Gauss : use the Gauss quadrature by default Ntheta = Lmax and
Nphi = 2Lmax - 1.
Fejer1: use the Fejer's sum rule n°1 by default
Ntheta = 2Lmax-1 and Nphi = 2Lmax-1.
Healpix: use the Healpix map with Ntheta giving the Nsides
parameter.
> nphi: libsharp works faster if this number is increased (compared to the minimal number required by the geometry) up to a power of 2 number. Eg. for Lmax = 1024, Nphi_min = 2L-1 = 2047, so Nphi = 2048 will run faster.
# Examples
* ./Objs/lagsht_testsuite -n 1024
gives 2 files `lagNodes-1024-Func.txt` and `lagWeights-1024-Func.txt` with the Nodes & Weights computed
* ./Objs/lagsht_testsuite -t 3 -l 1024 -n 128
* ./Objs/lagsht_testsuite -t 4 -l 1024 -n 128
perform a Laguerre SH transform with the default geometry (Gauss) using Lmax = 1024 and Nmax = 128. The program generates a set of flmn coefficients, then performs a Synthesis followed by an Analysis operations. Finally it computes the maximal absolute and relative errors comparing the original flmn complex values to the results of the Analysis. The timing of the different processes is shown in a sorted tree (here on Darwin Mac Os X with Accelerate Framework).
````
./Objs/lagsht_testsuite -t 3 -l 1024 -n 128
./Objs/lagsht_testsuite -t 4 -l 1024 -n 128
Max Memory size: 8589 MBytes
___________ MultiSphericalLaguerreTransform TEST _____________