G Release Notes

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

G.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 ?? function has been provided to read formatted coordinate values for the axes of a ?? (§7.8). In essence, this function is the inverse of ??. 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 ?? 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 routine ?? 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 ??. 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 ??, the ??, has been introduced (§20). This is a specialised form of Mapping which encapsulates a privately-defined coordinate transformation routine (e.g. written in Fortran) 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 ?? 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 ??.
(9)
The textual representation used for some Objects (i.e. when they are written to a ??) has changed slightly, but remains compatible with earlier versions of AST.
(10)
A problem has been fixed which could result when using ?? 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.
(11)
A bug has been fixed which could occasionally cause a ?? to be used with the wrong ?? attribute value when it forms part of a compound Mapping which is being simplified using AST_SIMPLIFY.
(12)
A bug has been fixed which could cause the AST__BAD parameter to have an incorrect value on some platforms.
(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.

G.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 routine, ??, has been introduced to allow more efficient plotting of multiple geodesic curves (§21.3).
(2)
A new set of functions, ??, 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 ??.
(3)
The command-line options “pgp” and “pgplot”, which were previously synonymous when used with the “??” and “??” 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 routine ?? 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 ?? attribute of a ??. 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 ?? is created from a set of FITS header cards (by reading from a FitsChan using a “foreign” encoding), the base ?? of the resulting FrameSet now has its ?? 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)
?? now ignores trailing spaces in its keyword template.
(8)
?? 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 ??.
(12)
A new ?? attribute has been added to the ?? class. This allows improved simplification of compound Mappings (CmpMaps) involving SphMaps and typically improves performance when handling FITS world coordinate information.
(13)
A ?? 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 ?? to think that conversion between a ?? and another Frame was possible when, in fact, it wasn’t.

G.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, ??, 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 ??. A variety of sub-pixel interpolation schemes are supported.
(2)
A new class, ??, 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 ?? 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.

G.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 ?? class has been introduced. This is a form of ?? that allows you to define coordinate transformations in a flexible and transportable way using arithmetic operations and mathematical functions similar to those available in Fortran.
(2)
WARNING—INCOMPATIBLE CHANGE. Transformation routines used with the ?? class (see, for example, ??) now require a THIS pointer as their first argument. Existing implementations will not continue to work correctly with this version of AST unless this argument 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 ?? attribute has been added to the IntraMap class. This allows the transformation routines used by IntraMaps to adapt to produce the required transformation on a per-IntraMap basis (§20.9).
(4)
The ?? 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 ?? attribute).
(6)
The ?? 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 ?? attribute for details).
(7)
The FitsChan class now recognises the coordinate system “ICRS” (International Celestial Reference ??) 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 ??, 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.

G.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 ?? 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 ?? 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 ?? 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 ?? can be saved and restored without truncation when using the NATIVE encoding. Previously, very long ?? 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 ?? 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 ?? class has been changed to support the changes made to the FITS-WCS encoding in the FitsChan class:

G.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)
A bug has been fixed in the ?? class which could cause groups of tick marks to be skipped when using very small gaps.
(2)
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.
(3)
The FITS-WCS encoding used by the ?? class now includes the WCSNAME keyword. When creating a ?? from FITS headers, the values of the WCSNAME keywords are now used as the ?? names for the corresponding Frames in the returned FrameSet. When writing a FrameSet to a FITS header the Domain names of each ?? are stored in WCSNAME keywords in the header.
(4)
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 ?? 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.
(5)
The FITS-WCS, FITS-PC, FITS-IRAF and FITS-AIPS encodings used by the FitsChan class now create a ?? with the ?? 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.
(6)
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”.
(7)
The new value “noctype” is now recognized by the ?? attribute of the FitsChan class. This value causes warnings to be issued if CTYPE keywords are missing from foreign encodings.
(8)
A new attribute called ?? 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.
(9)
The FitsChan class now attempts to assigns a ?? 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.
(10)
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.
(11)
A new “interpolation” scheme identified by the symbolic constant AST__BLOCKAVE has been added to the ?? 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.
(12)
The SkyFrame class can now be used to represent an arbitrary spherical coordinate system by setting its System attribute to “Unknown”.
(13)
The indices of the latitude and longitude axes of a SkyFrame can now be found using new read-only attributes ?? and ??. The effects of any axis permutation is taken into account.
(14)
A new attribute called Ident has been added to the ?? class. This serves the same purpose as the existing ?? attribute, but (unlike ID) its value is transferred to the new Object when a copy is made.
(15)
A bug has been fixed which could prevent complex CmpFrames behaving correctly (for instance, resulting in the failure of attempts to find a ?? between a ?? and itself).

G.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 ?? class has a new method called ?? 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 ?? 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 ?? 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 ?? 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 ?? class has a new method called ?? which allows generalised user-defined curves to be drawn. The curve is defined by a user-supplied ?? 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 ?? 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 ?? 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 ?? and ?? 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 ?? class which could cause IntraMaps to be corrupted after transforming any points.
(10)
Bugs have been fixed in the ?? 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.

G.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 ?? class has a new attribute called ?? which allows longitude values to be displayed in the range π to + π, instead of the usual range zero to 2.π.
(2)
Some new routines (??, ??, ??, ??, ??, ??) have been added to the ?? 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 AST_BEAR routine has been replaced by AST_AXANGLE.

G.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 ?? class which enables pointers to be obtained to the component parts of ?? and ?? 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.

G.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 ?? class has a new attribute called ?? 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 ??, 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.

G.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 ?? 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, ??, NumLabs, TextLabs and Ticks.

G.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 ?? has been added to the ?? class which controls the way CAR projections are handled when reading a ?? 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 ?? to include a 3D rotation from native spherical coordinates to celestial spherical coordinates, thus making the Mapping non-linear. Setting CarLin to 1 forces ?? 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 ?? 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 ??, etc., on certain platforms (MacOS, for instance).

G.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 ?? class which could cause problems when creating a ?? 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 ?? has been added to the ?? class. This method returns the bounding box of the previous graphical output produced by a Plot method.
(3)
A new attribute called ?? 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 AST_BOUNDINGBOX 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.).

G.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 ?? class has been modified so that LONPOLE keywords are only produced by ?? 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 AST_WRITE 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 ?? 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 ?? class has new attributes ?? and ?? which allow a “plottable range” to be specified for each Frame axis. The grid produced by the ?? routine will not extend beyond these limits.

G.15 Changes Introduced in V2.0

Note, ?? 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 ?? attribute provided by the ?? 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 ?? routine within the FitsChan class has been modified. It will now attempt to produce a set of FITS header cards to describe a ?? even if the number of axes in the ?? Frames is greater than the number in the ?? 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 AST_WRITE routine 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, ?? and ??. 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 ?? 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 AST_FINDRAME or ?? method is used to find the Mapping between an ?? with Unit set to “m” and another Axis with Unit set to “km”, then the method will return a ?? 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 ?? 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 ?? and ?? attributes fo the ?? 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 ??, which allows control over the alignment process performed by the methods ?? and AST_CONVERT.
(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 ?? attribute of the SpecFrame can be referred to as the “StdOfRest(1)” attribute of the CmpFrame. Likewise, the ?? 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 ?? 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 (??) 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.

G.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 ?? 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 ?? function has been added which allows an estimate to be made of the rate of change of a ?? 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 ??. For instance, the ?? 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 ?? 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 ??, has been added which models the spectral dispersion produced by a grating, prism or grism.
(7)
A new subclass of Mapping, the ??, has been added which adds constant values onto all coordinates (this is equivalent to a ?? with unit scaling on all axes).
(8)
Minor bugs have been fixed within the ?? class to do with the choice and placement of numerical axis labels.
(9)
The ?? class has a new attribute called ?? 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 ?? class now assigns a longitude of zero to output celestial coordinates which have a latitude of plus or minus 90 degrees.
(11)
The ?? and ?? 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 ?? function to make simplifications in a ?? which previously were not possible.
(14)
The ?? class has been extended by the addition of conversions between FK5 and ICRS coordinates, and between FK5 and helio-ecliptic coordinates.
(15)
The ?? 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.

G.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 ?? - a ?? which reads and writes AST objects in the form of XML.
(2)
A bug has been fixed in the ?? 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.

G.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 routine ?? has been added to the ?? class. This allows multiple concatenated header cards to be stored in a FitsChan in a single call, providing an alternative to the existing AST_PUTCARDS routine.
(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 ?? 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 ??.
(6)
The default value of the ?? 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 ?? 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 ?? 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 ?? has been added to the ?? class. It allows XML written by the XmlChan class to include an explicit namespace prefix on each element.
(14)
New attribute ?? has been added to the XmlChan class. It specifies the format in which AST objects should be written.
(15)
A new class of ??, the ??, 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 ?? which caused error reports to include erroneous axis numbers when referring to missing parameter values.

G.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 ?? class which allows the origin of celestial coordinates to be moved to any specified point. See the new attributes SkyRef, ??, SkyRefP and ??.
(2)
An option has been added to the ?? 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 ??.
(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.
(9)
The names of the installed AST include files have been changed to upper case.

G.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 ?? class has a new method (??) 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 ??, or “%.10g” for a simple ??). 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 ?? 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 ??. This is a sub-class of ?? which can be used to describe spectral axes associated with dual sideband spectral data.
(5)
The ?? 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 ??, “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).

G.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 ?? 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 ?? called ?? 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 ?? 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 ?? called ?? 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 ?? class now supports a value of “J2000” for ??. 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 ?? 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 ?? 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 (AST_SETFITS<X>) have been added to the ?? class to allow values for named keywords to be changed or added.

G.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 ?? 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 ??.
(2)
The ?? class has a new attribute called ?? which controls the clipping performed by AST at the plot boundary.
(3)
The keys used to label components of the ?? structure when a PolyMap is written out through a ?? have been changed. The new keys are shorter than the old keys and so can written succesfully to a ??. 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 ?? 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.

G.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, ?? and ??. The TimeFrame is a 1-dimensional ?? which can be used to describe moments in time (either absolute or relative) in various systems (MJD, Julian ??, etc.) and referred to various time scales (TAI, UTC, UT1, GMST, etc). The TimeMap is a ?? 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.

G.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 ?? 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 ?? class. These are flux-conserving alternatives to the existing AST_RESAMPLE<X>/astResample<X> methods.

G.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_PAR. These specify kernels for AST_RESAMPLE and AST_REBIN based on the “Sombrero” function ( 2 J1(x)/x where J1(x) is the first order Bessel function of the first kind).
(3)
The ?? class now supports a ?? value of AZEL corresponding to horizon (azimuth/elevation) coordinates.
(4)
The ?? class allows the non-standard strings “AZ–” and “EL–” to be used as axis types in FITS-WCS CTYPE keyword values.
(5)
The ?? class now has attributes ?? and ?? to specify the geodetic longitude and latitude of the observer.
(6)
The ClockLon and ClockLat attributes have been removed from the ?? class. Likewise, the GeoLon and GeoLat attributes have been removed from the ?? 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 routine ?? has been added to the ?? 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 ?? 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.

G.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 ?? attribute of the ?? 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 ?? 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 ?? from a FITS-WCS encoding.
(3)
The FitsChan class has a new method called ?? that indicates that the current card in the FitsChan should not be stripped out of the FitsChan when an AST ?? 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 ?? has been added to the base Object ??. 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 ??.
(6)
A new function ?? 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 ?? has been added to the ?? 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 ??. 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 ??. A SelectorMap tests each input position to see if it falls within one of several Regions. If it does, the index of the ?? containing the input position is returned as the Mapping output.
(10)
The behaviour of the ?? method when trying to align a ?? with another ?? 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 ?? with a CmpFrame containing a SkyFrame and a ?? (for instance). The returned Mapping produces bad values for the extra axes (i.e. for the SpecFrame axis in the above example).
(11)
The “??” 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.

G.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 AST_GETFITSS function now strips trailing white space from the returned string, if the original string contains 8 or fewer characters
(2)
The ?? class has a new attribute called ?? that specified whether the ?? 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.

G.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 ?? function can now be used to search a ?? for an instance of a more specialised class of ?? (??, ??, ??, ?? or ??). That is, if an instance of one of these classes is used as the “template” when calling AST_FINDFRAME, and the “target” being searched is a CmpFrame (or a ?? 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 ?? (which will include a ?? to select the required axes from the CmpFrame) will be returned by AST_FINDFRAME. Note, for this to work, the ?? and ?? 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 ?? attributes when aligning two DSBSpecFrames using ??.
(4)
The Frame class has a new attribute called ?? 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 ?? and ?? has been increased.
(6)
The use of the SkyFrame attribute ?? has been changed. This attribute is used to control how two SkyFrames are aligned by AST_CONVERT. 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 ?? will always be used to align the two SkyFrames).
(7)
The ?? 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.

G.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 ?? supplied to ?? 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 ?? to the ?? class. This method removes all WCS-related header cards from a FitsChan.
(4)
The ?? 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 ?? routine.
(5)
Functions registered with the Plot class using AST_GRFSET 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 AST_GRFSET TO BE MODIFIED TO INCLUDE THE NEW PARAMETER.
(6)
The AST_REBINSEQ routines 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 AST_REBINSEQ. This causes the input data values to be weighted using the reciprocals of the input variances (if supplied).
(9)
The ?? 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 routine ?? has been added to the ?? 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.

G.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 ?? class now support Local Time as a time scale. The offset from UTC to Local Time is specified by a new TimeFrame attribute called ??.
(2)
A new class called ?? 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 ?? ?? attribute (the geodetic latitude of the observer).
(4)
A bug has been fixed which caused the DUT1 attribute to be ignored by the ?? class when finding conversions between AZEL and other celestial coordinate systems.

G.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 ?? to be locked for exclusive use by a thread.
(3)
The ?? class now support Local Time as a time scale. The offset from UTC to Local Time is specified by a new TimeFrame attribute called ??.
(4)
The ?? class has a new attribute called ?? 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.

G.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 ?? class has been modified so that any class of ?? can be used to define the extrusion axes. Previously, only a ?? or ?? could be used for this purpose.
(2)
Improvements have been made to the way that Prisms are simplified when ?? is called. The changes mean that more types of Prism will now simplify into a simpler class of Region.
(3)
The ?? class has a new method, AST_POINTS, that copies the axis values from the PointList into a supplied array.
(4)
The PointList class has a new (read-only) attribute, ??, that gives the number of points stored in the PointList.
(5)
The handling of warnings within different classes of ?? has been rationalised. The XmlStrict attribute and AST_XMLWARNINGS function have been removed. The same functionality is now available via the existing ?? attribute (which has had its remit widened), a new attribute called ??, and the new ?? function. This new function can be used on any class of Channel. Teh ?? 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 AST_WARNINGS function.
(6)
A new function called AST_INTERCEPT has been added to the ?? class. This function finds the point of intersection beteeen two geodesic curves.
(7)
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 ?? was supplied as an argument to a constructor.
(8)
The ?? 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.
(9)
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.
(10)
A new function called ?? has been added to the FitsChan class. This function tests a FitsChan to see if it contains a defined value for specified FITS keyword.
(11)
The AST__UNDEF<X> parameters used to flag undefined FITS keyword values have been removed. Use the new AST_TESTFITS function instead.

G.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 ?? has been added to the ?? 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 ?? has been added to the ?? 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 ?? conversions “TTTOTDB” and “TDBTOTT”, and the ?? conversions “TPF2HL” and “HLF2TP”, now have an additional argument - the observer’s geodetic altitude.
(4)
The ?? 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 ??, called ??, has been added that allows conversion of suitable AST Objects to and from IVOA STC-S format.
(6)
A new method called ?? has been added to the ?? class. It searches a (possibly compound) Mapping (or Frame) for any instances of the AST ?? 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 ?? 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 AST_OUTLINE 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 AST_MAPGETELEM<X> has been added to the ?? class. They allow a single element of a vector valued entry to be returned.
(10)
A new attribute called ?? has been added to the KeyMap ??. It controls whether the AST_MAPGET... family of functions report an error if an entry with the requested key does not exist in the KeyMap.

G.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 ?? is aligned with another Frame by the ?? and ?? 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 ?? values are consistent. For instance, a basic 2-dimensional Frame with Domain “SKY” will now align succesfully with a ??, conversion between the two Frames being achieved using a ??.
(2)
Added method ?? to the Frame class. This method allows corresponding axes within two Frames to be identified.
(3)
The ?? method can now be used to append one or more axes to all Frames in a ??.

G.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 ?? class now supports entries that have undefined values. A new method called ?? will store an entry with undefined value in a keymap. Methods that retrieve values from a KeyMap (AST_MAPGET0<X>, etc.) ignore entries with undefined values when searching for an entry with a given key.
(2)
The KeyMap class has a new method called ?? that copies entries from one KeyMap to another KeyMap.
(3)
The KeyMap class has a new boolean attribute called ??. If .TRUE., 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 .FALSE.
(4)
The ?? class has a new method called astHasAttribute/?? that returns a boolean value indicating if a specified Object has a named attribute.
(5)
The ?? 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.
(6)
A bug has been fixed in the AST_REBIN(SEQ) methods that could cause flux to be lost from the edges of the supplied array.
(7)
A bug has been fixed in the AST_REBIN(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.
(8)
The ?? class now ignores case when reading STC-S phrases (except that units strings are still case sensitive).
(9)
A new ?? method, ??, produces a quadratic least-squares fit to a 2D Mapping.
(10)
A new Mapping method, ??, produces a Mapping from absolute SkyFrame coordinates to offset SkyFrame coordinates.
(11)
The ?? class now has an ?? attribute that controls indentation in the text created by ??. The StcsIndent and XmlIndent attributes have been removed.
(12)
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” ).
(13)
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” ).
(14)
The KeyMap class has a new method called AST_MAPPUTELEM<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.
(15)
The ?? class now reports an error if the local oscillator frequency is less than the absoliute value of the intermediate frequency.

G.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 ?? class that could cause wavelength axes to be assigned the units “m/s” when reading WCS information from a FITS header.
(2)
The ?? routine 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 ?? being read by astRead.
(4)
The ?? class has a new attribute called “??”. It controls the order in which keys are returned by the ?? 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. INTEGER*2) values.

G.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 ?? 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 ??. See the documentation for TabOK for more information.
(2)
A new class called “??” has been added. A Table is a ?? in which each entry represents a cell in a two-dimensional table.
(3)
A new class called “??” 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 BYTE.
(5)
KeyMaps have a new attribute called ?? that can be set to zero to make the handling of keys case insensitive.
(6)
a memory leak associated with the use of the AST_MAPPUTELEM<X> functions has been fixed.
(7)
A new method called ?? has been added to rename existing entry in a KeyMap.

G.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 ?? “??” attribute is now an integer value rather than a boolean value. If TabOK is set to a non-zero positive integer before invoking the ?? 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 AST_WRITE or ?? methods.

G.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 routines ?? and ?? have been added to the ?? 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 ?? 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 routines AST_BBUF and AST_EBUF 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 ?? returns a set of positions covering the boundary, or volume, of a supplied ??.

G.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 ??.
(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 ?? method that allowed a template ?? of a more specialised class to match a target frame of a less specialised class. For example, this bug would allow a template ?? to match a target Frame. This no longer happens.

G.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 ?? 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 ?? 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 ?? class now provides a method called ?? 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.

G.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 ?? 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 ?? and ??.
(2)
- The ?? class now ignores trailing spaces in character-valued WCS keywords when reading a ?? 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 ?? class to create an estimate of the inverse polynomial correction.

G.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 ?? 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.
(2)
The ?? class has a new method ?? which writes out all cards currently in the FitsChan to the associated external data sink (specified either by the ?? attribute or the sink function supplied when the FitsChan was created), and then empties the FitsChan.
(3)
The FitsChan class has a new read-only attribute called “??”, which holds the number of keywords for which values are held in a FitsChan.
(4)
The FitsChan AST_GETFITS<X> methods can now be used to returned the value of the current card.
(5)
The FitsChan class has a new read-only attribute called “??”, which holds the data type of the keyword value for the current card.
(6)
The FitsChan class has a new method ?? which forces the FitsChan to reads cards from the associated external source and appends them to the end of the FitsChan.
(7)
- 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.

G.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 ?? 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 ?? 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 routine ??.

G.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 ?? 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 ?? attribute is set.
(3)
The versioning string for AST has changed from “ < major > . < minor > < release >” to “ < major > . < minor > . < release >”.

G.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.

G.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.

G.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.

G.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 ?? have been permuted.
(2)
A bug has been fixed in the ?? class that could cause the two values of the SkyRef and/or SkyRefP attributes to be reversed.
(3)
Bugs have been fixed in the ?? class that should allow the border around a compound ?? 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 ?? 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.

G.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.

G.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 ?? 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.

G.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 ?? from a FITS-DSS header, the keywords CNPIX1 and CNPIX2 now default to zero if absent. Previously an error was reported.

G.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 AST_REBINSEQ<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 ?? routine that could result in the incorrect inversion of Mappings within the ?? when the AST__ALLFRAMES flag is supplied for the IFRAME argument.
(4)
The ?? function has been re-written to make it faster and more reliable.

G.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 ?? is used to write an “offset” ?? (see attribute ??) 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 ?? to FITS-WCS headers if the current ?? describes generalised spherical coordinates (i.e. a SkyFrame with ??=Unknown).

G.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 ?? has been added to the ?? class. It checks if a gtiven key name has a defined value in a given KeyMap.

G.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 AST_REBINSEQ<X> family of routines has been changed in order to allow a greater number of pixels to be pasted into the output array. The NUSED parameter is now an INTEGER*8 variable, instead of an INTEGER. APPLICATION CODE SHOULD BE CHANGED ACCORDINGLY TO AVOID SEGMENTATION FAULTS AND OTHER ERRATIC BEHAVIOUR.
(2)
Added a new facility to the ?? class to allow each ?? 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 ?? to use is controlled by the new “??” attribute of the FrameSet class.
(3)
Mappings (but not Frames) that have a value set for their ?? attribute are now left unchanged by the c astSimplify function. f ?? routine.

G.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.

G.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 ?? class has new sorting options “KeyAgeUp” and “KeyAgeDown” that retain the position of an existing entry if its value is changed. See the ?? attribute.
(3)
A bug has been fixed in the ?? 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.

G.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 ?? class has new attributes ?? and ??, 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.

G.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, ??, can be set to zero in order to re-instate this check.
(2)
The ?? class has a new mathod, AST_CONVEX, that returns a Polygon representing the shortest polygon (i.e. convex hull) enclosing a specified set of pixel values within a supplied array.

G.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 ?? 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.

G.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 ?? and ?? attributes of a ?? may now be set using the ?? name or the index of the required ??.
(2)
The order of WCS axes within new FITS-WCS headers created by astWrite can now be controlled using a new attribute called ??.
(3)
Supported added for FITS XPH (polar HEALPIX) projection.
(4)
The AST_REBIN and AST_REBINSEQ family of functions now include support for arrays with _BYTE (byte) and and _UBYTE (unsigned byte) data types.

G.63 Changes Introduced in V8.0.2

The changes that occurred in the AST library between versions V8.0.1 and V8.0.2 only affect the C interface. The Fortran interface remains the same as V8.0.1.

G.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 AST_REBIN, AST_REBINSEQ, AST_RESAMPLE and ??. 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)
Trailing spaces supplied within attribute setting strings are now ignored.

G.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 ?? method has been changed slightly. Previously, AST_ADDFRAME modified the ?? by storing references to the supplied ?? and ?? 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 AST_REGIONOUTLINE has been added to the ?? class. It draws the outline of a supplied AST ??.

(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 ?? 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 ?? class has a new attribute called ??, 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.

G.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 ?? class has a new attribute called ??, which specifies the smallest significant distance within the SkyFrame. It is used to decide if the ?? 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 ?? 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 “??” and routine “??”.

G.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.

G.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 ?? called ?? 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: ??, ??, ??, ??, ?? and ??.

G.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 ?? has been added to the ?? 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 Fortran include file AST_PAR that caused constants related to π to be defined as single rather than double precision.
(3)
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.

G.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 ??.
(3)
A NormMap that encapsulates a basic ?? will now be simplified to a ??.
(4)
The ?? method of the ?? 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 ?? method of the ?? 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 ?? method of the ?? 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 ?? method is used to map a ?? into a new Frame that has fewer axes than the original Region, and if the inverse transformation of the supplied ?? 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.

G.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 ?? called ?? has been added. This is a Mapping that implements Chebyshev polynomial transformations.
(2)
A bug has been fixed in the ?? class that caused incorrect values to be returned for the ?? and ?? attributes if the PolyMap has been inverted.
(3)
The ?? class has a new method called ?? 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 routine that delivers error messages to the user (AST_PUTERR) is re-implemented, the new version can now be registered at run-time using the new ?? routine. Previously, the new version needed to be linked into the application at build time.
(5)
The ?? 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 ?? 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 ?? class has been changed so that some conversions now require a “??” 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.

G.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 ?? 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 ?? 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 ?? attribute of the FitsChan is set to a non-zero value (which is the default), and the ?? being written out contains an appropriate ?? 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.

G.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 ?? and ?? 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 ?? 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.

G.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 ?? 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 “??” has been added. A Moc describes an arbitrary region of the sky in the form of a set of HEALPix cells.
(3)
The ?? attribute defined by the Region class is now always non-zero for Regions defined within a ??, 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.

G.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 ?? 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 ?? class.
(2)
The ?? class will now read FITS-WCS headers that have alternate axis descriptions but no primary axis descriptions.

G.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.

G.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 AST_RESAMPLE and AST_MASK 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.

G.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 ?? class has a new attribute called ??, which is used in conjunction with the ?? attribute to force the use of the “-TAB” algorithm when writing a ?? out using the FITS-WCS encoding.

G.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 ?? class that caused the time returned by astCurrentTime to be wrong by 37 seconds.
(3)
The ?? class has a new convenience method (astPointInRegion) to test a if a single point is inside a Region.

G.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 ?? 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.

G.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 ?? class has a new method called astMapCopyEntry that can be used to copy a single entry from one KeyMap to another.
(2)
The ?? method now prefers ShiftMaps over equivalent WinMaps.
(3)
The AST_SIMPLIFY method will now merge WinMaps with neighbouring diagonal MatrixMaps.

G.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 ?? called ?? 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.

G.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 ?? class producing FITS-WCS headers describing alternate axes for some of the Frames in the supplied ??. Consequently, the headers produced by astWrite may now include alternate axis descriptions that were not present previously. These can be supressed using the new ?? 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 ?? class now supports 64 bit integer (INTEGER8) entries, represented by the new data type code “K”.
(4)
Two simplification bugs introduced at V9.2.0 have been fixed.
(5)
The ?? class now supports AST “native” encoding.

G.84 Changes Introduced in V9.2.5

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

(1)
A bug has been fixed in the ?? 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.
(2)
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.

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