H Release Notes

 H.1 Changes Introduced in V1.1
 H.2 Changes Introduced in V1.2
 H.3 Changes Introduced in V1.3
 H.4 Changes Introduced in V1.4
 H.5 Changes Introduced in V1.5
 H.6 Changes Introduced in V1.6
 H.7 Changes Introduced in V1.7
 H.8 Changes Introduced in V1.8-2
 H.9 Changes Introduced in V1.8-3
 H.10 Changes Introduced in V1.8-4
 H.11 Changes Introduced in V1.8-5
 H.12 Changes Introduced in V1.8-7
 H.13 Changes Introduced in V1.8-8
 H.14 Changes Introduced in V1.8-13
 H.15 Changes Introduced in V2.0
 H.16 Changes Introduced in V3.0
 H.17 Changes Introduced in V3.1
 H.18 Changes Introduced in V3.2
 H.19 Changes Introduced in V3.3
 H.20 Changes Introduced in V3.4
 H.21 Changes Introduced in V3.5
 H.22 Changes Introduced in V3.6
 H.23 Changes Introduced in V3.7
 H.24 Changes Introduced in V4.0
 H.25 Changes Introduced in V4.1
 H.26 Changes Introduced in V4.2
 H.27 Changes Introduced in V4.3
 H.28 Changes Introduced in V4.4
 H.29 Changes Introduced in V4.5
 H.30 Changes Introduced in V4.6
 H.31 Changes Introduced in V5.0
 H.32 Changes Introduced in V5.1
 H.33 Changes Introduced in V5.2
 H.34 Changes Introduced in V5.3
 H.35 Changes Introduced in V5.3-1
 H.36 Changes Introduced in V5.3-2
 H.37 Changes Introduced in V5.4-0
 H.38 Changes Introduced in V5.5-0
 H.39 Changes Introduced in V5.6-0
 H.40 ChangesIntroduced in V5.6-1
 H.41 Changes Introduced in V5.7-0
 H.42 Changes Introduced in V5.7-1
 H.43 Changes Introduced in V5.7-2
 H.44 Changes Introduced in V6.0
 H.45 Changes Introduced in V6.0-1
 H.46 Changes Introduced in V7.0.0
 H.47 Changes Introduced in V7.0.1
 H.48 Changes Introduced in V7.0.2
 H.49 Changes Introduced in V7.0.3
 H.50 Changes Introduced in V7.0.4
 H.51 Changes Introduced in V7.0.5
 H.52 Changes Introduced in V7.0.6
 H.53 Changes Introduced in V7.1.0
 H.54 Changes Introduced in V7.1.1
 H.55 Changes Introduced in V7.2.0
 H.56 Changes Introduced in V7.3.0
 H.57 Changes Introduced in V7.3.1
 H.58 Changes Introduced in V7.3.2
 H.59 Changes Introduced in V7.3.3
 H.60 Changes Introduced in V7.3.4
 H.61 Changes Introduced in V8.0.0
 H.62 Changes Introduced in V8.0.1
 H.63 Changes Introduced in V8.0.2
 H.64 Changes Introduced in V8.0.3
 H.65 Changes Introduced in V8.0.4
 H.66 Changes Introduced in V8.0.5
 H.67 Changes Introduced in V8.1.0
 H.68 Changes Introduced in V8.2
 H.69 Changes Introduced in V8.3
 H.70 Changes Introduced in V8.4
 H.71 Changes Introduced in V8.5
 H.72 Changes Introduced in V8.6.2
 H.73 Changes Introduced in V8.6.3
 H.74 Changes Introduced in V8.7.0
 H.75 Changes Introduced in V8.7.1
 H.76 Changes Introduced in V8.7.2
 H.77 Changes Introduced in V9.0.0
 H.78 Changes Introduced in V9.0.2
 H.79 Changes Introduced in V9.1.0
 H.80 Changes Introduced in V9.1.2
 H.81 Changes Introduced in V9.1.3
 H.82 Changes Introduced in V9.2.0
 H.83 Changes Introduced in V9.2.4
 H.84 Changes Introduced in V9.2.5
 H.85 Changes Introduced in V9.2.6
 H.86 Changes Introduced in V9.2.7
 H.87 Changes Introduced in V9.2.8

H.1 Changes Introduced in V1.1

The following describes the most significant changes which occurred in the AST library between versions V1.0 and V1.1 (not the most recent version):

(1)
A new “How To…” section (§3) has been added to this document. It contains simple recipies for performing commonly-required operations using AST.
(2)
A new astUnformat function has been provided to read formatted coordinate values for the axes of a Frame7.8). In essence, this function is the inverse of astFormat. It may be used to decode user-supplied formatted values representing coordinates, turning them into numerical values for processing. Celestial coordinates may also be read using this function (§8.7) and free-format input is supported.
(3)
The Format attribute string used by a SkyFrame when formatting celestial coordinate values now allows the degrees/hours field to be omitted, so that celestial coordinates may be given in (e.g.) arc-minutes and/or arc-seconds (§8.6). As a result, the degrees/hours field is no longer included by default. A new “t” format specifier has been introduced (see the Format attribute) to allow minutes and/or seconds of time to be specified if required.
(4)
A new function astMapBox has been introduced. This allows you to find the extent of a “bounding box” which just encloses another box after it has been transformed by a Mapping. A typical use might be to calculate the size which an image would have if it were transformed by the Mapping.
(5)
A new class of Object, the IntraMap, has been introduced (§20). This is a specialised form of Mapping which encapsulates a privately-defined coordinate transformation function (e.g. written in C) so that it may be used like any other AST Mapping. This allows you to create Mappings that perform any conceivable coordinate transformation.
(6)
The internal integrity of a FrameSet is now automatically preserved whenever changes are made to any attributes which affect the current Frame (either by setting or clearing their values). This is accomplished by appropriately re-mapping the current Frame to account for any change to the coordinate system which it represents (§14.6).
(7)
The internal structure of a FrameSet is now automatically tidied to eliminate redundant nodes whenever any of its Frames is removed or re-mapped. Automatic simplification of any compound Mappings which result may also occur. The effect of this change is to prevent the accumulation of unnecessary structure in FrameSets which are repeatedly modified.
(8)
Some improvements have been made to the algorithms for simplifying compound Mappings, as used by astSimplify.
(9)
The textual representation used for some Objects (i.e. when they are written to a Channel) has changed slightly, but remains compatible with earlier versions of AST.
(10)
Interfaces to the internal functions and macros used by AST for handling memory and error conditions are now provided via the “ast.h” header file. This is for the benefit of those writing (e.g.) new graphics interfaces for AST.
(11)
A problem has been fixed which could result when using astRead to read FITS headers in which the CDELT value is zero. Previously, this could produce a Mapping whose inverse transformation was not defined and this could unnecessarily restrict the use to which it could be put. The problem has been overcome by supplying a suitable small CDELT value for FITS axes which have only a single pixel.
(12)
A bug has been fixed which could occasionally cause a MatrixMap to be used with the wrong Invert attribute value when it forms part of a compound Mapping which is being simplified using astSimplify.
(13)
A problem has been fixed which could prevent tick marks being drawn on a coordinate axis close to a singularity in the coordinate system.

H.2 Changes Introduced in V1.2

The following describes the most significant changes which occurred in the AST library between versions V1.1 and V1.2 (not the most recent version):

(1)
A new function, astPolyCurve, has been introduced to allow more efficient plotting of multiple geodesic curves (§21.3).
(2)
A new set of functions, astResample <X >, has been introduced to perform resampling of gridded data such as images (i.e. re-gridding) under the control of a geometrical transformation specified by a Mapping.
(3)
The command-line options “pgp” and “pgplot”, which were previously synonymous when used with the “ast_link” and “ast_link_adam” commands, are no longer synonymous. The option “pgp” now causes linking with the Starlink version of PGPLOT (which uses GKS to generate its output), while “pgplot” links with the standard (or “native”) version of PGPLOT.
(4)
The function astMapBox has been changed to execute more quickly, although this has been achieved at the cost of some loss of robustness when used with difficult Mappings.
(5)
A new value of “FITS-IRAF” has been introduced for the Encoding attribute of a FitsChan. This new encoding provides an interim solution to the problem of storing coordinate system information in FITS headers, until the proposed new FITS-WCS standard becomes stable.
(6)
When a FrameSet is created from a set of FITS header cards (by reading from a FitsChan using a “foreign” encoding), the base Frame of the resulting FrameSet now has its Domain attribute set to “GRID”. This reflects the fact that this Frame represents FITS data grid coordinates (equivalent to FITS pixel coordinates–-see §7.13). Previously, this Domain value was not set.
(7)
astFindFits now ignores trailing spaces in its keyword template.
(8)
astPutFits now recognises “D” and “d” as valid exponent characters in floating point numbers.
(9)
The FitsChan class is now more tolerant of common minor violations of the FITS standard.
(10)
The FitsChan class now incorporates an improved test for the linearity of Mappings, allowing more reliable conversion of AST data into FITS (using “foreign” FITS encodings).
(11)
Some further improvements have been made to the algorithms for simplifying compound Mappings, as used by astSimplify.
(12)
A new UnitRadius attribute has been added to the SphMap class. This allows improved simplification of compound Mappings (CmpMaps) involving SphMaps and typically improves performance when handling FITS world coordinate information.
(13)
A MatrixMap no longer propagates input coordinate values of AST__BAD automatically to all output coordinates. If certain output coordinates do not depend on the affected input coordinate(s) because the relevant matrix elements are zero, then they may now remain valid.
(14)
A minor bug has been corrected which could cause certain projections which involve half the celestial sphere to produce valid coordinates for the other (unprojected) half of the sphere as well.
(15)
A bug has been fixed which could occasionally cause astConvert to think that conversion between a CmpFrame and another Frame was possible when, in fact, it wasn’t.

H.3 Changes Introduced in V1.3

The following describes the most significant changes which occurred in the AST library between versions V1.2 and V1.3 (not the most recent version):

(1)
A new set of functions, astResample <X >, has been introduced to provide efficient resampling of gridded data, such as spectra and images, under the control of a geometrical transformation specified by a Mapping. A variety of sub-pixel interpolation schemes are supported.
(2)
A new class, PcdMap, has been introduced. This is a specialised form of Mapping which implements 2-dimensional pincushion or barrel distortion.
(3)
A bug has been fixed which could cause a FitsChan to produce too many digits when formatting floating point values for inclusion in a FITS header if the numerical value was in the range -0.00099999…to -0.0001.
(4)
A bug has been fixed which could cause a FitsChan to lose the comment associated with a string value in a FITS header.
(5)
A FitsChan now reports an error if it reads a FITS header which identifies a non-standard sky projection (previously, this was accepted without error and a Cartesian projection used instead).
(6)
A bug has been fixed which could prevent conversion between the coordinate systems represented by two CmpFrames. This could only occur if the CmpFrames contained a relatively large number of nested Frames.
(7)
Further improvements have been made to the simplification of compound Mappings, including fixes for several bugs which could cause indefinite looping or unwanted error messages.
(8)
Some memory leaks have been fixed.
(9)
A small number of documentation errors have been corrected.

H.4 Changes Introduced in V1.4

The following describes the most significant changes which have occurred in the AST library between versions V1.3 and V1.4 (not the most recent version):

(1)
A new MathMap class has been introduced. This is a form of Mapping that allows you to define coordinate transformations in a flexible and transportable way using arithmetic operations and mathematical functions similar to those available in C.
(2)
WARNING—INCOMPATIBLE CHANGE. Transformation functions used with the IntraMap class (see, for example, astIntraReg) now require a “this” pointer as their first parameter. Existing implementations will not continue to work correctly with this version of AST unless this parameter is added. There is no need for existing software to make use of this pointer, but it must be present.

This change has been introduced so that transformation functions can gain access to IntraMap attributes.

(3)
A new IntraFlag attribute has been added to the IntraMap class. This allows the transformation functions used by IntraMaps to adapt to produce the required transformation on a per-IntraMap basis (§20.9).
(4)
The Plot attributes MajTickLen and MinTickLen, which control the length of major and minor tick marks on coordinate axes, may now be subscripted using an axis number. This allows tick marks of different lengths to be used on each axis. It also allows tick marks to be suppressed on one axis only by setting the length to zero.
(5)
The value of the Plot attribute NumLab, which controls the plotting of numerical labels on coordinate axes, no longer has any effect on whether labelling of a coordinate grid is interior or exterior (as controlled by the Labelling attribute).
(6)
The FitsChan class now provides some support for the IRAF-specific “ZPX” sky projection, which is converted transparently into the equivalent FITS “ZPN” projection (see the description of the Encoding attribute for details).
(7)
The FitsChan class now recognises the coordinate system “ICRS” (International Celestial Reference System) as equivalent to “FK5”. This is an interim measure and full support for the (exceedingly small) difference between ICRS and FK5 will be added at a future release.

Note that “ICRS” is not yet recognised as a coordinate system by other classes such as SkyFrame, so this change only facilitates the importation of foreign data.

(8)
A bug in the FitsChan class has been fixed which could result in longitude values being incorrect by 180 degrees when using cylindrical sky projections, such as the FITS “CAR” projection.
(9)
A bug in the FitsChan class has been fixed which could result in the FITS sky projection parameters ProjP(0) to ProjP(9) being incorrectly named PROJP1 to PROJP10 when written out as FITS cards.
(10)
A bug in the FitsChan class has been fixed which could cause confusion between the FITS-IRAF and FITS-WCS encoding schemes if both a CD matrix and a PC matrix are erroneously present in a FITS header.
(11)
Some minor memory leaks have been fixed.
(12)
A small number of documentation errors have been corrected.

H.5 Changes Introduced in V1.5

The following describes the most significant changes which have occurred in the AST library between versions V1.4 and V1.5 (not the most recent version):

(1)
The FitsChan class has been modified to support the latest draft FITS WCS standard, described in the two papers “Representation of world coordinates in FITS” (E.W.Greisen and M.Calabretta, dated 30th November, 1999), and “Representation of celestial coordinates in FITS” (M.Calabretta and E.W.Greisen, dated 24th September, 1999). These are available at http://www.cv.nrao.edu/fits/documents/wcs/wcs.html.

The FITS-WCS encoding now uses these updated conventions. The main changes are:

(2)
Two new encodings have been added to the FitsChan class:
FITS-PC
This encoding uses the conventions of the now superseded FITS WCS paper by E.W.Greisen and M.Calabretta which used keywords CDELTj and PCjjjiii to describe axis scaling and rotation. These are the conventions which were used by the FITS-WCS encoding prior to version 1.5 of AST. This encoding is provided to allow existing data which use these conventions to be read. It should not in general be used to create new data.
FITS-AIPS
This encoding is based on the conventions described in the document “Non-linear Coordinate Systems in AIPS” by Eric W. Greisen (revised 9th September, 1994 and available by ftp from fits.cv.nrao.edu /fits/documents/wcs/aips27.ps.Z). This encoding uses CROTAi and CDELTi keywords to describe axis rotation and scaling.
(3)
The FitsChan class now provides some support for the IRAF-specific “TNX” sky projection, which is converted transparently into the equivalent FITS “TAN” projection (see the description of the Encoding attribute for details).
(4)
FrameSets originally read from a DSS encoded FITS header can now be written out using the FITS-WCS encoding (a TAN projection with correction terms will be used) in addition to the DSS encoding. The reverse is also possible: FrameSets originally read from a FITS-WCS encoded FITS header and which use a TAN projection can now be written out using the DSS encoding.
(5)
The algorithm used by the FitsChan class to verify that a FrameSet conforms to the FITS-WCS model has been improved so that FrameSets including more complex mixtures of parallel and serial Mappings can be written out using the FITS-WCS encoding.
(6)
The FitsChan class has been changed so that long strings included in the description of an Object can be saved and restored without truncation when using the NATIVE encoding. Previously, very long Frame titles, mathematical expressions, etc. were truncated if they exceeded the capacity of a single FITS header card. They are now split over several header cards so that they can be restored without truncation. Note, this facility is only available when using NATIVE encoding.
(7)
The FitsChan class has a new attribute called Warnings which can be used to select potentially dangerous conditions under which warnings should be issued. These conditions include (for instance) unsupported features within non-standard projections, missing keywords for which default values will be used, etc.
(8)
The WcsMap class has been changed to support the changes made to the FITS-WCS encoding in the FitsChan class:

H.6 Changes Introduced in V1.6

The following describes the most significant changes which have occurred in the AST library between versions V1.5 and V1.6:

(1)
The C interface to several methods (astTranN, astMark and astPolyCurve) have been changed to make them easier to call from C++. Parameters which previously had type “double (*)[]” have been changed to the simpler “double *”. Using the old types may result in non-fatal compiler warnings, but should not change the behaviour of the methods.
(2)
A bug has been fixed in the Plot class which could cause groups of tick marks to be skipped when using very small gaps.
(3)
A bug has been fixed in the Plot class which could cause axes to be labeled outside the visible window, resulting in no axes being visible.
(4)
The FITS-WCS encoding used by the FitsChan class now includes the WCSNAME keyword. When creating a FrameSet from FITS headers, the values of the WCSNAME keywords are now used as the Domain names for the corresponding Frames in the returned FrameSet. When writing a FrameSet to a FITS header the Domain names of each Frame are stored in WCSNAME keywords in the header.
(5)
The FITS-WCS encoding used by the FitsChan class now attempts to retain the identification letter associated with multiple axis descriptions. When reading a FrameSet from a FITS header, the identification letter is stored in the Ident attribute for each Frame. When writing a FrameSet to a FITS header, the identification letter is read from the Ident attribute of each Frame. The letter to associate with each Frame can be changed by assigning a new value to the Frame’s Ident attribute.
(6)
The FITS-WCS, FITS-PC, FITS-IRAF and FITS-AIPS encodings used by the FitsChan class now create a SkyFrame with the System attribute set to “Unknown” if the CTYPE keywords in the supplied header refers to an unknown celestial coordinate system. Previously, a Frame was used instead of a SkyFrame.
(7)
The FITS-WCS, FITS-PC, FITS-IRAF and FITS-AIPS encodings used by the FitsChan class no longer report an error if the FITS header contains no CTYPE keywords. It is assumed that a missing CTYPE keyword implies that the world coordinate system is linear and identically equal to “intermediate world coordinates”.
(8)
The new value “noctype” is now recognized by the Warnings attribute of the FitsChan class. This value causes warnings to be issued if CTYPE keywords are missing from foreign encodings.
(9)
A new attribute called AllWarnings has been added to the FitsChan class. This is a read-only, space separated list of all the known condition names which can be specified in the Warnings attribute.
(10)
The FitsChan class now attempts to assigns a Title to each Frame in a FrameSet read using a foreign encoding. The Title is based on the Domain name of the Frame. If the Frame has no Domain name, the default Title supplied by the Frame class is retained.
(11)
The FitsChan class uses the comments associated with CTYPE keywords as axis labels when reading a foreign encoding. This behaviour has been modified so that the default labels provided by the Frame class are retained (instead of using the CTYPE comments) if any of the CTYPE comments are identical.
(12)
A new “interpolation” scheme identified by the symbolic constant AST__BLOCKAVE has been added to the AST_RESAMPLE <X > set of functions. The new scheme calculates each output pixel value by finding the mean of the input pixels in a box centred on the output pixel.
(13)
The SkyFrame class can now be used to represent an arbitrary spherical coordinate system by setting its System attribute to “Unknown”.
(14)
The indices of the latitude and longitude axes of a SkyFrame can now be found using new read-only attributes LatAxis and LonAxis. The effects of any axis permutation is taken into account.
(15)
A new attribute called Ident has been added to the Object class. This serves the same purpose as the existing ID attribute, but (unlike ID) its value is transferred to the new Object when a copy is made.
(16)
A bug has been fixed which could prevent complex CmpFrames behaving correctly (for instance, resulting in the failure of attempts to find a Mapping between a CmpFrame and itself).

H.7 Changes Introduced in V1.7

The following describes the most significant changes which have occurred in the AST library between versions V1.6 and V1.7:

(1)
The Frame class has a new method called astAngle which returns the angle subtended by two points at a third point within a 2 or 3 dimensional Frame.
(2)
The Frame class has a new method called astOffset2 which calculates a position which is offset away from a given starting point by a specified distance along a geodesic curve which passes through the starting point at a given position angle. It can only be used with 2-dimensional Frames.
(3)
The Frame class has a new method called astAxDistance which returns the increment between two supplied axis values. For axes belonging to SkyFrames, the returned value is normalized into the range ±π.
(4)
The Frame class has a new method called astAxOffset which returns an axis value a given increment away from a specified axis value. For axes belonging to SkyFrames, the returned value is normalized into the range ±π (for latitude axes) or zero to 2π (for longitude axes).
(5)
The Plot class has a new method called astGenCurve which allows generalised user-defined curves to be drawn. The curve is defined by a user-supplied Mapping which maps distance along the curve into the corresponding position in the current Frame of the Plot. The new method then maps these current Frame position into graphics coordinates, taking care of any non-linearities or discontinuities in the mapping.
(6)
The Plot class has a new method called astGrfSet which allows the underlying primitive graphics functions to be selected at run-time. Previously, the functions used by the Plot class to produce graphics could only be selected at link-time, using the options of the ast_link command. The new Plot method allows an application to over-ride the functions established at link-time, by specifying alternative primitive graphics routines. In addition, the two new Plot methods astGrfPush and astGrfPop allow the current graphics routines to be saved and restore on a first-in-last-out stack, allowing temporary changes to be made to the set of registered graphics routines.
(7)
The DrawAxes attribute of the Plot class can now be specified independantly for each axis, by appending the axis index to the end of the attribute name.
(8)
A bug has been fixed in the Plot class which could result in axis labels being drawn on inappropriate edges of the plotting box when using “interior” labelling.
(9)
A bug has been fixed in the IntraMap class which could cause IntraMaps to be corrupted after transforming any points.
(10)
Bugs have been fixed in the FitsChan class which could cause inappropriate ordering of headers within a FitsChan when writing or reading objects using NATIVE encodings.
(11)
A bug has been fixed in the FitsChan class which could cause the celestial longitude of a pixel to be estimated incorrectly by 180 degrees if the reference point is at either the north or the south pole.

H.8 Changes Introduced in V1.8-2

The following describes the most significant changes which have occurred in the AST library between versions V1.7 and V1.8-2:

(1)
The SkyFrame class has a new attribute called NegLon which allows longitude values to be displayed in the range π to + π, instead of the usual range zero to 2.π.
(2)
Some new functions (astAngle, astAxAngle, astResolve, astOffset2, astAxOffset, astAxDistance) have been added to the Frame class to allow navigation of the coordinate space to be performed without needing to know the underlying geometry of the co-ordinate system (for instance, whether it is Cartesian or spherical).

Note, version 1.8-1 contained many of these facilities, but some have been changed in version 1.8-2. Particularly, positions angles are now referred to the second Frame axis for all classes of Frames (including SkyFrames), and the astBear function has been replaced by astAxAngle.

H.9 Changes Introduced in V1.8-3

The following describes the most significant changes which occurred in the AST library between versions V1.8-2 and V1.8-3:

(1)
A new method called astDecompose has been added to the Mapping class which enables pointers to be obtained to the component parts of CmpMap and CmpFrame objects.
(2)
Functions within proj.c and wcstrig.c have been renamed to avoid name clashes with functions in more recent versions of Mark Calabretta’s wcslib library.

H.10 Changes Introduced in V1.8-4

The following describes the most significant changes which occurred in the AST library between versions V1.8-3 and V1.8-4:

(1)
The FitsChan class has a new attribute called DefB1950 which can be used to select the default reference frame and equinox to be used if a FitsChan with foreign encoding contains no indication of the reference frame or equinox.
(2)
A bug has been fixed in the FitsChan class which could prevent astWrite from creating a set of FITS headers from an otherwise valid FrameSet, when when using FITS-AIPS encoding.
(3)
A bug has been fixed in the FitsChan class which could cause astRead to mis-interpret the FITS CROTA keyword when using FITS-AIPS encoding.

H.11 Changes Introduced in V1.8-5

The following describes the most significant changes which occurred in the AST library between versions V1.8-4 and V1.8-5:

(1)
The Plot class defines new graphical elements Axis1, Axis2, Grid1, Grid2, NumLabs1, NumLabs2, TextLab1, TextLab2, Ticks1 and Ticks2. These allow graphical attributes (colour, width, etc) to be set for each axis individually. Previously, graphical attributes could only be set for both axes together, using graphical elements Axes, Grid, NumLabs, TextLabs and Ticks.

H.12 Changes Introduced in V1.8-7

The following describes the most significant changes which occurred in the AST library between versions V1.8-5 and V1.8-7:

(1)
A new attribute called CarLin has been added to the FitsChan class which controls the way CAR projections are handled when reading a FrameSet from a non-native FITS header. Some FITS writers use a CAR projection to represent a simple linear transformation between pixel coordinates and celestial sky coordinates. This is not consistent with the definition of the CAR projection in the draft FITS-WCS standard, which requires the resultant Mapping to include a 3D rotation from native spherical coordinates to celestial spherical coordinates, thus making the Mapping non-linear. Setting CarLin to 1 forces astRead to ignore the FITS-WCS standard and treat any CAR projections as simple linear Mappings from pixel coordinates to celestial coordinates.
(2)
A bug has been fixed which could result in axis Format attributes set by the user being ignored under certain circumstances.
(3)
A bug in the way tick marks positions are selected in the Plot class has been fixed. This bug could result in extra ticks marks being displayed at inappropriate positions. This bug manifested itself, for instance, if the Mapping represented by the Plot was a simple Cartesian to Polar Mapping. In this example, the bug caused tick marks to be drawn at negative radius values.
(4)
A bug has been fixed which could prevent attribute settings from being read correctly by astSet, etc., on certain platforms (MacOS, for instance).

H.13 Changes Introduced in V1.8-8

The following describes the most significant changes which occurred in the AST library between versions V1.8-7 and V1.8-8:

(1)
A bug has been fixed in the FitsChan class which could cause problems when creating a FrameSet from a FITS header containing WCS information stored in the form of Digitised Digitised Sky Survey (DSS) keywords. These problems only occurred for DSS fields in the southern hemisphere, and resulted in pixel positions being mapped to sky positions close to the corresponding northern hemispshere field.
(2)
A new method called astBoundingBox has been added to the Plot class. This method returns the bounding box of the previous graphical output produced by a Plot method.
(3)
A new attribute called Invisible has been added to the Plot class which suppresses the graphical output normally produced by Plot methods. All the calculations needed to produce the normal output are still performed however, and so the bounding box returned by the new astBoundingBox method is still usable.
(4)
Bugs have been fixed related to the appearance of graphical output produced by the Plot class. These bugs were to do with the way in which graphical elements relating to a specific axis (e.g. Colour(axis1), etc.) interacted with the corresponding generic element (e.g. Colour(axes), etc.).

H.14 Changes Introduced in V1.8-13

The following describes the most significant changes which occurred in the AST library between versions V1.8-8 and V1.8-13:

(1)
The FitsChan class has been modified so that LONPOLE keywords are only produced by astWrite when necessary. For zenithal projections such as TAN, the LONPOLE keyword can always take its default value and so is not included in the FITS header produced by astWrite. Previously, the unnecessary production of a LONPOLE keyword could prevent FrameSets being written out using encodings which do not support the LONPOLE keyword (such as FITS-IRAF).
(2)
The FitsChan class has been modified to retain leading and trailing spaces within COMMENT cards.
(3)
The FitsChan class has been modified to only use CTYPE comments as axis labels if all non-celestial axes have unique non-blank comments (otherwise the CTYPE keyword values are used as labels).
(4)
The FitsChan class has been modified so that it does not append a trailing “Z” character to the end of DATE-OBS keyword values.
(5)
The FitsChan class has been modified to use latest list of FITS-WCS projections, as described in the FITS-WCS paper II, “Representations of celestial coordinates in FITS” (Calabretta & Greisen, draft dated 23 April 2002). Support has been retained for the polynomial correction terms which previous drafts have allowed to be associated with TAN projections.
(6)
The WcsMap class has additional projection types of AST__TPN (which implements a distorted TAN projection) and AST__SZP. The AST__TAN projection type now represents a simple TAN projection and has no associated projection parameters. In addition, the usage of projection parameters has been brought into line with the the FITS-WCS paper II.
(7)
The WcsMap class has been modified so that a “get” operation on a projection parameter attribute will return the default value defined in the FITS-WCS paper II if no value has been set for the attribute. Previously, a value of AST__BAD was returned in such a situation.
(8)
The Frame class has new attributes Top(axis) and Bottom(axis) which allow a “plottable range” to be specified for each Frame axis. The grid produced by the astGrid method will not extend beyond these limits.

H.15 Changes Introduced in V2.0

Note, Frame descriptions created using AST V2.0 will not be readable by applications linked with earlier versions of AST. This applies to Frame descriptions created using:

Applications must be re-linked with AST V2.0 in order to be able to read Frame descriptions created by AST v2.0.

The following describes the most significant changes which have occurred in the AST library between versions V1.8-13 and V2.0 (the current version):

(1)
The default value for the Domain attribute provided by the CmpFrame class has been changed from “CMP” to a string formed by concatenating the Domain attributes of the two component Frames, separated by a minus sign. If both component Domains are blank, then the old default of “CMP” is retained for the CmpFrame Domain.
(2)
The implementation of the astWrite function within the FitsChan class has been modified. It will now attempt to produce a set of FITS header cards to describe a FrameSet even if the number of axes in the Current Frames is greater than the number in the Base Frame (that is, if there are more WCS axes than pixel axes). This has always been possible with NATIVE encoding, but has not previously been possible for foreign encodings. The WCSAXES keyword is used to store the number of WCS axes in the FITS header.
(3)
Another change to the astWrite function within the FitsChan class is that the ordering of “foreign” axes (i.e. CTYPE keywords) is now chosen to make the CD (or PC) matrix as diagonal as possible - any element of axis transposition is removed by this re-ordering as recommended in FITS-WCS paper I. Previously the ordering was determined by the order of the axes in the Current Frame of the supplied FrameSet. This change does not affect NATIVE encoding.
(4)
Support for spectral coordinate systems has been introduced throught the addition of two new classes, SpecFrame and SpecMap. The SpecFrame is a 1-dimensional Frame which can be used to describe positions within an electromagnetic spectrum in various systems (wavelength, frequency, various forms of velocity, etc.) and referred to various standards of rest (topocentric, geocentric, heliocentric LSRK, etc.). The SpecMap is a Mapping which can transform spectral axis values between these various systems and standards of rest. Note, FitsChans which have a foreign encoding (i.e. any encoding other than NATIVE) are not yet able to read or write these new classes.
(5)
Facilities have been added to the Frame class which allow differences in axis units to be taken into account when finding a Mapping between two Frames. In previous versions of AST, the Unit attribute was a purely descriptive item intended only for human readers - changing the value of Unit made no difference to the behaviour of the Frame. As of version 2.0, the Unit attribute can influence the nature of the Mappings between Frames. For instance, if the astFindrame or astConvert method is used to find the Mapping between an Axis with Unit set to “m” and another Axis with Unit set to “km”, then the method will return a ZoomMap which introduces a scaling factor of 0.001 between the two axes. These facilities assume that units are specified following the rules included in FITS-WCS paper I (Representation of World Coordinates in FITS, Greisen & Calabretta).

In order to minimise the risk of breaking existing software, the default behaviour for simple Frames is to ignore the Unit attribute (i.e. to retain the previous behaviour). However, the new Frame method astSetActiveUnit may be used to “activate” (or deactivate) the new facilities within a specific Frame. Note, the new SpecFrame class is different to the simple Frame class in that the new facilities for handling units are always active within a SpecFrame.

(6)
The System and Epoch attributes fo the SkyFrame class have been moved to the parent Frame class. This enables all sub-classes of Frame (such as the new SpecFrame class) to share these attributes, and to provide suitable options for each class.
(7)
The Frame class has a new attribute called AlignSystem, which allows control over the alignment process performed by the methods astFindFrame and astConvert.
(8)
The CmpFrame class has been modified so that attributes of a component Frame can be accessed without needing to extract the Frame first. To do this, append an axis index to the end of the attribute name. For instance, if a CmpFrame contains a SpecFrame and a SkyFrame (in that order), then the StdOfRest attribute of the SpecFrame can be referred to as the “StdOfRest(1)” attribute of the CmpFrame. Likewise, the Equinox attribute of the SkyFrame can be accessed as the “Equinox(2)” (or equivalently “Equinox(3)”) attribute of the CmpFrame. The “System(1)” attribute of the CmpFrame will refer to the System attribute of the SpecFrame, whereas the “System(2)” and “System(3)” attributes of the CmpFrame will refer to the System attribute of the SkyFrame (the “System” attribute without an axis specifier will refer to the System attribute of the CmpFrame as a whole, since System is an attribute of all Frames, and a CmpFrame is a Frame and so has its own System value which is independant of the System attributes of its component Frames).
(9)
The algorithms used by the Plot class for determining when to omit overlapping axis labels, and the abbreviation of redundant leading fields within sexagesimal axis labels, have been improved to avoid some anomolous behaviour in previous versions.
(10)
The curve drawing algorithm used by the Plot class has been modified to reduce the chance of it “missing” small curve sections, such as may be produced if a grid line cuts across the plot very close to a corner. Previously, these missed sections could sometimes result in axis labels being omitted.
(11)
A new function (astVersion) has been added to return the version of the AST library in use.
(12)
Bugs have been fixed in the Plot class which caused serious problems when plotting high precision data. These problems could range from the omission of some tick marks to complete failure to produce a plot.

Programs which are statically linked will need to be re-linked in order to take advantage of these new facilities.

H.16 Changes Introduced in V3.0

The following describes the most significant changes which occurred in the AST library between versions V2.0 and V3.0:

(1)
Many changes have been made in the FitsChan class in order to bring the FITS-WCS encoding into line with the current versions of the FITS-WCS papers (see http://www.atnf.csiro.au/people/mcalabre/WCS/):
(2)
The SkyFrame class now supports two new coordinate systems “ICRS” and “HELIOECLIPTIC”. The default for the System attribute for SkyFrames has been changed from “FK5” to “ICRS”.
(3)
The astRate function has been added which allows an estimate to be made of the rate of change of a Mapping output with respect to one of the Mapping inputs.
(4)
All attribute names for Frames of any class may now include an optional axis specifier. This includes those attributes which describe a property of the whole Frame. For instance, the Domain attribute may now be specified as “Domain(1)” in addition to the simpler “Domain”. In cases such as this, where the attribute describes a property of the whole Frame, axis specifiers will usually be ignored. The exception is that a CmpFrame will use the presence of an axis specifier to indicate that the attribute name relates to the primary Frame containing the specified axis, rather than to the CmpFrame as a whole.
(5)
A new subclass of Mapping, the PolyMap, has been added which performs a general N-dimensional polynomial mapping.
(6)
A new subclass of Mapping, the GrismMap, has been added which models the spectral dispersion produced by a grating, prism or grism.
(7)
A new subclass of Mapping, the ShiftMap, has been added which adds constant values onto all coordinates (this is equivalent to a WinMap with unit scaling on all axes).
(8)
Minor bugs have been fixed within the Plot class to do with the choice and placement of numerical axis labels.
(9)
The SphMap class has a new attribute called PolarLong which gives the longitude value to be returned when a Cartesian position corresponding to either the north or south pole is transformed into spherical coordinates.
(10)
The WcsMap class now assigns a longitude of zero to output celestial coordinates which have a latitude of plus or minus 90 degrees.
(11)
The NatLat and NatLon attributes of the WcsMap class have been changed so that they now return the fixed native coordinates of the projection reference point, rather than the native coordinates of the user-defined fiducial point.
(12)
Notation has been changed in both the WcsMap and FitsChan classes to reflect the convention used in the FITS-WCS papers that index “i” refers to a world coordinate axis, and index “j” refers to a pixel axis.
(13)
Changes have been made to several Mapping classes in order to allow the astSimplify function to make simplifications in a CmpMap which previously were not possible.
(14)
The SlaMap class has been extended by the addition of conversions between FK5 and ICRS coordinates, and between FK5 and helio-ecliptic coordinates.
(15)
The SpecMap class has been changed to use the equation for the refractive index of air as given in the current version of FITS-WCS paper III. Also, the forward and inverse transformations between frequency and air-wavelength have been made more compatible by using an iterative procedure to calculate the inverse.

H.17 Changes Introduced in V3.1

The following describes the most significant changes which have occurred in the AST library between versions V3.0 and V3.1 (the current version):

(1)
Addition of a new class called XmlChan - a Channel which reads and writes AST objects in the form of XML.
(2)
A bug has been fixed in the Plot class which could cause incorrect graphical attributes to be used for various parts of the plot if either axis has no tick marks (i.e. if both major and minor tick marks have zero length).

Programs which are statically linked will need to be re-linked in order to take advantage of these new facilities.

H.18 Changes Introduced in V3.2

The following describes the most significant changes which have occurred in the AST library between versions V3.1 and V3.2:

(1)
A new function astPutCards has been added to the FitsChan class. This allows multiple concatenated header cards to be stored in a FitsChan in a single call, providing an alternative to the existing astPutCards function.
(2)
Some signficant changes have been made to the simplification of Mappings which should resultin a greater degree of simplication taking place.Some bugs have also been fixed which could result in an infinite loop being entered when attempting to simplify certain Mappings.
(3)
The FitsChan class now translates the spectral algorithm codes “-WAV”, “-FRQ” and “-VEL” (specified in early drafts of paper III) to the corresponding “-X2P” form when reading a spectral axis description from a set of FITS header cards.
(4)
A bug has been fixed in the FitsChan class which could cause keywords associated with alternate axis descriptions to be mis-interpreted.
(5)
The Plot class now provides facilities for modifying the appearance of sub-strings within text strings such as axis labels, titles, etc, by producing super-scripts, sub-scripts, changing the font colour, size, etc. See attribute Escape.
(6)
The default value of the Tol attribute of the Plot class has been changed from 0.001 to 0.01. This should not usually cause any significant visible change to the plot, but should make the plotting faster. You may need to set a lower value for Tol if you are producing a particularly large plot.
(7)
The algorithm for finding the default value for the Gap attribute has been changed. This attribute specifies the gap between major axis values in an annotated grid drawn by the Plot class. The change in algorithm may cause the default value to be different to previous versions in cirtain circumstances.
(8)
Some bugs have been fixed in the Plot class which could cause the system to hang for a long time while drawing certain all-sky grids (notable some of the FITS Quad-cube projections).
(9)
The SkyAxis class has extended the Format attribute by the addition of the “g” option. this option is similar to the older “l” option in that it results in characters (“h”, “m”, “s”, etc) being used as delimiters between the sexagesimal fields of the celestial position. The difference is that the “g” option includes graphics escape sequences in the returned formatted string which result in the field delimiter characters being drawn as super-scripts when plotted as numerical axis values by a Plot.
(10)
The Plot class has been extended to include facilities for producing logarithmic axes. See attributes LogPlot, LogTicks, LogGap and LogLabel.
(11)
New functions astGCap and astGScales have been added to the interface defined by file grf.h. The ast_link command has been modified so that the -mygrf switch loads dummy versions of the new grf functions. This means that applications should continue to build without any change. However, the facilities for interpreting escape sequences within strings drawn by the Plot class will not be available unless the new grf functions are implemented. If you choose to implement them, you should modify your linking procedure to use the -grf switch in place of the older -mygrf switch. See the description of the ast_link command for details of the new switches. Also note that the astGQch function, whilst included in verb+grf.h+ in pervious versions of AST, was not actually called. As of this version of AST, calls are made to the astGQch function, and so any bugs in the implementation of astGQch may cause spurious behaviour when plotting text strings.
(12)
A new ’static’ method called astEscapes has been added which is used to control and enquire whether astGetC and astFormat will strip any graphical escape sequences which may be present out of the returned value.
(13)
New attribute XmlPrefix has been added to the XmlChan class. It allows XML written by the XmlChan class to include an explicit namespace prefix on each element.
(14)
New attribute XmlFormat has been added to the XmlChan class. It specifies the format in which AST objects should be written.
(15)
A new class of Mapping, the TranMap, has been introduced. A TranMap takes its forward transformation from an existing Mapping, and its inverse transformation from another existing Mapping.
(16)
A bug has been fixed in WcsMap which caused error reports to include erroneous axis numbers when referring to missing parameter values.

H.19 Changes Introduced in V3.3

The following describes the most significant changes which have occurred in the AST library between versions V3.2 and V3.3:

(1)
Options have been added to the SkyFrame class which allows the origin of celestial coordinates to be moved to any specified point. See the new attributes SkyRef, SkyRefIs, SkyRefP and AlignOffset.
(2)
An option has been added to the FitsChan class which allows extra Frames representing cartesian projection plane coordinates (“intermediate world coordinates” in the parlance of FITS-WCS) to be created when reading WCS information from a foreign FITS header. This option is controlled by a new attribute called Iwc.
(3)
The FitsChan class which been modified to interpret FITS-WCS CAR projection headers correctly if the longitude reference pixel (CRPIX) is very large.
(4)
The FITS-AIPS++ encoding in the FitsChan class now recognised spectral axes if they conform to the AIPS convention in which the spectral axis is descirbed by a CTYPE keyword od the form "AAAA-BBB" where “AAAA” is one of FREQ, VELO or FELO, and “BBB” is one of LSR, LSD, HEL or OBS. Such spectral axes can be both read and written.
(5)
The FitsChan class now has a FITS-AIPS++ encoding which represents WCS information using FITS header cards recognised by the AIPS++ project. Support for spectral axes is identical to the FITS-AIPS encoding.
(6)
The organisation of the AST distribution and the commands for building it have been changed. Whereas AST used to be built and installed with ./mk build; ./mk install, it now builds using the more standard idiom ./configure; make; make install. The installation location is controlled by the --prefix argument to ./configure (as is usual for other packages which use this scheme). Note that the INSTALL environment variable now has a different meaning to that which it had before, and it should generally be unset. Also, there is no need to set the SYSTEM variable.
(7)
Shared libraries are now installed in the same directory as the static libraries. In addition, links to sharable libraries are installed with names which include version information, and “libtool libraries” are also installed (see http://www.gnu.org/software/libtool/manual.html).
(8)
The ast_dev script has been removed. Instead, the location of the AST include files should be specified using the -I option when compiling.

H.20 Changes Introduced in V3.4

The following describes the most significant changes which have occurred in the AST library between versions V3.3 and V3.4:

(1)
The Mapping class has a new method (astLinearApprox) which calculates the co-efficients of a linear approximation to a Mapping.
(2)
The Format attribute for simple Frames and SkyFrames has been extended. It has always been possible, in both classes, to specify a precision by including a dot in the Format value followed by an integer (e.g.dms.1” for a SkyFrame, or “%.10g” for a simple Frame). The precision can now also be specified using an asterisk in place of the integer (e.g.dms.*” or “%.*g”). This causes the precision to be derived on the basis of the Digits attribute value.
(3)
The Plot class has been changed so that the default value used for the Digits attribute is chosen to be the smallest value which results in no pair of adjacent labels being identical. For instance, if an annotated grid is being drawn describing a SkyFrame, and the Format(1) value is set to “hms.*g” (the “g” causes field delimiters to be drawn as superscripts), and the Digits(1) value is unset, then the seconds field will have a number of decimal places which results in no pair of labels being identical.
(4)
Addition of a new class classed DSBSpecFrame. This is a sub-class of SpecFrame which can be used to describe spectral axes associated with dual sideband spectral data.
(5)
The FitsChan class will now read headers which use the old “-GLS” projection code, converting them to the corresponding modern “-SFL” code, provided that the celestial axes are not rotated.
(6)
The FitsChan class has a new Encoding, “FITS-CLASS”, which allows the reading and writing of FITS headers using the conventions of the CLASS package - see http://www.iram.fr/IRAMFR/GILDAS/doc/html/class-html/class.html).

H.21 Changes Introduced in V3.5

The following describes the most significant changes which have occurred in the AST library between versions V3.4 and V3.5:

(1)
AST now provides facilities for representing regions of various shapes within a coordinate system. The Region class provides general facilities which are independent of the specific shape of region being used. Various sub-classes of Region are also now available which provide means of creating Regions of specific shape. Facilities provided by the Region class include testing points to see if they are inside the Region, testing two Regions for overlap, transforming Regions from one coordinate system to another etc.
(2)
A new class of 1-dimensional Frame called FluxFrame has been added which can be used to describe various systems for describing ovserved value at a single fixed spectral position.
(3)
A new class of 2-dimensional Frame called SpecFluxFrame has been added which can be used to describe a 2-d frame spanned by a spectral position axis and and an observed value axis.
(4)
A new class of Mapping called RateMap has been added. A RateMap encapsulates a previously created Mapping. The inputs of the RateMap correspond to the inputs of the encapsulated Mapping. All RateMaps have just a single output which correspond to the rate of change of a specified output of the encapsulated Mapping with respect to a specified input.
(5)
The SkyFrame class now supports a value of “J2000” for System. This system is an equatorial system based on the mean dynamical equator and equinox at J2000, and differs slightly from an FK5(J2000) system.
(6)
A new class called KeyMap has been added. A KeyMap can be used to store a collection of vector or scalar values or Objects, indexed by a character string rather than an integer.
(7)
The parameter list for the astRate method of the Mapping class has been modified. It no longer returns a second derivative estimate. Existing code which uses this method will need to be changed.
(8)
Methods (astSetFits<X>) have been added to the FitsChan class to allow values for named keywords to be changed or added.

H.22 Changes Introduced in V3.6

The following describes the most significant changes which occurred in the AST library between versions V3.5 and V3.6:

(1)
If the Format attribute associated with an axis of a SkyFrame starts with a percent character (“%”), then axis values are now formatted and unformatted as a decimal radians value, using the Format syntax of a simple Frame.
(2)
The Plot class has a new attribute called Clip which controls the clipping performed by AST at the plot boundary.
(3)
The keys used to label components of the PolyMap structure when a PolyMap is written out through a Channel have been changed. The new keys are shorter than the old keys and so can written succesfully to a FitsChan. The new PolyMap class always writes new styles keys but can read either old or new style keys. Consequently, PolyMap dumps written by this version of AST cannot be read by older versions of AST.
(4)
A mimimal cut down subset of the C version of SLALIB is now included with the AST distribution and built as part of building AST. This means that it is no longer necessary to have SLALIB installed separately at your site. The SLALIB code included with AST is distrubuted under the GPL. The default behaviour of the ast_link script is now to link with this internal slalib subset. However, the “-csla” option can still be used to force linking with an external full C SLALIB library. A new option “-fsla” has been introduced which forces linking with the external full Fortran SLALIB library.

H.23 Changes Introduced in V3.7

The following describes the most significant changes which occurred in the AST library between versions V3.6 and V3.7:

(1)
Support for time coordinate systems has been introduced throught the addition of two new classes, TimeFrame and TimeMap. The TimeFrame is a 1-dimensional Frame which can be used to describe moments in time (either absolute or relative) in various systems (MJD, Julian Epoch, etc.) and referred to various time scales (TAI, UTC, UT1, GMST, etc). The TimeMap is a Mapping which can transform time values between these various systems and time scales. Note, FitsChans which have a foreign encoding (i.e. any encoding other than NATIVE) are not able to read or write these new classes.

H.24 Changes Introduced in V4.0

The following describes the most significant changes which occurred in the AST library between versions V3.7 and V4.0:

(1)
Experimental support for reading IVOA Space-Time-Coordinates (STC-X) descriptions using the XmlChan class has been added. Support is included for a subset of V1.20 of the draft STC specification.
(2)
A new set of methods (AST_REBIN<X>/astRebin<X>) has been added to the Mapping class. These are flux-conserving alternatives to the existing AST_RESAMPLE<X>/astResample<X> methods.

H.25 Changes Introduced in V4.1

The following describes the most significant changes which occurred in the AST library between versions V4.0 and V4.1:

(1)
A new control flag has been added to the AST_RESAMPLE<X>/astResample<X> functions which produces approximate flux conservation.
(2)
New constants AST__SOMB and AST__SOMBCOS have been added to ast.h. These specify kernels for astResample and astRebin based on the “Sombrero” function ( 2 J1(x)/x where J1(x) is the first order Bessel function of the first kind).
(3)
The SkyFrame class now supports a System value of AZEL corresponding to horizon (azimuth/elevation) coordinates.
(4)
The FitsChan class allows the non-standard strings “AZ–” and “EL–” to be used as axis types in FITS-WCS CTYPE keyword values.
(5)
The Frame class now has attributes ObsLon and ObsLat to specify the geodetic longitude and latitude of the observer.
(6)
The ClockLon and ClockLat attributes have been removed from the TimeFrame class. Likewise, the GeoLon and GeoLat attributes have been removed from the SpecFrame class. Both classes now use the ObsLon and ObsLat attributes of the parent Frame class instead. However, the old attribute names can be used as synonyms for ObsLat and ObsLon. Also, dumps created using the old scheme can be read succesfully by AST V4.1 and converted to the new form.
(7)
A new function astMapSplit has been added to the Mapping class. This splits a Mapping into two component Mappings which, when combined in parallel, are equivalent to the original Mapping.
(8)
The default value for the SkyRefIs attribute has been changed from “Origin” to “Ignored”. This means that if you want to use a SkyFrame to represent offsets from some origin position, you must now set the SkyRefIs attribute explicitly to either “Pole” or “Origin”, in addition to assigning the required origin position to the SkyRef attribute.

H.26 Changes Introduced in V4.2

The following describes the most significant changes which occurred in the AST library between versions V4.1 and V4.2:

(1)
The SideBand attribute of the DSBSpecFrame class can now take the option “LO” in addition to “USB” and “LSB”. The new option causes the DSBSpecFrame to represent the offset from the local oscillator frequency, rather than either of the two sidebands.
(2)
The FitsChan class has been changed so that it writes out a VELOSYS keyword when creating a FITS-WCS encoding (VELOSYS indicates the topocentric apparent velocity of the standard of rest). FitsChan also strips out VELOSYS keywords when reading a FrameSet from a FITS-WCS encoding.
(3)
The FitsChan class has a new method called astRetainFits that indicates that the current card in the FitsChan should not be stripped out of the FitsChan when an AST Object is read from the FitsChan. Unless this method is used, all cards that were involved in the creation of the AST Object will be stripped from the FitsChan afte a read operation.
(4)
A problem with unaligned memory access that could cause bus errors on Solaris has been fixed.
(5)
A new read-only attribute called ObjSize has been added to the base Object Class. This gives the number of bytes of memory occupied by the Object. Note, this is the size of the internal in-memory representation of the Object, not the size of the textual representation produced by writing the Object out through a Channel.
(6)
A new function astTune has been added which can be used to get and set global AST tuning parameters. At the moment there are only two such parameter, both of which are concerned with memory management within AST.
(7)
A new method called astTranGrid has been added to the Mapping class. This method creates a regular grid of points covering a rectangular region within the input space of a Mapping, and then transforms this set of points into the output space of the Mapping, using a piecewise-continuous linear approximation to the Mapping if appropriate in order to achive higher speed.
(8)
A new subclass of Mapping has been added called SwitchMap. A SwitchMap represents several alternate Mappings, each of which is used to transforms input positions within a different region of the input coordinate space.
(9)
A new subclass of Mapping has been added called SelectorMap. A SelectorMap tests each input position to see if it falls within one of several Regions. If it does, the index of the Region containing the input position is returned as the Mapping output.
(10)
The behaviour of the astConvert method when trying to align a CmpFrame with another Frame has been modified. If no conversion between positions in the Frame and CmpFrame can be found, an attempt is now made to find a conversion between the Frame and one of two component Frames contained within the CmpFrame. Thus is should now be possible to align a SkyFrame with a CmpFrame containing a SkyFrame and a SpecFrame (for instance). The returned Mapping produces bad values for the extra axes (i.e. for the SpecFrame axis in the above example).
(11)
The “ast_link_adam” and “ast_link” scripts now ignore the -fsla and -csla options, and always link against the minimal cut-down version of SLALIB distributed as part of AST.

H.27 Changes Introduced in V4.3

The following describes the most significant changes which occurred in the AST library between versions V4.2 and V4.3:

(1)
The astGetFitsS function now strips trailing white space from the returned string, if the original string contains 8 or fewer characters
(2)
The SpecFrame class has a new attribute called SourceSys that specified whether the SourceVel attribute (which specifies the rest frame of the source) should be accessed as an apparent radial velocity or a redshift. Note, any existing software that assumes that SourceVel always represents a velocity in km/s should be changed to allow for the possibility of SourceVel representing a redshift value.

H.28 Changes Introduced in V4.4

The following describes the most significant changes which occurred in the AST library between versions V4.3 and V4.4:

(1)
The astFindFrame function can now be used to search a CmpFrame for an instance of a more specialised class of Frame (SkyFrame, TimeFrame, SpecFrame, DSBSpecFrame or FluxFrame). That is, if an instance of one of these classes is used as the “template” when calling astFindFrame, and the “target” being searched is a CmpFrame (or a FrameSet in which the current Frame is a CmpFrame), then the component Frames within the CmpFrame will be searched for an instance of the supplied template Frame, and, if found, a suitable Mapping (which will include a PermMap to select the required axes from the CmpFrame) will be returned by astFindFrame. Note, for this to work, the MaxAxes and MinAxes attributes of the template Frame must be set so that they cover a range that includes the number of axes in the target CmpFrame.
(2)
The SkyFrame, SpecFrame, DSBSpecFrame, TimeFrame and FluxFrame classes now allow the MaxAxes and MinAxes attributes to be set freely to any value. In previous versions of AST, any attempt to change the value of MinAxes or MaxAxes was ignored, resulting in them always taking the default values.
(3)
The DSBSpecFrame class has a new attribute called AlignSB that specifies whether or not to take account of the SideBand attributes when aligning two DSBSpecFrames using astConvert.
(4)
The Frame class has a new attribute called Dut1 that can be used to store a value for the difference between the UT1 and UTC timescales at the epoch referred to by the Frame.
(5)
The number of digits used to format the Frame attributes ObsLat and ObsLon has been increased.
(6)
The use of the SkyFrame attribute AlignOffset has been changed. This attribute is used to control how two SkyFrames are aligned by astConvert. If the template and target SkyFrames both have a non-zero value for AlignOffset, then alignment occurs between the offset coordinate systems (that is, a UnitMap will always be used to align the two SkyFrames).
(7)
The Plot class has a new attribute called ForceExterior that can be used to force exterior (rather than interior) tick marks to be produced. By default, exterior ticks are only produced if this would result in more than 3 tick marks being drawn.
(8)
The TimeFrame class now supports conversion between angle based timescales such as UT1 and atomic based timescales such as UTC.

H.29 Changes Introduced in V4.5

The following describes the most significant changes that occurred in the AST library between versions V4.4 and V4.5:

(1)
All FITS-CLASS headers are now created with a frequency axis. If the FrameSet supplied to astWrite contains a velocity axis (or any other form of spectral axis) it will be converted to an equivalent frequency axis before being used to create the FITS-CLASS header.
(2)
The value stored in the FITS-CLASS keyword “VELO-LSR” has been changed from the velocity of the source to the velocity of the reference channel.
(3)
Addition of a new method call astPurgeWCS to the FitsChan class. This method removes all WCS-related header cards from a FitsChan.
(4)
The Plot class has a new attribute called GrfContext that can be used to comminicate context information between an application and any graphics functions registered with the Plot class via the astGrfSet function.
(5)
Functions registered with the Plot class using astGrfSet now take a new additional integer parameter, “grfcon”. The Plot class sets this parameter to the value of the Plot’s GrfContext attribute before calling the graphics function. NOTE, THIS CHANGE WILL REQUIRE EXISTING CODE THAT USES astGrfSet TO BE MODIFIED TO INCLUDE THE NEW PARAMETER.
(6)
The astRebinSeq functions now have an extra parameter that is used to record the total number of input data values added into the output array. This is necessary to correct a flaw in the calculation of output variances based on the spread of input values. NOTE, THIS CHANGE WILL REQUIRE EXISTING CODE TO BE MODIFIED TO INCLUDE THE NEW PARAMETER (CALLED "NUSED").
(7)
Support has been added for the FITS-WCS “HPX” (HEALPix) projection.
(8)
A new flag “AST__VARWGT” can be supplied to astRebinSeq. This causes the input data values to be weighted using the reciprocals of the input variances (if supplied).
(9)
The Frame class has a new read-only attribute called NormUnit that returns the normalised value of the Unit attribute for an axis. Here, “normalisation” means cancelling redundant units, etc. So for instance, a Unit value of “s*(m/s)” would result in a NormUnit value of “m”.
(10)
A new function astShowMesh has been added to the Region class. It displays a mesh of points covering the surface of a Region by writing out a table of axis values to standard output.
(11)
The Plot class now honours the value of the LabelUp attribute even if numerical labels are placed around the edge of the Plot. Previously LabelUp was only used if the labels were drawn within the interior of the plot. The LabelUp attribute controls whether numerical labels are drawn horizontally or parallel to the axis they describe.
(12)
A bug has been fixed that could segmentation violations when setting attribute values.

H.30 Changes Introduced in V4.6

The following describes the most significant changes which have occurred in the AST library between versions V4.5 and V4.6:

(1)
The TimeFrame class now support Local Time as a time scale. The offset from UTC to Local Time is specified by a new TimeFrame attribute called LTOffset.
(2)
A new class called Plot3D has been added. The Plot3D class allows the creation of 3-dimensional annotated coordinate grids.
(3)
A correction for diurnal aberration is now included when converting between AZEL and other celestial coordinate systems. The correction is based on the value of the ObsLat Frame attribute (the geodetic latitude of the observer).
(4)
A bug has been fixed which caused the DUT1 attribute to be ignored by the SkyFrame class when finding conversions between AZEL and other celestial coordinate systems.

H.31 Changes Introduced in V5.0

The following describes the most significant changes which occurred in the AST library between versions V4.6 and V5.0:

(1)
The AST library is now thread-safe (assuming that the POSIX pthreads library is available when AST is built). Many of the macros defined in the ast.h header file have changed. It is therefore necessary to re-compile all source code that includes ast.h.
(2)
New methods astLock and astUnlock allow an AST Object to be locked for exclusive use by a thread.
(3)
The TimeFrame class now support Local Time as a time scale. The offset from UTC to Local Time is specified by a new TimeFrame attribute called LTOffset.
(4)
The Channel class has a new attribute called Strict which controls whether or not to report an error if unexpected data items are found within an AST Object description read from an external data source. Note, the default behaviour is now not to report such errors. This differs from previous versions of AST which always reported an error is unexpected input items were encountered.

H.32 Changes Introduced in V5.1

The following describes the most significant changes which occurred in the AST library between versions V5.0 and V5.1:

(1)
The astUnlock function now has an extra parameter that controls whether or not an error is reported if the Object is currently locked by another thread.
(2)
The Prism class has been modified so that any class of Region can be used to define the extrusion axes. Previously, only a Box or Interval could be used for this purpose.
(3)
The values of the AST__THREADSAFE macro (defined in ast.h) have been changed from “yes” and “no” to “1” and “0”.
(4)
Improvements have been made to the way that Prisms are simplified when astSimplify is called. The changes mean that more types of Prism will now simplify into a simpler class of Region.
(5)
The PointList class has a new method, astPoints, that copies the axis values from the PointList into a supplied array.
(6)
The PointList class has a new (read-only) attribute, ListSize, that gives the number of points stored in the PointList.
(7)
The handling of warnings within different classes of Channel has been rationalised. The XmlStrict attribute and astXmlWarnings function have been removed. The same functionality is now available via the existing Strict attribute (which has had its remit widened), a new attribute called ReportLevel, and the new astWarnings function. This new function can be used on any class of Channel. Teh FitsChan class retains its long standing ability to store warnings as header cards within the FitsChan, but it also now stores warnings in the parent Channel structure, from where they can be retrieved using the astWarnings function.
(8)
A new function called astIntercept has been added to the Frame class. This function finds the point of intersection beteeen two geodesic curves.
(9)
A bug in the type-checking of Objects passed as arguments to constructor functions has been fixed. This bug could lead to applications crashing or showing strange behaviour if an inappropriate class of Object was supplied as an argument to a constructor.
(10)
The astPickAxes function will now return a Region, if possible, when applied to a Region. If this is not possible, a Frame will be returned as before.
(11)
The choice of default tick-mark for time axes has been improved, to avoid previous issues which could result in no suitable gap being found, or inappropriate tick marks when using formatted dates.
(12)
A new function called astTestFits has been added to the FitsChan class. This function tests a FitsChan to see if it contains a defined value for specified FITS keyword.
(13)
The AST__UNDEF<X> parameters used to flag undefined FITS keyword values have been removed. Use the new astTestFits function instead.
(14)
The astIsUndef<X> functions used to test FITS keyword values have been removed. Use the new astTestFits function instead.

H.33 Changes Introduced in V5.2

The following describes the most significant changes which occurred in the AST library between versions V5.1 and V5.2:

(1)
A new method called astSetFitsCM has been added to the FitsChan class. It stores a pure comment card in a FitsChan (that is, a card with no keyword name or equals sign).
(2)
A new attribute called ObsAlt has been added to the Frame class. It records the geodetic altitude of the observer, in metres. It defaults to zero. It is used when converting times to or from the TDB timescale, or converting spectral positions to or from the topocentric rest frame, or converting sky positions to or from horizon coordinates. The FitsChan class will include its effect when creating a set of values for the OBSGEO-X/Y/Z keywords, and will also assign a value to it when reading a set of OBSGEO-X/Y/Z keyword values from a FITS header.
(3)
The TimeMap conversions “TTTOTDB” and “TDBTOTT”, and the SpecMap conversions “TPF2HL” and “HLF2TP”, now have an additional argument - the observer’s geodetic altitude.
(4)
The Polygon class has been modified to make it consistent with the IVOA STC definition of a Polygon. Specifically, the inside of a polygon is now the area to the left of each edge as the vertices are traversed in an anti-clockwise manner, as seen from the inside of the celestial sphere. Previously, AST used the anti-clockwise convention, but viewed from the outside of the celestial sphere instead of the inside. Any Polygon saved using previous versions of AST will be identified and negated automatically when read by AST V5.2.
(5)
A new class of Channel, called StcsChan, has been added that allows conversion of suitable AST Objects to and from IVOA STC-S format.
(6)
A new method called astRemoveRegions has been added to the Mapping class. It searches a (possibly compound) Mapping (or Frame) for any instances of the AST Region class, and either removes them, or replaces them with UnitMaps (or equivalent Frames). It can be used to remove the masking effects of Regions from a compound Mapping or Frame.
(7)
A new method called astDownsize has been added to the Polygon class. It produces a new Polygon that contains a subset of the vertices in the supplied Polygon. The subset is chosen to retain the main features of the supplied Polygion, in so far as that is possible, within specified constraints.
(8)
A new constructor called astOutline has been added to the Polygon class. Given a 2D data array, it identifies the boundary of a region within the array that holds pixels with specified values. It then creates a new Polygon to describe this boundary to a specified accuracy.
(9)
A new set of methods, called astMapGetElem<X> has been added to the KeyMap class. They allow a single element of a vector valued entry to be returned.
(10)
A new attribute called KeyError has been added to the KeyMap Class. It controls whether the astMapGet... family of functions report an error if an entry with the requested key does not exist in the KeyMap.

H.34 Changes Introduced in V5.3

The following describes the most significant changes which occurred in the AST library between versions V5.2 and V5.3:

(1)
The details of how a Frame is aligned with another Frame by the astFindFrame and astConvert functions have been changed. The changes mean that a Frame can now be aligned with an instance of a sub-class of Frame, so long as the number of axes and the Domain values are consistent. For instance, a basic 2-dimensional Frame with Domain “SKY” will now align succesfully with a SkyFrame, conversion between the two Frames being achieved using a UnitMap.
(2)
The arrays that supply input values for astMapPut1<X> are now declared “const”.
(3)
Added method astMatchAxes to the Frame class. This method allows corresponding axes within two Frames to be identified.
(4)
The astAddFrame method can now be used to append one or more axes to all Frames in a FrameSet.

H.35 Changes Introduced in V5.3-1

The following describes the most significant changes which have occurred in the AST library between versions V5.3 and V5.3-1:

(1)
The utility functions provided by the AST memory management layer are now documented in an appendix.
(2)
The KeyMap class now supports entries that have undefined values. A new method called astMapPutU will store an entry with undefined value in a keymap. Methods that retrieve values from a KeyMap (astMapGet0<X>, etc.) ignore entries with undefined values when searching for an entry with a given key.
(3)
The KeyMap class has a new method called astMapCopy that copies entries from one KeyMap to another KeyMap.
(4)
The KeyMap class has a new boolean attribute called MapLocked. If non-zero, an error is reported if an attempt is made to add any new entries to a KeyMap (the value associated with any old entry may still be changed without error). The default is zero.
(5)
The Object class has a new method called astHasAttribute/AST_HASATTRIBUTE that returns a boolean value indicating if a specified Object has a named attribute.
(6)
The SkyFrame class has two new read-only boolean attributes called IsLatAxis and IsLonAxis that can be used to determine the nature of a specified SkyFrame axis.
(7)
A bug has been fixed in the astRebin(Seq) methods that could cause flux to be lost from the edges of the supplied array.
(8)
A bug has been fixed in the astRebin(Seq) methods that caused the first user supplied parameter to be interpreted as the full width of the spreading kernel, rather than the half-width.
(9)
The StcsChan class now ignores case when reading STC-S phrases (except that units strings are still case sensitive).
(10)
A new Mapping method, astQuadApprox, produces a quadratic least-squares fit to a 2D Mapping.
(11)
A new Mapping method, astSkyOffsetMap, produces a Mapping from absolute SkyFrame coordinates to offset SkyFrame coordinates.
(12)
The Channel class now has an Indent attribute that controls indentation in the text created by astWrite. The StcsIndent and XmlIndent attributes have been removed.
(13)
All classes of Channel now use the string “<bad>” to represent the floating point value AST__BAD, rather than the literal formatted value (typically “-1.79769313486232e+308” ).
(14)
The KeyMap class now uses the string “<bad>” to represent the floating point value AST__BAD, rather than the literal formatted value (typically “-1.79769313486232e+308” ).
(15)
The KeyMap class has a new method called astMapPutElem<X> that allows a value to be put into a single element of a vector entry in a KeyMap. The vector entry is extended automatically to hold the new element if required.
(16)
The DSBSpecFrame class now reports an error if the local oscillator frequency is less than the absoliute value of the intermediate frequency.

H.36 Changes Introduced in V5.3-2

The following describes the most significant changes which occurred in the AST library between versions V5.3-1 and V5.3-2:

(1)
A bug has been fixed in the FitsChan class that could cause wavelength axes to be assigned the units “m/s” when reading WCS information from a FITS header.
(2)
The astSet function now allows literal commas to be included in string attribute values. String attribute values that include a literal comma should be enclosed in quotation marks.
(3)
A bug in FitsChan has been fixed that caused “-SIN” projection codes within FITS-WCS headers to be mis-interpreted, resulting in no FrameSet being read by astRead.
(4)
The KeyMap class has a new attribute called “SortBy”. It controls the order in which keys are returned by the astMapKey function. Keys can be sorted alphabetically or by age, or left unsorted.
(5)
Access to KeyMaps holding thousands of entries is now significantly faster.
(6)
KeyMaps can now hold word (i.e. short integer) values.

H.37 Changes Introduced in V5.4-0

The following describes the most significant changes which occurred in the AST library between versions V5.3-2 and V5.4-0:

(1)
the FitsChan class now has an option to support reading and writing of FITS-WCS headers that use the -TAB algorithm described in FITS-WCS paper III. This option is controlled by a new FitsChan attribute called TabOK. See the documentation for TabOK for more information.
(2)
A new class called “Table” has been added. A Table is a KeyMap in which each entry represents a cell in a two-dimensional table.
(3)
A new class called “FitsTable” has been added. A FitsTable is a Table that has an associated FitsChan holding headers appropriate to a FITS binary table.
(4)
KeyMaps can now hold byte values. These are held in variables of type "unsigned char".
(5)
KeyMaps have a new attribute called KeyCase that can be set to zero to make the handling of keys case insensitive.
(6)
a memory leak associated with the use of the astMapPutElem<X> functions has been fixed.
(7)
A new method called astMapRename has been added to rename existing entry in a KeyMap.

H.38 Changes Introduced in V5.5-0

The following describes the most significant changes which occurred in the AST library between versions V5.4-0 and V5.5-0:

(1)
The FitsChanTabOK” attribute is now an integer value rather than a boolean value. If TabOK is set to a non-zero positive integer before invoking the astWrite method, its value is used as the version number for any table that is created as a consequence of the write operation. This is the value stored in the PVi_1a keyword in the IMAGE header, and the EXTVER keyword in the binary table header. In previous versions of AST, the value used for these headers could not be controlled and was fixed at 1. If TabOK is set to a negative or zero value, the -TAB algorithm will not be supported by either the astWrite or astRead methods.

H.39 Changes Introduced in V5.6-0

The following describes the most significant changes which occurred in the AST library between versions V5.5-0 and V5.6-0:

(1)
New functions astBBuf and astEBuf have been added to the Plot class. These control the buffering of graphical output produced by other Plot methods.
(2)
New functions astGBBuf and astGEBuf have been added to the interface defined by file grf.h. The ast_link command has been modified so that the -grf_v3.2 switch loads dummy versions of the new grf functions. This means that applications that use the -grf_v3.2 switch should continue to build without any change. However, the new public functions astBBuf and astEBuf will report an error unless the new grf functions are implemented. If you choose to implement them, you should modify your linking procedure to use the -grf (or -grf_v5.6 ) switch in place of the older -grf_v3.2 switch. See the description of the ast_link command for details of these switches.
(3)
New method astGetRegionMesh returns a set of positions covering the boundary, or volume, of a supplied Region.

H.40 ChangesIntroduced in V5.6-1

The following describes the most significant changes which occurred in the AST library between versions V5.6-0 and V5.6-1:

(1)
Tables can now have any number of parameters describing the global properties of the Table.
(2)
Frames now interpret the unit string “A” as meaning “Ampere” rather than “Angstrom”, as specified by FITS-WCS paper I.
(3)
A bug has been fixed in the astFindFrame method that allowed a template Frame of a more specialised class to match a target frame of a less specialised class. For example, this bug would allow a template SkyFrame to match a target Frame. This no longer happens.

H.41 Changes Introduced in V5.7-0

The following describes the most significant changes which occurred in the AST library between versions V5.6-1 and V5.7-0:

(1)
The FitsChan class support for the IRAF-specific “TNX” projection has been extended to include reading TNX headers that use a Chebyshev representation for the distortion polynomial.
(2)
The FitsChan class support for the IRAF-specific “ZPX” projection has been extended to include reading ZPX headers that use simple or Chebyshev representation for the distortion polynomial.
(3)
A bug has been fixed in the FitsChan class that caused headers including the Spitzer “-SIP” distortion code to be read incorrectly if no inverse polynomial was specified in the header.
(4)
A new attribute called PolyTan has been added to the FitsChan class. It can be used to indicate that FITS headers that specify a TAN projection should be interpreted according to the “distorted TAN” convention included in an early draft of FITS-WCS paper II. Such headers are created by (for instance) the SCAMP tool (http://www.astromatic.net/software/scamp).
(5)
The PolyMap class now provides a method called astPolyTran that adds an inverse transformation to a PolyMap by sampling the forward transformation on a regular grid, and then fitting a polynomial function from the resulting output values to the grid of input values.

H.42 Changes Introduced in V5.7-1

The following describes the most significant changes which occurred in the AST library between versions V5.7-0 and V5.7-1:

(1)
- All classes of Channel can now read to and write from specified text files, without the need to provide source and sink functions when the Channel is created. The files to use are specified by the new attributes SourceFile and SinkFile.
(2)
- The FitsChan class now ignores trailing spaces in character-valued WCS keywords when reading a FrameSet from a FITS header.
(3)
- If the FitsChan astRead method reads a FITS header that uses the -SIP (Spitzer) distortion code within the CTYPE values, but which does not provide an inverse polynomial correction, the FitsChan class will now use the PolyTran method of the PolyMap class to create an estimate of the inverse polynomial correction.

H.43 Changes Introduced in V5.7-2

The following describes the most significant changes which occurred in the AST library between versions V5.7-1 and V5.7-2:

(1)
The Object class has a new function astToString (C only), which creates an in-memory textual serialisation of a given AST Object. A corresponding new function called astFromString re-creates the Object from its serialisation.
(2)
The PolyMap class can now use an iterative Newton-Raphson method to evaluate the inverse the inverse transformation if no inverse transformation is defined when the PolyMap is created.
(3)
The FitsChan class has a new method astWriteFits which writes out all cards currently in the FitsChan to the associated external data sink (specified either by the SinkFile attribute or the sink function supplied when the FitsChan was created), and then empties the FitsChan.
(4)
The FitsChan class has a new read-only attribute called “Nkey”, which holds the number of keywords for which values are held in a FitsChan.
(5)
The FitsChan astGetFits<X> methods can now be used to returned the value of the current card.
(6)
The FitsChan class has a new read-only attribute called “CardType”, which holds the data type of the keyword value for the current card.
(7)
The FitsChan class has a new method astReadFits which forces the FitsChan to reads cards from the associated external source and appends them to the end of the FitsChan.
(8)
- If the FitsChan astRead method reads a FITS header that uses the -SIP (Spitzer) distortion code within the CTYPE values, but which does not provide an inverse polynomial correction, and for which the PolyTran method of the PolyMap class fails to create an accurate estimate of the inverse polynomial correction, then an iterative method will be used to evaluate the inverse correction for each point transformed.

H.44 Changes Introduced in V6.0

The following describes the most significant changes which occurred in the AST library between versions V5.7-2 and V6.0:

(1)
This version of AST is the first that can be used with the Python AST wrapper module, starlink.Ast, available at http://github.com/timj/starlink-pyast.
(2)
When reading a FITS-WCS header, the FitsChan class now recognises the non-standard “TPV” projection code within a CTYPE keyword value. This code is used by SCAMP (see www.astromatic.net/software/scamp) to represent a distorted TAN projection.
(3)
The Plot class has been changed to remove visual anomalies (such as incorrectly rotated numerical axis labels) if the graphics coordinates have unequal scales on the X and Y axes.

- The graphics escape sequences used to produce graphical sky axis labels can now be changed using the new function astTuneC.

H.45 Changes Introduced in V6.0-1

The following describes the most significant changes which occurred in the AST library between versions V6.0 and V6.0-1:

(1)
The FitsChan class now recognises the Spitzer “-SIP” distortion code within FITS headers that describe non-celestial axes, as well as celestial axes.
(2)
A bug has been fixed that could cause inappropriate equinox values to be used when aligning SkyFrames if the AlignSystem attribute is set.
(3)
The versioning string for AST has changed from “ < major > . < minor > < release >” to “ < major > . < minor > . < release >”.

H.46 Changes Introduced in V7.0.0

The following describes the most significant changes which occurred in the AST library between versions V6.0-1 and V7.0.0:

(1)
Fundamental positional astronomy calculations are now performed using the IAU SOFA library where possible, and the Starlink PAL library SUN/268 otherwise (the PAL library contains a subset of the Fortran Starlink SLALIB library re-written in C). Copies of these libraries are bundled with AST and so do not need to be obtained or built separately, although external copies of SOFA and PAL can be used if necessary by including the “–with-external_pal” option when configuring AST.

H.47 Changes Introduced in V7.0.1

The following describes the most significant changes which occurred in the AST library between versions V7.0.0 and V7.0.1:

(1)
The levmar and wcslib code distributed within AST is now stored in the main AST library (libast.so) rather than in separate libraries.

H.48 Changes Introduced in V7.0.2

The following describes the most significant changes which occurred in the AST library between versions V7.0.1 and V7.0.2:

(1)
The libast_pal library is no longer built if the “–with-external_pal” option is used when AST is configured.

H.49 Changes Introduced in V7.0.3

The following describes the most significant changes which occurred in the AST library between versions V7.0.2 and V7.0.3:

(1)
A bug has been fixed which could cause an incorrect axis to be used when accessing axis attributes within CmpFrames. This could happen if axes within the CmpFrame have been permuted.
(2)
A bug has been fixed in the SkyFrame class that could cause the two values of the SkyRef and/or SkyRefP attributes to be reversed.
(3)
Bugs have been fixed in the CmpRegion class that should allow the border around a compound Region to be plotted more quickly, and more accurately. Previously, component Regions nested deeply inside a CmpRegion may have been completely or partially ignored.
(4)
A bug has been fixed in the Plot3D class that caused a segmentation violation if the MinTick attribute was set to zero.
(5)
The astResampleX set of methods now includes astResampleK and astResampleUK that handles 64 bit integer data.

H.50 Changes Introduced in V7.0.4

The following describes the most significant changes which occurred in the AST library between versions V7.0.3 and V7.0.4:

(1)
The previously private grf3d.h header file is now installed into prefix/include.

H.51 Changes Introduced in V7.0.5

The following describes the most significant changes which occurred in the AST library between versions V7.0.4 and V7.0.5:

(1)
The FitsChan class can now read FITS headers that use the SAO convention for representing distorted TAN projections, based on the use of “COi_m” keywords to hold the coefficients of the distortion polynomial.

H.52 Changes Introduced in V7.0.6

The following describes the most significant changes which occurred in the AST library between versions V7.0.5 and V7.0.6:

(1)
A bug has been fixed in astRebinSeq<X> which could result in incorrect normalisation of the final binned data and variance values.
(2)
When reading a FrameSet from a FITS-DSS header, the keywords CNPIX1 and CNPIX2 now default to zero if absent. Previously an error was reported.

H.53 Changes Introduced in V7.1.0

The following describes the most significant changes which occurred in the AST library between versions V7.0.6 and V7.1.0:

(1)
IMPORTANT! The default behaviour of astRebinSeq is now NOT to conserve flux. To conserve flux, the AST__CONSERVEFLUX flag should be supplied when calling astRebinSeq<X>. Without this flag, each output value is a weighted mean of the neighbouring input values.
(2)
A new flag AST__NONORM can be used with astRebinSeq<X> to indicate that normalisation of the output arrays is not required. In this case no weights array need be supplied.
(3)
A bug has been fixed in astAddFrame method that could result in the incorrect inversion of Mappings within the FrameSet when the AST__ALLFRAMES flag is supplied for the "iframe" parameter.
(4)
The astRate method has been re-written to make it faster and more reliable.

H.54 Changes Introduced in V7.1.1

The following describes the most significant changes which occurred in the AST library between versions V7.1.0 and V7.1.1:

(1)
When a FitsChan is used to write an “offset” SkyFrame (see attribute SkyRefIs) to a FITS-WCS encoded header, two alternate axis descriptions are now created - one for the offset coordinates and one for the absolute coordinates. If such a header is subsequently read back into AST, the original offset SkyFrame is recreated.
(2)
A bug has been fixed in FitsChan that caused inappropriate CTYPE values to be generated when writing a FrameSet to FITS-WCS headers if the current Frame describes generalised spherical coordinates (i.e. a SkyFrame with System=Unknown).

H.55 Changes Introduced in V7.2.0

The following describes the most significant changes which occurred in the AST library between versions V7.1.1 and V7.2.0:

(1)
A new method call astMapDefined has been added to the KeyMap class. It checks if a gtiven key name has a defined value in a given KeyMap.

H.56 Changes Introduced in V7.3.0

The following describes the most significant changes which occurred in the AST library between versions V7.2.0 and V7.3.0:

(1)
The interface for the astRebinSeq<X> family of functions has been changed in order to allow a greater number of pixels to be pasted into the output array. The "nused" parameter is now a pointer to a "int64_t" variable, instead of an "int". APPLICATION CODE SHOULD BE CHANGED ACCORDINGLY TO AVOID SEGMENTATION FAULTS AND OTHER ERRATIC BEHAVIOUR.
(2)
Added a new facility to the FrameSet class to allow each Frame to be associated with multiple Mappings, any one of which can be used to connect the Frame to the other Frames in the FrameSet. The choice of which Mapping to use is controlled by the new “Variant” attribute of the FrameSet class.
(3)
Mappings (but not Frames) that have a value set for their Ident attribute are now left unchanged by the c astSimplify function. f AST_SIMPLIFY routine.

H.57 Changes Introduced in V7.3.1

The following describes the most significant changes which occurred in the AST library between versions V7.3.0 and V7.3.1:

(1)
Fix a bug that could cauise a segmentation violation when reading certain FITS headers that use a TNX projection.

H.58 Changes Introduced in V7.3.2

The following describes the most significant changes which occurred in the AST library between versions V7.3.1 and V7.3.2:

(1)
Fix support for reading FITS header that use a GLS projection. Previously, an incorrect transformation was used for such projections if any CRVAL or CROTA value was non-zero.
(2)
The KeyMap class has new sorting options “KeyAgeUp” and “KeyAgeDown” that retain the position of an existing entry if its value is changed. See the SortBy attribute.
(3)
A bug has been fixed in the FitsChan class that caused CDELT keywords for sky axes to be treated as radians rather than degrees when reading a FITS header, if the corresponding CTYPE values included no projection code.

H.59 Changes Introduced in V7.3.3

The following describes the most significant changes which occurred in the AST library between versions V7.3.2 and V7.3.3:

(1)
The FitsChan class has new attributes CardName and CardComm, which hold the keyword name and comment of the current card.
(2)
When using the FitsChan class to read FITS-WCS headers that include polynomial distortion in the SIP format, any inverse transformation specified in the header is now ignored and a new inverse is created to replace it based on the supplied forward transformation. Previously, an inverse was created only if the header did not include an inverse. The accuracy of the inverse transformation has also been improved, although it may now be slower to evaluate in some circumstances.

H.60 Changes Introduced in V7.3.4

The following describes the most significant changes which occurred in the AST library between versions V7.3.3 and V7.3.4:

(1)
By default, the simplification of Polygons no longer checks that the edges are not bent by the simplification. A new attribute, SimpVertices, can be set to zero in order to re-instate this check.
(2)
The Polygon class has a new mathod, astConvex, that returns a Polygon representing the shortest polygon (i.e. convex hull) enclosing a specified set of pixel values within a supplied array.

H.61 Changes Introduced in V8.0.0

The following describes the most significant changes which occurred in the AST library between versions V7.3.4 and V8.0.0:

(1)
AST is now distributed under the Lesser GPL licence.
(2)
The PolyMap class now uses files copied from the C/C++ Minpack package (see http://devernay.free.fr/hacks/cminpack/index.html) to perform least squares fitting of N-dimensional polynomials.
(3)
Use of the IAU SOFA library has been replaced by ERFA library, which is a re-badged copy of SOFA distributed under a less restrictive license. A copy of ERFA is included within AST.

H.62 Changes Introduced in V8.0.1

The following describes the most significant changes which occurred in the AST library between versions V8.0.0 and V8.0.1:

(1)
The Base and Current attributes of a FrameSet may now be set using the Domain name or the index of the required Frame.
(2)
The order of WCS axes within new FITS-WCS headers created by astWrite can now be controlled using a new attribute called FitsAxisOrder.
(3)
Supported added for FITS XPH (polar HEALPIX) projection.
(4)
The macro used to invoke the astAppendString utility function has changed to allow printf-style converstions to be included in the supplied text. Any code that uses this macro must be re-compiled.
(5)
The astRebin and astRebinSeq family of functions now include support for arrays with char (byte) and unsigned char (unsigned byte) data types.

H.63 Changes Introduced in V8.0.2

The following describes the most significant changes which occurred in the AST library between versions V8.0.1 and V8.0.2:

(1)
For security reasons, the change introduced to astAppendString in V8.0.1 has been moved to a new function called astAppendStringf, and astAppendString itself has been reverted to its V8.0.0 version. Any software that has been built against V8.0.1 will need to be re-compiled and re-linked against V8.0.2.

H.64 Changes Introduced in V8.0.3

The following describes the most significant changes which occurred in the AST library between versions V8.0.2 and V8.0.3:

(1)
Methods astRebin, astRebinSeq, astResample and astTranGrid now report an error if an array is specified that has more pixels than can be counted by a 32 bit integer.
(2)
The hypertext documentation is now generated using Tex4HT rather than latex2html. The format of the hypertext docs has changed significantly.
(3)
Another bug fix associated with reading CAR projections from FITS-WCS headers.
(4)
Constructor options strings of the form “..., "%s", text );” can now be supplied. This avoids a security issue associated with the alternative form “..., text );”.

H.65 Changes Introduced in V8.0.4

The following describes the most significant changes which occurred in the AST library between versions V8.0.3 and V8.0.4:

(1)
The behaviour of the astAddFrame method has been changed slightly. Previously, astAddFrame modified the FrameSet by storing references to the supplied Mapping and Frame objects within the FrameSet. This meant that any subsequent changes to the current Frame of the modified FrameSet also affected the supplied Frame object. Now, deep copies of the Mapping and Frame objects (rather than references) are stored within the modified FrameSet. This means that subsequent changes to the modified FrameSet will now have no effect on the supplied Frame.
(2)
The choice of default tick-mark gaps for time axes has been improved, to avoid a previous issue which could result in no suitable gap being found.

- A new method called astRegionOutline has been added to the Plot class. It draws the outline of a supplied AST Region.

(3)
A bug has been fixed that could cause astSimplfy to enter an infinite loop.
(4)
Some improvements have been made to the Mapping simplification process that allow more Mappings to be simplified.
(5)
The Frame class has a new read-only attribute called InternalUnit, which gives the units used for the unformatted (i.e. floating-point) axis values used internally by application code. For most Frames, the InternalUnit value is just the same as the Unit value (i.e. formatted and unformatted axis values use the same units). However, the SkyFrame class always returns “rad” for InternalUnit, regardless of the value of Unit, indicating that floating-point SkyFrame axis values are always in units of radians.
(6)
The LutMap class has a new attribute called LutEpsilon, which specifies the relative error of the values in the table. It is used to decide if the LutMap can be simplified to a straight line.

H.66 Changes Introduced in V8.0.5

The following describes the most significant changes which occurred in the AST library between versions V8.0.4 and V8.0.5:

(1)
The SkyFrame class has a new attribute called SkyTol, which specifies the smallest significant distance within the SkyFrame. It is used to decide if the Mapping between two SkyFrames can be considered a unit transformation. The default value is 0.001 arc-seconds.
(2)
A bug has been fixed in the FitsChan class that prevented illegal characters within FITS keyword names (i.e. characters not allowed by the FITS standard) being detected. This bug could under some circumstances cause a subsequent segmentation violation to occur.
(3)
A “BadKeyName” warning is now issued by the FitsChan class if a FITS keyword name is encountered that contains any illegal characters. See attribute “Warnings” and function “astWarnings”.

H.67 Changes Introduced in V8.1.0

The following describes the most significant changes which occurred in the AST library between versions V8.0.5 and V8.1.0:

(1)
The configure script has a new option “–without-fortran” that allows AST to be built in situations where no Fortran compiler is available. The resulting library has no Fortran interface and so cannot be used within Fortran applications. Also, the link scripts do not attempt to include the fortran runtime libraries.

H.68 Changes Introduced in V8.2

The following describes the most significant changes which occurred in the AST library between versions V8.1.0 and V8.2.0:

(1)
A new class of Mapping called UnitNormMap has been added that converts a vector to a unit vector relative to a specified centre, plus length. A UnitNormMap has N inputs and N+1 outputs.The lower N output coordinates represent a unit vector parallel to the supplied input vector, and the (N+1)’th output coordinate is the length of the input vector.
(2)
The restriction that Mappings are immutable has been extended to all Mapping classes. This means that attributes representing parameters of a Mapping’s forward or inverse transformation cannot be changed after the Mapping has been created. In order to minimise the risk to existing software, this rule does not apply to Mappings that have not yet been included in other objects such as CmpMaps or FrameSets, or which have not yet been cloned. In other words, an error is reported if an attempt is made to change the nature of a Mapping’s transformation, but only if the reference count of the Mapping is greater than one. The Mapping classes affected include: GrismMap, LutMap, PcdMap, SphMap, WcsMap and ZoomMap.

H.69 Changes Introduced in V8.3

The following describes the most significant changes which occurred in the AST library between versions V8.2.0 and V8.3.0:

(1)
A new method called astAxNorm has been added to the Frame class that normalises an array of axis values. When used with SkyFrames, it allows longitude values to be normalised into the shortest range.
(2)
A bug has been fixed in the astGetRegionBounds method that could cause the wrong bounds to be returned for regions spanning a longitude = zero singularity.

H.70 Changes Introduced in V8.4

The following describes the most significant changes which occurred in the AST library between versions V8.3.0 and V8.4.0:

(1)
The PAL library files included in the AST distribution have been updated to PAL version 0.9.7.
(2)
Multiple identical NormMaps in series will now be simplified to a single NormMap.
(3)
A NormMap that encapsulates a basic Frame will now be simplified to a UnitMap.
(4)
The astTimeAdd method of the TimeMap class now include an extra argument that gives the number of values supplied in the arguments array. Note, any existing code that uses this method will need to be changed.
(5)
The astSlaAdd method of the SlaMap class now include an extra argument that gives the number of values supplied in the arguments array. Note, any existing code that uses this method will need to be changed.
(6)
The astSpecAdd method of the SpecMap class now include an extra argument that gives the number of values supplied in the arguments array. Note, any existing code that uses this method will need to be changed.
(7)
Multiple identical NormMaps in series will now be simplified to a single NormMap.
(8)
A NormMap that encapsulates a basic Frame will now be simplified to a UnitMap.
(9)
If the astMapRegion method is used to map a Region into a new Frame that has fewer axes than the original Region, and if the inverse transformation of the supplied Mapping does not specify a value for the missing axes, then those axes are removed entirely from the Region. Previously they were retained, but automatically supplied with bad values. This affects the number of mesh points per axes for such Regions, and so affects the accuracy of overlap determination.

H.71 Changes Introduced in V8.5

The following describes the most significant changes which occurred in the AST library between versions V8.4.0 and V8.5.1:

(1)
- A new class of Mapping called ChebyMap has been added. This is a Mapping that implements Chebyshev polynomial transformations.
(2)
A bug has been fixed in the PolyMap class that caused incorrect values to be returned for the TranForward and TranInverse attributes if the PolyMap has been inverted.
(3)
The KeyMap class has a new method called astMapGetC which returns a named entry as a single string. If the entry is a vector the returned string is a comma-separated list of its elements, enclosed in parentheses.
(4)
If the function that delivers error messages to the user (astPutErr) is re-implemented, the new version can now be registered at run-time using the new astSetPutErr function. Previously, the new version needed to be linked into the application at build time.
(5)
The Frame class now has a new attribute caled DTAI, which can be used to specify the number of leap seconds at the moment represented by the Frame’s Epoch attribute. By default, the internal look-up table of leap seconds contained within AST is used. The DTAI attribute allows old versions of AST, which may not include the most recent leap seconds, to be used with new data.
(6)
The TimeMap class has been changed so that some conversions now require a “Dtai” value (i.e. the number of leap seconds) to be supplied by the caller. If AST__BAD is supplied for “Dtai”, the internal look-up table of leap seconds contained withn AST will be used. The conversions affected are those between TAI and UTC, and those between TT and TDB.

H.72 Changes Introduced in V8.6.2

The following describes the most significant changes which occurred in the AST library between versions V8.5.1 and V8.6.2:

(1)
The astRebinSeq<X> functions accepts a new flag, AST__PARWGT, which allows the initial weight to be given for the data being pasted into the output arrays (the initial weight to use should be include in the "params" array). This initial weight defaults to 1.0 if the AST__PARWGT flag is not given.
(2)
The behaviour of the astLinearApprox method of the Mapping class has been changed in cases where the Mapping being approximated generates bad (AST__BAD) values for one or more of its outputs. Previously, any such Mapping would be deemed non-linear and no fit would be returned. Now, a fit is returned, provided the other outputs of the Mapping are linear, but the fit contains AST__BAD values for the coefficients describing the bad Mapping output.
(3)
The astWrite method of the FitsChan class can now create FITS-WCS headers that include keyords describing focal plane distortion using the conventions of the Spitzer SIP scheme. This is however only possible if the SipOK attribute of the FitsChan is set to a non-zero value (which is the default), and the FrameSet being written out contains an appropriate PolyMap that conforms to the requirements of the SIP convention.
(4)
A new function call astCreatedAt is now available that returns the function name, file path and line number at which an AST object was first created. Note, there is no Fortran equivalent to this new C function.
(5)
The number of digits used to format floating point values has been increased in order to avoid loss of precision when converting from binary to string and back to binary. This could cause very small changes in numerical values returned by AST functions.
(6)
If a FrameSet is supplied as the “map” argument to astAddFrame, it now extracts and stores the base->current Mapping from the supplied FrameSet. Previously, the entire FrameSet was stored as the Mapping.

H.73 Changes Introduced in V8.6.3

The following describes the most significant changes which occurred in the AST library between versions V8.6.2 and V8.6.3:

(1)
Small memory leaks in Region and FitsChan classes have been fixed.
(2)
A bug that could cause an internal buffer overrun within the FitsChan class when writing out a FITS-WCS spectral axis with the “-LOG” algorithm has been fixed.
(3)
The test that a Mapping conforms to the requirements of the SIP FITS distortion scheme has been improved.
(4)
The astRebinSeq method of the Mapping class can now use a different weight when pasting each separate input data array into the output mosaic.

H.74 Changes Introduced in V8.7.0

The following describes the most significant changes which occurred in the AST library between versions V8.6.3 and V8.7.0:

(1)
The Region class has a new method called astGetRegionDisc, which returns the centre and radius of a disc that just encloses a 2-dimensional Region.
(2)
A new subclass of Region called “Moc” has been added. A Moc describes an arbitrary region of the sky in the form of a set of HEALPix cells.
(3)
The Bounded attribute defined by the Region class is now always non-zero for Regions defined within a SkyFrame, regardless of whether the Region has been negated. Previously, it was non-zero only if the Region had not been negated. Note, this change only affects Regions defined within SkyFrames.

H.75 Changes Introduced in V8.7.1

The following describes the most significant changes which occurred in the AST library between versions V8.7.0 and V8.7.1:

(1)
The Moc class now supports version 1.1 of the the MOC recommendation. This includes new support for string and JSON encoded MOCs. See methods astGetMocString and astAddMocString in the Moc class, and also the new MocChan class.
(2)
The FitsChan class will now read FITS-WCS headers that have alternate axis descriptions but no primary axis descriptions.

H.76 Changes Introduced in V8.7.2

The following describes the most significant changes which occurred in the AST library between versions V8.7.1 and V8.7.2:

(1)
By default, the AST header file “ast.h” is now installed into both STARLINK_DIR/include and STARLINK_DIR/include/star. The new configure option “–without-topinclude” can be used to prevent the header file being installed into STARLINK_DIR/include.

H.77 Changes Introduced in V9.0.0

The following describes the most significant changes which occurred in the AST library between versions V8.7.2 and V9.0.0:

(1)
Functions such as astResample and astMask that handle grids of data values now have alternative interfaces that can handle grids that contain more pixels than can be represented in a 4-byte integer. This is achieved by using 8-byte integer arguments in place of 4-byte arguments. The names of these “8-byte” interfaces are the same as the 4-byte interfaces but have the digit “8” appended to the function name (before any trailing data type code). These new interfaces are documented in an extra paragraph entitled Handling of Huge Pixel Arrays attached to the reference documentation for each such function.

Note, all C or C++ code that uses AST should be recompiled to pick up changes made to the header file ast.h. This should be done even if you do not intend to use the new 8-byte interfaces.

H.78 Changes Introduced in V9.0.2

The following describes the most significant changes which occurred in the AST library between versions V9.0.0 and V9.0.2:

(1)
The AST sharable libraries now use a non-zero version number.
(2)
The FitsChan class has a new attribute called ForceTab, which is used in conjunction with the TabOK attribute to force the use of the “-TAB” algorithm when writing a FrameSet out using the FITS-WCS encoding.

H.79 Changes Introduced in V9.1.0

The following describes the most significant changes which occurred in the AST library between versions V9.0.2 and V9.1.0.

(1)
The AST source directory has been reorganised to put most of the AST source files into a subdirectory named “src”.
(2)
A bug has been fixed in the TimeFrame class that caused the time returned by astCurrentTime to be wrong by 37 seconds.
(3)
The Region class has a new convenience method (astPointInRegion) to test a if a single point is inside a Region.

H.80 Changes Introduced in V9.1.2

The following describes the most significant changes which occurred in the AST library between versions V9.1.0 and V9.1.2:

(1)
A bug in the way in which the FitsChan class reads FITS-WCS headers that have more WCS axes than pixel axes has been fixed (i.e. axes for which there is no CRPIX value). Previously, the missing pixel axes were assigned a constant value 1.0. However, the default value for CRPIX specified by FITS-WCS Paper I is 0.0, not 1.0. So now the missing pixel axes are assigned the value 0.0.

H.81 Changes Introduced in V9.1.3

The following describes the most significant changes which occurred in the AST library between versions V9.1.2 and V9.1.3:

(1)
The KeyMap class has a new method called astMapCopyEntry that can be used to copy a single entry from one KeyMap to another.
(2)
The astSimplify method now prefers ShiftMaps over equivalent WinMaps.
(3)
The astSimplify method will now merge WinMaps with neighbouring diagonal MatrixMaps.

H.82 Changes Introduced in V9.2.0

The following describes the most significant changes which occurred in the AST library between versions V9.1.3 and V9.2.0:

(1)
- A new subclass of Channel called YamlChan has been added. It allows AST objects to be read and written using YAML. Currently, the ASDF format developed by STSci (https://asdf-standard.readthedocs.io) is the only supported encoding.

H.83 Changes Introduced in V9.2.4

The following describes the most significant changes which occurred in the AST library between versions V9.2.0 and V9.2.4:

(1)
A bug has been fixed that could prevent the astWrite method of the FitsChan class producing FITS-WCS headers describing alternate axes for some of the Frames in the supplied FrameSet. Consequently, the headers produced by astWrite may now include alternate axis descriptions that were not present previously. These can be supressed using the new AltAxes attribute.
(2)
The FitsChan class has a new attribute, AltAxes, which controls the creation of FITS-WCS alternate axis descriptions by the astWrite method.
(3)
- The KeyMap class now supports 64 bit integer (int64_t) entries, represented by the new data type code “K”.
(4)
Two simplification bugs introduced at V9.2.0 have been fixed.
(5)
The YamlChan class now supports AST “native” encoding.

H.84 Changes Introduced in V9.2.5

The following describes the most significant changes which occurred in the AST library between versions V9.2.4 and V9.2.5:

(1)
A new method called astNormPoints has been added to the Frame class. This is similar to the existing astNorm method in that it can be used to normalise axis values, but can be used on a vector of points rather than just a single point. In addition, it has an option to choose a normalisation that avoids discontinuities in the Frame’s coordinate system. The most common usage will be to modify vectors of sky position in such a way as to avoid sudden jumps of 360 degrees in longitude within groups of points that span the longitude origin.

- The mesh of points returned by astGetRegionMesh and astShowMesh are now normalised to avoid discontinuities in celestial longitude. This uses the new astNormPoints methid described in the previous item.

(2)
A bug has been fixed in the KeyMap class that caused astMapGet1<X> functions to return a vector length of 1 for KeyMap entries with an undefined value. A vector length of zero is now returned in such cases.
(3)
The way in which the astRebinSeq functions use the “wlim” argument has been modified in order to improve the performance when the input variances include aberrant ultra-low values. The change should result in fewer output pixels being set bad in such cases. This change only affects cases where the AST__GENVAR flag is not set.
(4)
An option “–with-external-cminpack” had been added to the configure script. It omits the internal cminpack routines from the built library, and instead links with an external cminpack library.

H.85 Changes Introduced in V9.2.6

The following describes the most significant changes which occurred in the AST library between versions V9.2.5 and V9.2.6:

(1)
A bug has been fixed in the FitsChan class that caused an error to be reported when reading a legal FITS WCS header that uses the “NCP” projection code. The error message related to a missing alternate axis description keyword.

H.86 Changes Introduced in V9.2.7

The following describes the most significant changes which occurred in the AST library between versions V9.2.6 and V9.2.7:

(1)
The FitsChan class has a new attribute called FitsRounding, which controls rounding applied when floating point values are formatted as FITS keyword values. Note, this changes the default rounding behaviour. Previously, sequences of four or more 9’s or 0’s were always rounded. Now, such sequences are only rounded if they extend beyond the tenth significant digit (the default value for FitsRounding being 10). To restore the original behaviour, set FitsRounding to 1.

H.87 Changes Introduced in V9.2.8

The following describes the most significant changes which have occurred in the AST library between versions V9.2.7 and V9.2.8 (the current version):

(1)
The Fortran interface has been changed to fix a bug caused by a change in the way that gfortran passes character arguments. As of gfortran V8 the length of each character argument passed to a subroutine is stored in a size_t value rather than an int value. AST now tests the version of gfortran at configure-time, and uses int or size_t within the Fortran API as appropriate. Prior to this change int was always used, which could cause undefined behaviour and segmentation faults when calling AST routines under gfortran v8 and later.
(2)
A bug has been fixed in astRebinSeq that could cause NaN values to appear in the output array in cases where the overlap between two input arrays is very small. The fix corrects the way in which the mean weight per input pixel is calculated. It may cause some general minor changes to the decision about which output pixels pass the “wlim” criterion.

Programs which are statically linked will need to be re-linked in order to take advantage of these new facilities.