Changes since 3.50:
- Configuration mechanism was completely switched to autotools
- major performance increase for spherical harmonic transforms thanks to
discoveries made by Keiichi Ishioka
and personal communication).
- libsharp can now be built with simultaneous support for different x86 CPU
features (SSE2, AVX, AVX2, FMA3, FMA4, AVX512F); the appropriate set of
subroutines is then selected automatically at runtime
- added documentation for the module "needlet_tool".
Changes since 3.40:
- When compiled with a recent gcc (>=5.0) for an x86_64 target, a special
version for AVX-capable CPUs will always be compiled in addition to the more
portable SSE2 version. This means that whenever AVX is available on a CPU,
SHTs will run up to twice as fast than they did before (unless flags like
"-march=native" were used).
- the FFT library used internally by libsharp was substantially redesigned.
Changes since 3.30:
- IMPORTANT: the syntax for specifying ring weights and pixel windows has
changed! This affects the facilities anafast_cxx, smoothing_cxx,
udgrade_harmonic_cxx, alm2map_cxx, mult_alm_cxx
Pixel window files have to be specified (with path) using the parameter
"windowfile"; "ringweights" is used for ring weight files, and "pixelweights"
for pixel weight files.
- full pixel quadrature weights are now supported in map analysis. For maps
containing a signal that is band-limited at lmax=1.5*nside, this allows
recovery of the a_lm at almost machine precision. Pixel weights for a desired
nside can be generated using the "compute_weights" facility, and the resulting
files can be fed into anafast_cxx, smoothing_cxx and udgrade_harmonic_cxx
using the "pixelweights" parameter.
- experimental "needlet_tool" code for needlet analysis
- compilation now always requires that libcfitsio is already installed on the
Changes since 3.20:
- switch from custom xcomplex class to std::complex
- support for multi-order coverages (MOC)
- allow generation of a_lm from 6-component power spectra
- moved from alice2 to alice3, which produces Healpix maps as output.
These can be visualized more flexibly with external tools.
- rangeset class has been redesigned
Changes since v3.11:
- use Kahan summation in some situations to improve numerical accuracy
Changes since v3.0:
- libpsht replaced by libsharp
- added boundaries() method to T_Healpix_Base
Changes since v2.20a (incomplete):
- query_polygon() and query_polygon_inclusive() added.
- query routines now return lists of pixel ranges instead of lists of pixels,
which is much more economic.
- inclusive query routines: tradeoff between performance and number of false
positives is tuneable.
- queries now work natively in both NESTED and RING schemes. Operations on
the NESTED scheme are typically slower than in RING, but still much faster
than computing the query in RING and converting all pixel numbers to NESTED
- Healpix_Base and Healpix_Base2 have been merged into the templated class
T_Healpix_Base; functionality is still available under the old names.
- various performance improvements to T_Healpix_Base functionality
- rotalm_cxx has a new mode which allows specifying Euler angles.
- new code "udgrade_harmonic_cxx" which performs upgrading/degrading by going
through spherical harmonic space.
- module parameters can now optionally be passed on the command line instead
of using a parameter file.
anafast_cxx nlmax=500 infile=test.fits iter_order=3 <...>
- facilities now check input maps for undefined pixels before calling map2alm().
If undefined pixels are found, a warning is printed, and the pixels are set
- udgrade_cxx refuses downgrading of polarised maps (which would produce
- accuracy of pix2ang near the poles at high resolutions has been improved.
- optional autoconf support
- Healpix_Base::query_*(): new interface
- cxxutils.h has been split up into
* announce.h (dealing with module banners)
* share_utils.h (dealing with subdividing tasks between multiple workers)
* string_utils.h (dealing with string manipulation and file parsing)
- psht.h: interface to alm_info changed in order to add MPI support
- ylmgen_c.h: Ylmgen_init() interface has changed
- bluestein.h: bluestein_i() interface changed