v0.9.16 2018-12-18
      * Fix small mistake preventing compilation of McStas component.

v0.9.15 2018-12-18
      * Add three new materials, expanding coverage of data library: Uraninite,
        Aragonite and SiLu2O5.
      * Lower default dcutoff value for most .ncmat files to 0.1Aa, in response
      to validation plots of Uraninite.
      * Updated year in copyright notice in all files.
      * Laz/Lau file loader now deals correctly with missing lattice_b/lattice_c
      parameters, and performs sanity checks in all cases.
      * Provide convenience functions/methods to Info objects, providing
      d-spacing of a given hkl value.
      * FillHKL use numerically stable summation when calculating structure factors.
      * Add NCrystal version printout from the NCrystal_sample component in
      McStas. Also sanity check the header file and library versions
      found.
      * Add NCDebyeMSD utilities for getting mean squared atomic displacements
      in the Debye model and use in .ncmat factory (to replace isotropic
      Debye/Glauber model everywhere for consistency).
      * For cosmetic reasons, avoid signed negative zero in atomic positions.
      * Minor updates to .ncmat files (mostly cosmetic or rounding of numbers).

v0.9.14 2018-10-17
      * Minor change in Geant4 interface to support Geant4 10.4 and later releases.

v0.9.13 2018-09-27
      * Stop shipping hand-written .nxs files. Instead, attempt to auto-generate
      .nxs files from all shipped .ncmat files, and where possible ship
      those. This is done in order to ensure greater consistency and a lower
      burden of maintenance moving forward. During this process a few issues
      were found with Wyckoff positions in a few .nxs files, which should now be
      fixed by the new procedure.
      * Changed dcutoff for crystals with complex unit cells (like yttrium
      oxide) from 0.4Aa to 0.25Aa when loading from .ncmat. For all other .ncmat
      files in our data library, the value stays at 0.15Aa.
      * Fix LCBragg error in case of the double degenerate case where both
        neutron and lcaxis are parallel to (0,0,1).
      * Faster fillHKL function, in particular for very small dcutoff values.
      * The fillHKL function now supports the NCRYSTAL_FILLHKL_IGNOREFSQCUT
      environment variable, which can be used to disable the fsquarecut entirely.
      * Increased numerical stability in structure factor summation during
        PCBragg initialisation.
      * Phase out usage of non-standard constants like M_PI.
      * Increase MC overlay safety factor slightly for LCBragg scatter generation.
      * Improve colors and linestyles in ncrystal_inspectfile script.
      * LCBraggRef models use numerically stable summation.

v0.9.12 2018-08-28
      * Fix GaussMos cache-polution bug, where planes with similar d-spacing but
      different Fsquared could get wrong Q-factor in single crystals with large
      mosaicity.
      * Fix uninitialised variable in NCMatCfg.cc, affecting only floating point
      parameters not supporting units.
      * Allow re-seeding of the RandXRSR fallback RNG.
      * Add McStas example instrument file.
      * More checks for invalid geometry parameters in the McStas component.

v0.9.11 2018-08-18
      * Mark API functions and classes in an attempt to support Windows DLL
      builds and UNIX builds with -fvisibility=hidden (see github issue #17).
      * Add missing include in NCPCBragg.cc.

v0.9.10 2018-08-15
      * This release represents a large amount of work in many areas, and in
      particular focusing on aspects of Bragg diffraction in single crystals.
      * The Gaussian mosaicity modelling code was completely reimplemented,
      going back to the fundamental equations and making sure everything is
      carried out in a consistent and precise manner. Cross-section evaluation
      automatically selects between efficient numerical Romberg integrations and
      evaluation of new improved closed-form expressions, which takes the
      relevant spherically geometric into account. The code thus now gracefully
      handles everything from backscattering to forward scattering scenarios,
      and a large dynamic range of mosaicities, covering at least a range of
      0.01arcseconds to tens of degrees.  Despite this, computational speed is
      also improved, thanks to various enhancements and in particular faster
      code for searching through the available plane normals. A new parameter,
      mosprec, can be used to tune the tradeoff between precision and speed. The
      default value of 1e-3 is likely adequate for almost all users.
      * Introducing a completely new and precise modelling of layered crystals,
      with the LCBragg class. This class, primarily intended to be used for
      modelling of Pyrolythic Graphite, by default takes the rotational aspects
      of such crystal into account using an from-first-principles approach to
      figuring out which sets of normals will contribute to the scattering
      cross-sections, and then finding the exact contribution through efficient
      numerical integrals. A crystal is considered to be a layered crystal if it
      has the lcaxis vector parameter set. Additionally, the lcmode parameter
      can be used to select slower reference parameters, which simply sample an
      SCBragg single-crystal instance many times, in different rotated systems.
      * Huge speedup when modelling low-wavelength (<1Aa) neutrons in single
      crystals: Approximate the very large number of very weak and uninteresting
      scatter planes at 2*d-spacings < 1Aa with an isotropic mosaicity
      distribution, which is a rather appropriate approximation due to the very
      large number of very weak planes involved. The cutoff value of
      dspacing=0.5Aa can be modified with the new sccutoff parameter.
      * Bragg diffraction in powders and polycrystals was never slow, but the
      PCbragg class was nonetheless rewritten to become even faster by working
      on energies directly, avoiding internal conversions to wavelength at each
      call.
      * Embedded an NCRYSTALMATCFG[lcaxis=0,0,1] statement in the data file
      C_sg194_pyrolytic_graphite.ncmat, so that it will by default be modelled
      as a layered crystal with the correct rotation axis, which is likely what
      almost all users will want.
      * Calling generateScattering where cross-sections are vanishing now
      generally leads to nothing happening (i.e. scatter_angle = 0 and
      delta_ekin=0) rather than the previous fallback of isotropic elastic
      scattering.
      * Retire RandSimple and introduce instead RandXRSR implementing the
      xoroshiro128+ generator. This means that the fall-back RNG option shipped
      with NCrystal is now not only fast, but also fully suitable for scientific
      work.
      * Fix bug in the NCrystal McStas component which resulted in wrong
      attenuation factors being calculated for the default absorption mode.
      * Changed the conversion constants used in the McStas component in order
      to make unit conversion issues in the NCrystal-McStas interface less
      likely to produce undesired imprecision. Further discussions with McStas
      devs will be needed in order to completely address the issue.
      * Code creating lattice rotation matrices was updated in order to avoid
      small rounding errors in the generated normals in most cases.
      * More sanity checks and input pruning of atomic positions and lattice
      structure loaded from input files. Also improved robustness of .nxs file
      loading.
      * Remove spurious ref-count increase in CalcBase::setRandomGenerator
      (thanks to A. Morozov for the report).
      * Fix windows builds (see github issue #17). Many thanks to A. Morozov for
      a detailed report.
      * Many general infrastructure improvements: Refactor random sampling
      algorithms from CalcBase objects (a necessary step for future enhanced MT
      support). Refactor orientation code from SCBragg (now used by both SCBragg
      and LCBragg). Refactor .ncmat loading code to disentangle the parsing code
      from the code. Lots of new utilities: Cubic splines, Romberg integration,
      root finding, derivative estimation. Single header NCDefs.hh providing all
      ubiquitous definitions and infrastructure related to memory handling and
      error reporting, and also handles includes which must get special
      treatment due to differences between platforms or C++ versions. Add
      UniquePtr (similar to C++11's unique_ptr). Add PlaneProvider (supported in
      PCBragg, SCBragg, LCBragg), for customizing which planes goes in which
      process. Avoid bind1st usage as it is removed in C++17. Custom functions
      for evaluating sine and cosine of angles in various ranges - between 5-10
      times faster than the standard functions at 15 significant digits. Also
      add fast approximations for atan and exp. Performed careful changes to
      ncmin and ncmax functions with large performance implications
      (surprisingly, std::fmax generates very inefficient machine code:
      https://godbolt.org/g/Dxy52A ). Add helper class for efficiently
      generating sine and cosine values for all grid-points in a grid. PCBragg
      supports more custom constructors.

v0.9.9 2018-03-26
      * Expose loadNCMAT function to client C++ code, making it possible to work
        with .ncmat files completely independent from the factory
        infrastructure.
      * Cleanup internal .ncmat loading code, splitting out fillHKL to a new
        utility file and renaming old loader code to be purely a parser.
      * Allow Wyckoff positions and mean-squared-displacement parameters on
        NCInfo.
      * Rename standard factories to stdnxs, stdncmat, stdlaz, stdscat and
        stdabs respectively.
      * Allow factory-specific parameters to be passed along to info
        factories. Thus, expandhkl which was until now a global NCMatCfg
        parameter, is now a parameter specific to the stdncmat factory.  The
        stdnxs factory gets two flags: mcstaslike and fixpolyatom. The former
        makes nxs-provided bkgd curves use same composition as in the McStas nxs
        component (the default is to compose as in NXSG4).
      * Remove polyatom fix in wrapped nxslib code, so bkgd=external xs curves
        for .nxs files are now completely as in NXSG4, apart from the fact that
        our version contains fixes for crashes (reported upstream).
      * Rename NonOrientedScatter to IsotropicScatter.
      * Fix compilation error under some compilers in NCRCBase.hh.

v0.9.8 2018-03-19
      * Decouple PhononDebye background cross-section code from .ncmat format,
        making it the new default also for .nxs files. For .nxs files, it is
        still possible to select the old behaviour of using curves provided by
        nxslib itself by configuring those files with "bkgd=external".  A side
        benefit of this splitout can in some cases result in significant faster
        initialisation times when working with .ncmat files.
      * Major cleanup and renaming of configuration variables, in preparation of
        the 1.0.0 release milestone. The renames are: "mosaicity"->"mos",
        "orientationprimary"->"dir1", "orientationsecondary"->"dir2",
        "orientationtolerance"->"dirtol", "packingfactor"->"packfact",
        "dcutoffupper"->"dcutoffup", "scatterbkgdmodel"->"bkgd",
        "scatterfactory"->"scatfactory, "absorptionfactory"->"absnfactory" and
        "skippbragg" becomes "bragg" but with opposite logic, e.g. "bragg=0"
        disables Bragg diffraction. Removed entirely was the variables
        braggonly (use "bkgd=none" or "bkgd=0" instead now) and
        "nphonon". Experts can now instead tune parameters for specific
        background models by embedding them in the "bkgd" parameter value
        itself, e.g. "bkgd=phonondebye:nphonon@20".
      * Temporarily disable single-crystal speedup code while we investigate
        further, due to concerns that it is too aggresive (see github issue #13).

v0.9.7 2018-03-06
      * Don't produce floating point exception when loading .ncmat files with H,
        Li, Ti, V or Mn (github issue #8).
      * McStas component now actually applies requested packingfactor for powder
        materials (github issue #9).

v0.9.6 2018-02-07
      * Fix visualisation of box-shaped sample in McStas component.
      * Rename McStas component parameter multscatt to multscat.

v0.9.5 2018-02-05
      * Add support for python3 (github issue #6).

v0.9.4 2018-01-31
      * Correct version numbers.

v0.9.3 2018-01-31
      * NCrystal_sample.comp (McStas interface): Fix link flags on OSX
        (github issue #3) and compilation warnings (github issue #4).

v0.9.2 2018-01-23
      * Fix cross-section and material composition bugs in Geant4
        interface. Only affects Geant4 users.
      * CMakeLists.txt: Always use absolute rpath (needed on OSX).
      * Fix gcc7 compilation.

v0.9.1 2017-08-30
      * Proper behaviour of python interface if Numpy is absent.

v0.9.0 2017-08-30
      * First github based public release of NCrystal.

