Updates for SOFA Release 12 : 2016 May
                   -------------------------------------- 

Changes/updates fall into the following categories:

1. The addition of four routines to the Precession/Nutation/Polar Motion
   section, which deliver long-term (+/-200,000 years) precession using
   the model of Vondrak, Capitaine and Wallace (2011, 2012).

2. Introduction of a new section entitled Ecliptic Coordinates.  This
   section consists of six routines dealing with the transformation
   between equatorial and ecliptic coordinates using either the IAU 2006
   precession model or the long-term precession model of Vondrak et al.

3. Separate Earth Attitude Cookbooks for Fortran and C users, replacing
   the existing Fortran-only edition.

4. Some documentation corrections.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

FORTRAN Routines
----------------

New routines that implement a long-term precession model:

iau_LTP       Precession matrix, J2000.0 to date using the Vondrak
              et al. long-term model.

iau_LTPB      Precession+bias matrix, J2000.0 to date using the Vondrak
              et al. long-term model.

iau_LTPECL    Precession (Vondrak et al. long-term) of the ecliptic.  A
              unit vector representing the direction of the ecliptic
              pole with respect to the J2000.0 mean equator and equinox.

iau_LTPEQU    Precession (Vondrak et al. long-term) of the equator.   A
              unit vector representing the direction of the pole of the
              equator with respect to the J2000.0 mean equator and
              equinox.

Routines comprising a new section on ecliptic coordinates:

iau_ECEQ06    Ecliptic coords to equatorial:  transformation of
              longitude and latitude (mean equinox and ecliptic of date)
              to mean J2000.0 right ascension and declination, using
              IAU 2006 precession.

iau_ECM06     ICRS (equatorial) to ecliptic rotation matrix using
              IAU 2006 precession.

iau_EQEC06    Equatorial to ecliptic coords:  transformation of ICRS
              right ascension and declination to ecliptic longitude and
              latitude (mean equinox and ecliptic of date) using
              IAU 2006 precession.

iau_LTECEQ    Ecliptic coords to equatorial:  transformation of
              ecliptic longitude and latitude (mean equinox and
              ecliptic of date) to mean J2000.0 right ascension and
              declination, using the Vondrak et al. long-term
              precession.

iau_LTECM     ICRS (equatorial) to ecliptic rotation matrix using the
              Vondrak et al. long-term precession.

iau_LTEQEC    Equatorial to ecliptic coords:  transformation of ICRS
              right  ascension and declination to ecliptic longitude and
              latitude (mean equinox and ecliptic of date) using the
              Vondrak et al. long-term precession.

Updated:

t_sofa_f.for  Test program, incorporating the ten new routines.


Revisions:

iau_ATCO13    List of called routines corrected.

iau_ATIO13    List of called routines corrected.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ANSI C Routines
---------------

New functions that implement a long-term precession model:

iauLtp        Precession matrix, J2000.0 to date using the Vondrak
              et al. long-term model.  A new routine.

iauLtpb       Precession+bias matrix, J2000.0 to date using the Vondrak
              et al. long-term model.  A new routine.

iauLtpecl     Precession (Vondrak et al. long-term) of the ecliptic.  A
              unit vector representing the direction of the ecliptic
              pole with respect to the J2000.0 mean equator and equinox.
              A new routine.

iauLtpequ     Precession (Vondrak et al. long-term) of the equator.   A
              unit vector representing the direction of the pole of the
              equator with respect to the J2000.0 mean equator and
              equinox.  A new routine.

Functions comprising a new section on ecliptic coordinates:

iauEceq06     Ecliptic coords to equatorial:  transformation of
              longitude and latitude (mean equinox and ecliptic of date)
              to mean J2000.0 right ascension and declination, using
              IAU 2006 precession.

iauEcm06      ICRS (equatorial) to ecliptic rotation matrix using
              IAU 2006 precession.

iauEqec06     Equatorial to ecliptic coords:  transformation of ICRS
              right ascension and declination to ecliptic longitude and
              latitude (mean equinox and ecliptic of date) using
              IAU 2006 precession.

iauLteceq     Ecliptic coords to equatorial:  transformation of
              ecliptic longitude and latitude (mean equinox and
              ecliptic of date) to mean J2000.0 right ascension and
              declination, using the Vondrak et al. long-term
              precession.

iauLtecm      ICRS (equatorial) to ecliptic rotation matrix using the
              Vondrak et al. long-term precession.

iauLteqec     Equatorial to ecliptic coords:  transformation of ICRS
              right  ascension and declination to ecliptic longitude and
              latitude (mean equinox and ecliptic of date) using the
              Vondrak et al. long-term precession.

Updated:

sofa.h        Addition of prototypes for the ten new functions listed
              above.

t_sofa_c      Updated test program incorporating the ten new routines,
              plus a handful of constants extended to more decimal
              places.


Revisions:

iauAtco13     List of called functions corrected.

iauAtio13     List of called functions corrected.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +


Documentation:

board.lis     Inclusion of the new board members.

title.lis     Release number and date updated.

intro.lis     Updated to reflect the updates and additions of this 12th
              release.

sofa_lib.lis  New routines added.

sofa_pn_f.pdf SOFA Earth Attitude Cookbook for those using Fortran.  The
              former Fortran-only version was called sofa_pn.pdf.  A few
              typographic corrections have been made.

sofa_pn_c.pdf SOFA Earth Attitude Cookbook for those using ANSI C.  Like
              the former Fortran-only version but with function names
              and argument lists appropriate for the C case.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
End of Updates
2016 April 8
CYH/SAB
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +


                 Updates for SOFA Release 12a : 2016 July
                 - - - - - - - - - - - - - - - - - - - - -

Summary of Changes
------------------

Changes/updates for this minor release (12a) fall into the following 
categories:

1. A leap second at the end of December 2016, requires updates to the
   iau_DAT (dat.for) and iauDat (Dat.c) routines.  The test-bed        
   programs t_sofa_f.for and t_sofa_c.c are also updated to test this 
   change.
   
2. The routines iau_LDSUN and iauLdsun, that calculate the deflection 
   of starlight by the Sun, have changed, though without affecting 
   the results for normal use.  As a defensive measure, an internal 
   threshold value tapers off the returned value for cases close to 
   the center of the solar disk so that it becomes zero rather than
   infinity at the center.  By making the formerly fixed threshold 
   value depend on observer location, it has been possible to make 
   the onset of the defensive measure less abrupt, which has greatly 
   improved round-trip closure even for impossible (i.e. occulted) 
   cases.  For a terrestrial observer, the new threshold corresponds 
   to a distance of about 5 arcminutes (formerly 9 arcseconds) from 
   the center of the disk.     
 
3. Documentation updates and corrections.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +


FORTRAN Routines
----------------

iau_DAT      a leap second is now required in UTC for 2016 December 31.

iau_LDSUN    internal threshold value changed from 1D-9 to DLIM, where
             DLIM = 1D-6 / MAX(EM*EM,1D0) and EM is the distance in au
             from the Sun to the observer.

t_sofa_f     this test program has been modified to test the updated
             leap second routine.
             
Documentation
-------------

sofa_ast_f   Astrometry cookbook has been modified to take account of 
             the updated LDSUN routine. 
                    
sofa_ts_f    Version number of this cookbook corrected.


+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ANSI C:
-------

iauDat       a leap second is now required in UTC for 2016 December 31.

iauLdsun     internal threshold value changed from 1e-9 to dlim, where
             dlim = 1e-6 / (em*em > 1.0 ? em*em : 1.0) and em is the 
             distance in au from the Sun to the observer.

Cr           In the list of "Returned:" arguments listed in the
             documentation the one argument was listed as "char[]"
             rather than just "c".

t_sofa_c     this test program has been modified to test the updated
             leap second routine.

Documentation
-------------

sofa_ast_c   Astrometry cookbook has been modified to take account of
             the updated Ldsun routine.

sofa_ts_c    Version number of this cookbook corrected.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
End of Updates
2016 July 18
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +



                 Updates for SOFA Release 12b : 2016 Dec 21
                 - - - - - - - - - - - - - - - - - - - - -

Summary of Changes
------------------

Changes/updates for this minor release (12b) fall into the following
categories:

1. iauJd2cal and iauJdcalf, coding change to removing inconsistent
   results on certain processors and compilers.

2. iauStarpv coding change to deliver better precision.

3. iau_REFCO, coding change (Fortran only).  This only affects cases
   when the input temperature is "outlandish", i.e. outside the range
   of -15 to +200 degrees Celsius.

4. Documentation - minor update.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

FORTRAN Routines
----------------

iau_STARPV    An expression (sqrt(1-x)-1), where x is usually tiny,
              has been replaced with (-x/(sqrt(1-x)+1) to improve
              numerical precision.

iau_REFCO    The line that forms the temperature (TK) in degrees Kelvin
             uses the the input temperature (TC), rather than T, the
             TC restricted to the "safe" range of -15 degrees Celsius
             to +200 degrees Celsius.

Documentation
-------------

sofa_ts_f     Julian epoch 2000 has changed to Julian epoch 2000.0.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ANSI C:
-------

iauJd2cal     Change in coding (see below);

iauJdcalf     Change in coding;

              The current C versions of the JD2CAL and JDCALF routines
              can, under certain special circumstances, produce incorrect
              results.  The coding of the new versions has been changed
              to remove this possibility.  The Fortran versions do not
              have the problem.

              The misbehavior has been detected only under the following
              circumstances:

              * on Intel and AMD processors;
              * when compiled with the GNU C compiler (gcc);
              * on any operating system that produces a 32-bit
                executable file;
              * with certain combinations of compiler flags, such as
                "-fno-caller-saves -m32"; and
              * Julian dates split (dj1+dj2) such that dj2 is in the
                range 0.1 to 0.5.

              Calling iauJd2cal or iauJdcalf in these circumstances
              sometimes returns a result one day too small.

              As an example, take 2014 September 24 at 19:12:00, which
              is Julian date 2456925.3 (exactly).  If we elect to split
              the JD as follows:

                           dj1 = 2456925.0, dj2 = 0.3,

              then the old iauJd2cal returns 2014 9 23 0.8, which is
              incorrect, while the new iauJd2cal returns the correct
              2014 9 24 0.8.

iauStarpv     An expression (sqrt(1-x)-1), where x is usually tiny,
              has been replaced with (-x/(sqrt(1-x)+1) to improve
              numerical precision.

Documentation
-------------

sofa_ts_c     Julian epoch 2000 has changed to Julian epoch 2000.0.

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
End of Updates
2016 Dec 21
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +



                 Updates for SOFA Release 12c : 2016 Dec 23
                 - - - - - - - - - - - - - - - - - - - - -

Summary of Changes
------------------

Changes/updates for this minor release (12c) fall into the category of
changes to the test-bed routines only. Minor release 12c differs from 12b
only in terms of the Fortran and ANSI C test-bed routines.

1. The test-bed programs t_sofa_f.for and t_sofa_c.c have been updated
   to reflect changes introduced in the minor release 12b described above.
   
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

FORTRAN Routines
----------------

t_sofa_f     this test program has been modified to reflect the changes
             introduced in minor release 12b described above.
             
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

ANSI C:
-------

t_sofa_c     this test program has been modified to reflect the changes 
             introduced in minor release 12b described above. 

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
End of Updates
2016 Dec 23
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +