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
  (https://www.jstage.jst.go.jp/article/jmsj/96/2/96_2018-019/_article
  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
  system

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 routines:
- 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
  afterwards.

Healpix_Base:
- 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

Standalone codes:
- 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.

User-friendliness:
- module parameters can now optionally be passed on the command line instead
  of using a parameter file.
  For example:
    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
  to zero.
- udgrade_cxx refuses downgrading of polarised maps (which would produce
  unphysical results)

Bug fixes:
- accuracy of pix2ang near the poles at high resolutions has been improved.

Configuration:
- optional autoconf support

Interface changes:
- 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
